微机原理和接口技术实验教学案

上传人:仙*** 文档编号:90317051 上传时间:2022-05-14 格式:DOC 页数:28 大小:372.50KB
收藏 版权申诉 举报 下载
微机原理和接口技术实验教学案_第1页
第1页 / 共28页
微机原理和接口技术实验教学案_第2页
第2页 / 共28页
微机原理和接口技术实验教学案_第3页
第3页 / 共28页
资源描述:

《微机原理和接口技术实验教学案》由会员分享,可在线阅读,更多相关《微机原理和接口技术实验教学案(28页珍藏版)》请在装配图网上搜索。

1、.微机原理与接口技术实验讲义物理与电子工程学院罗长更显示程序实验3数据传送实验5运算类程序实验6分支程序设计实验17循环程序设计实验20综合程序设计实验22显示程序实验实验目的 掌握在PC机上以十六进制形式显示数据的方法。 掌握部分DOS功能调用使用方法。 熟悉Tdpit集成环境和调试器的使用。实验内容及说明 一般来说,有很多程序需要显示输出提示运行的状况和结果,有的还需要将数据区中的内容显示在屏幕上。本实验要求将指定数据区的数据以十六进制数形式显示在屏幕上,并通过DOS功能调用完成一些提示信息的显示。实验中可使用DOS功能调用INT 21H。 显示单个字符输出 入口:AH=02H 调用参数:

2、DL=输出字符 显示字符串 入口:AH=09H 调用参数:DS:DX=串地址,$为结束字符 键盘输入并回显 入口:AH=01H 返回参数:AL=输出字符 返回DOS系统 入口:AH=4CH 调用参数:AL=返回码实验步骤 运行Tdpit软件,选择文件菜单,点击新建,进入一个源文件编辑界面。根据实验内容的描述编写实验程序,本实验显示部分参考实验流程如图1所示。 使用编译菜单中的编译和链接对实验程序进行汇编、连接。 使用编译菜单中的运行,运行程序,观察运行结果。 使用编译菜单中的调试,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容。 更改数据区中的数据,检查程序的正确性。 参

3、考程序清单DATASEGMENT MESDBShow a as hex:,0AH,0DH,$ SDDBa DATAENDS CODESEGMENT ASSUMECS:CODE,DS:DATA START:MOV AX,DATA MOVDS,AX MOVDX,OFFSET MES;显示提示信息 MOVAH,09HINT 21H MOVDI,OFFSET SD MOVAL,DS:DI ANDAL,0F0H;取高4位 SHRAL,4 图1 CMPAL,0AH;是否是A以上的数 JBC2ADDAL,07HC2:ADDAL,30HMOVDL,AL;显示字符 MOVAH,02H INT21H MOVAL,

4、DS:DI ANDAL,0FH;取低4位 CMPAL,0AH JBC3 ADD AL,07H C3:ADDAL,30H MOVDL,AL;显示字符 MOVAH,02H INT21H MOVAX,4C00H;返回DOS INT21H CODEENDS ENDSTART数据传送实验 实验目的 熟悉Tdpit集成环境和调试器的使用。 掌握与数据有关的不同寻址方式。 实验内容本实验要求将数据段中的一个字符串传送到附加段中,并输出附加段中的目标字符串到屏幕上。实验步骤 运行Tdpit软件,选择文件菜单,点击新建进行实验程序的编写。 使用编译菜单中的编译和连接对实验程序进行汇编、连接。 使用编译菜单中的运

5、行,运行程序,观察运行结果。 使用编译菜单中的调试,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容。 更改数据区中的数据,考察程序的正确性。参考程序:DDATASEGMENT;定义源数据段 MSRDB HELLO,WORLD!$ LENEQU $- MSR DDATAENDS EXDASEGMENT;定义附加数据段 MSDDB LEN DUP EXDAENDS MYSTACK SEGMENT STACK;定义堆栈段 DW 20 DUP MYSTACK ENDS CODESEGMENT;定义代码段 ASSUME CS:CODE,DS:DDATA,ES:EXDA START:

6、MOV AX,DDATA MOV DS,AX;装载数据段寄存器 MOV AX,EXDA MOV ES,AX;装载附加数据段寄存器 MOV SI,OFFSET MSR;设置SI MOV DI,OFFSET MSD;设置DI MOV CX,LEN NEXT:MOV AL,SI;开始传输数据 MOV ES:DI,AL INC SI INC DIDEC CX JNZ NEXT PUSH ESPOP DS;将附加段寄存器指向的段值赋给数据段寄存器 MOV DX,OFFSET MSDMOV AH,9 INT 21H MOV AX,4C00H;利用DOS功能调用返回DOS状态 INT 21H CODEEND

7、S END START 将程序主体部分的寄存器间接寻址方式改为相对寻址方式,则如下所示: MOV BX,0 MOV CX,LEN NEXT:MOV AL,MSRBX MOV ES:MSDBX,AL INC BX LOOP NEXT运算类程序实验实验目的 掌握运算类指令编程及调试方法。 掌握运算类指令对各状态标志位的影响及测试方法。 实验内容及说明 80x86指令系统提供了实现加、减、乘、除运算的基本指令,可对表1所示的数据类型进行算术运算。表11二进制双精度加法运算 本实验要求计算X+Y=Z,将结果Z输出到屏幕,其中X=001565A0H,Y=0021B79EH。 实验利用累加器AX,先求低十

8、六位和,并存入低址存储单元,后求高16位和,再存入高址存储单元。由于低位和可能向高位有进位,因而高位字相加语句需用ADC指令,则低位相加有进位时,CF=1,高位字相加时,同时加上CF中的1。在80386以上微机中可以直接使用32位寄存器和32位加法指令完成本实验的功能。 2十进制数的BCD码减法运算 本实验要求计算X-Y=Z,其中,X、Y、Z为BCD码,其中X=0400H,Y=0102H。 3乘法运算 本实验要求实现十进制数的乘法,被乘数和乘数均以BCD码形式存放于内存中,被乘数为54320H,乘数为3H,运算结束后,将乘积在屏幕上显示。 4用减奇数开平方运算 80x86指令系统中有乘除法指令

9、但没有开平方指令,因此,开平方运算是通过程序来实现的。用减奇数法可求得近似平方根,获得平方根的整数部分。我们知道,N个自然数中的奇数之和等于N2,即: 1+3+5=9=321+3+5+7=16=421+3+5+7+9+11+13+15=64=82 若要做S的开方运算,那麽就可以从S中逐次减去自然数中的奇数1,3,5,7,一直进行到相减数为0或不够减下一个自然数的奇数为止,然后统计减去自然数的奇数个数,它就是S的近似平方根。 本实验要求利用减奇法计算0040H的开平方值,并将运算结果显示在屏幕上。实验步骤 运行Tdpit软件,选择文件菜单进行实验程序的编写。 使用编译菜单中的编译和连接对实验程序

10、进行汇编、连接。 使用编译菜单中的运行,运行程序,观察运行结果。 使用编译菜单中的调试,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容。 更改数据区中的数据,考察程序的正确性。 参考程序两个字节数据相加STACK1 SEGMENT STACK DW 256 DUPSTACK1 ENDSDATA SEGMENTMES1DBThe result is:$X DB 03HY DB 05HDATAENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV AH,00H MOV SI,OFFSET X

11、 MOV AL,SI ADD AL,SI+01H AND AL,0FH MOV BL,AL MOVDX,OFFSET MES1 MOVAH,09H INT21H MOVAX,BX CALLSHOW MOVAX,4C00H INT21H SHOWPROCNEAR MOVAL,BL ANDAL,0F0H;取高4位 SHRAL,4 CMPAL,0AH;是否是A以上的数 JBC2 ADDAL,07HC2: ADDAL,30H MOVDL,AL;show character MOVAH,02H INT21H MOVAL,BL ANDAL,0FH;取低4位 CMPAL,0AH JBC3 ADD AL,07

12、HC3: ADDAL,30H MOVDL,AL;show character MOVAH,02H INT21H RET ENDPCODE ENDS END START;A4-1.asm;二进制双精度加法运算STACK1 SEGMENT STACK DW 256 DUPSTACK1 ENDSDATA SEGMENTMES1DBThe result is:$XL DW 65A0HXH DW 0015HYL DW 0B79EHYH DW 0021HDATAENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOVDX,

13、OFFSET MES1 MOVAH,09H INT21H MOV AX,XL ADD AX,YL MOVBX,AX MOV AX,XH ADC AX,YH PUSHBX CALLSHWORD POPBX MOVAX,BX CALLSHWORD MOVAX,4C00H INT21HSHWORDPROCNEAR MOVBL,AH CALLSHOW MOVBL,AL CALLSHOW RET ENDPSHOWPROCNEAR PUSHAX PUSHDX MOVAL,BL ANDAL,0F0H;取高4位 SHRAL,4 CMPAL,0AH;是否是A以上的数 JBC2 ADDAL,07HC2: ADDA

14、L,30H MOVDL,AL;show character MOVAH,02H INT21H MOVAL,BL ANDAL,0FH;取低4位 CMPAL,0AH JBC3 ADD AL,07HC3: ADDAL,30H MOVDL,AL;show character MOVAH,02H INT21H POPDX POPAX RET ENDPCODE ENDS END START;A4-2.asm;十进制数的BCD码减法运算STACK1 SEGMENT STACK DW 256 DUPSTACK1 ENDSDATA SEGMENTMES1DBThe result is:$X DW 0400HY

15、DW 0102HDATAENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV AH,00H SAHF MOV SI,OFFSET X MOV AL,SI SBB AL,SI+02H DAS PUSHF AND AL,0FH POPF MOV BL,AL INC SI MOV AL,SI SBB AL,SI+02H DAS PUSHF AND AL,0FH POPF MOV BH,AL MOVDX,OFFSET MES1 MOVAH,09H INT21H MOVAX,BX CALLSHWORD MOVAX,4

16、C00H INT21HSHWORDPROCNEAR MOVBL,AH CALLSHOW MOVBL,AL CALLSHOW RET ENDPSHOWPROCNEAR PUSHAX PUSHDX MOVAL,BL ANDAL,0F0H;取高4位 SHRAL,4 CMPAL,0AH;是否是A以上的数 JBC2 ADDAL,07HC2: ADDAL,30H MOVDL,AL;show character MOVAH,02H INT21H MOVAL,BL ANDAL,0FH;取低4位 CMPAL,0AH JBC3 ADD AL,07HC3: ADDAL,30H MOVDL,AL;show chara

17、cter MOVAH,02H INT21H POPDX POPAX RET ENDPCODE ENDS END START;A4-3.asm;乘法运算STACK1 SEGMENT STACK DW 256 DUPSTACK1 ENDSDATA SEGMENTMES1 DB The result is:$ERRMES DB Error exist!$DATA1 DB 00H,02H,03H,04H,05HDATA2 DB 03HRESULTDB 06H DUPDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,

18、AX MOV SI,OFFSET DATA2 MOV BL,SI AND BL,0FH CMP BL,09H JNC ERROR MOV SI,OFFSET DATA1 MOV DI,OFFSET RESULT MOV CX,0005HA1: MOV AL,SI+04H AND AL,0FH CMP AL,09H JNC ERROR DEC SI MUL BL AAM ADD AL,DI+05H AAA MOV DI+05H,AL DEC DI MOV DI+05H,AHLOOP A1 MOVDX,OFFSET MES1 MOVAH,09H INT21H MOV CX,06H MOV SI,O

19、FFSET RESULTA2: CALLSHOW MOVDL,20H MOVAH,02H INT21H INCSILOOPA2 MOVAX,4C00H INT21HERROR: MOVDX,OFFSET ERRMES MOVAH,09H INT21H MOVAX,4C00H INT21HSHOWPROCNEAR MOVAL,DS:SI ANDAL,0F0H;取高4位 SHRAL,4 CMPAL,0AH;是否是A以上的数 JBC2 ADDAL,07HC2: ADDAL,30H MOVDL,AL;show character MOVAH,02H INT21H MOVAL,DS:SI ANDAL,0

20、FH;取低4位 CMPAL,0AH JBC3 ADD AL,07HC3: ADDAL,30H MOVDL,AL;show character MOVAH,02H INT21H RET ENDPCODE ENDS ENDSTART;A4-4.asm;用减奇法开平方运算STACK1 SEGMENT STACK DW 256 DUPSTACK1 ENDSDDATASEGMENTMES1DBThe square root of $MES2DB is:$NUMBDW0040HDDATAENDSCODE SEGMENT ASSUME CS: CODE,DS:DDATASTART: MOVAX,DDATA

21、MOVDS,AX MOVDX,OFFSET MES1 MOVAH,09H INT21H MOVSI,OFFSET NUMB MOV AX,SI CALLSHWORD MOVDX,OFFSET MES2 MOVAH,09H INT21H MOVAX,SI MOV CL,00H MOV DX,0001HA1: SUB AX,DX JB A2 INC CL ADD DX,02H JMP A1A2: MOVBL,CL CALLSHOW MOVAX,4C00H INT21HSHWORDPROCNEAR MOVBL,AH CALLSHOW MOVBL,AL CALLSHOW RET ENDPSHOWPRO

22、CNEAR PUSHAX PUSHDX MOVAL,BL ANDAL,0F0H;取高4位 SHRAL,4 CMPAL,0AH;是否是A以上的数 JBC2 ADDAL,07HC2: ADDAL,30H MOVDL,AL;show character MOVAH,02H INT21H MOVAL,BL ANDAL,0FH;取低4位 CMPAL,0AH JBC3 ADD AL,07HC3: ADDAL,30H MOVDL,AL;show character MOVAH,02H INT21H POPDX POPAX RET ENDPCODE ENDS END START 分支程序设计实验实验目的掌握分

23、支程序的设计方法。 实验内容及说明 程序有顺序、循环、分支和子程序四种结构形式,分支结构的示意图如图1所示。本实验要求通过求无符号字节序列中的最大值和最小值来反映分支程序的结构形式。 图1 图2实验可以使用BH,BL作为暂存现行的最大值和最小值,且在程序的初始,将BH和BL初始化为首字节的内容,然后进入循环操作。在循环操作中,依次从字节序列中逐个取出一个字节的内容与BH,BL进行比较,若取出的字节内容比BH的内容大或比BL中的内容小,则修改之。当循环结束操作时,将BH,BL分别送屏幕显示。参考实验流程如图2所示。实验步骤 运行Tdpit软件,选择文件菜单编写实验程序;提供8字节的数据:0D9H

24、,07H,8BH,0C5H,0EBH,04H,9DH,0F9H。 使用编译菜单中的编译和连接对实验程序进行汇编、连接。 使用编译菜单中的运行,运行程序,观察运行结果。 更改数据区中的数据,考察程序的正确性。 参考程序;A5.asm;分支程序设计实验STACK1 SEGMENT STACK DW 256 DUPSTACK1 ENDSDDATASEGMENTMES1DB The least number is:$MES2 DB 0AH,0DH,The largest number is:$NUMBDB 0D9H,07H,8BH,0C5H,0EBH,04H,9DH,0F9HDDATAENDSCODE

25、 SEGMENTASSUME CS:CODE,DS:DDATASTART: MOVAX,DDATA MOVDS,AX MOV SI,OFFSET NUMB MOV CX,0008H JCXZ A4 MOV BH,SI MOV BL,BHA1: LODSB;AL=DS:SI,SI=SI+1 CMP AL,BH JBE A2 MOV BH,AL JMP A3A2: CMP AL,BL JAE A3 MOV BL,ALA3: LOOP A1A4: MOVDX,OFFSET MES1;show mes1 MOVAH,09H INT 21H MOVAL,BL;show the least number

26、ANDAL,0F0H;get the highest 4 bits SHRAL,4 CMPAL,0AH JBC2 ADDAL,07HC2: ADDAL,30H MOVDL,AL;show character MOVAH,02H INT21H MOVAL,BL ANDAL,0FH;get the lowest 4 bits CMPAL,0AH JBC3 ADD AL,07HC3: ADDAL,30H MOVDL,AL;show character MOVAH,02H INT21H MOVDX,OFFSET MES2;show mes2 MOVAH,09H INT 21H MOVAL,BH;sho

27、w the largest number ANDAL,0F0H;get the highest 4 bits SHRAL,4 CMPAL,0AH JBC22 ADDAL,07HC22: ADDAL,30H MOVDL,AL;show character MOVAH,02H INT21H MOVAL,BH ANDAL,0FH;get the lowest 4 bits CMPAL,0AH JBC33 ADD AL,07HC33: ADDAL,30H MOVDL,AL;show character MOVAH,02H INT21H MOVAX,4C00H;go back to dos INT21H

28、CODE ENDS END START 循环程序设计实验实验目的掌握循环程序的设计方法。实验内容及说明本实验要求通过求某数据区内负数的个数来表现循环程序的结构形式。要求实验程序在数据区中存放一组数据,为统计负数的个数,逐个判断区内的数据,然后将所有数据中凡是符号位为1的数据的个数累加起来,即得到区内所包含负数的个数。循环程序的结构示意如图1所示。 实验步骤 运行Tdpit软件,选择文件菜单编写实验程序。提供10字节的数据:12H,88H,82H,89H,33H,90H,01H,10H,0BDH,01H。 使用编译菜单中的编译和连接对实验程序进行汇编、连接。 使用编译菜单中的运行,运行程序,观察

29、运行结果。 更改数据区中的数据,考察程序的正确性。;A6.asm;循环程序设计实验STACK1 SEGMENT STACK DW 256 DUPSTACK1 ENDSDDATASEGMENTNUMBDB12H,88H,82H,89H,33H,90H,01H,10H,0BDH,01HMES1DBThe number of negative is:$DDATAENDSCODE SEGMENTASSUME CS:CODE,DS:DDATASTART: MOVAX,DDATA MOVDS,AX MOVDI,OFFSET NUMB XORBH,BH MOVCX,10DA1: MOV AL,DI TEST

30、 AL,80H JE A2 INC BLA2: INC DILOOP A1 MOVDX,OFFSET MES1 ;show mes MOVAH,09H INT 21H MOVAL,BL ;show the number of negative ANDAL,0F0H ;get the highest 4 bits SHRAL,4 CMPAL,0AH JBC2 ADDAL,07HC2: ADDAL,30H MOVDL,AL ;show character MOVAH,02H INT21H MOVAL,BL ANDAL,0FH ;get the lowest 4 bits CMPAL,0AH JBC

31、3 ADD AL,07HC3: ADDAL,30H MOVDL,AL ;show character MOVAH,02H INT21H MOVAX,4C00H ;go back to dos INT21HCODE ENDS END START综合程序设计实验 实验目的 掌握分支、循环、子程序调用的基本程序结构。 掌握32位寄存器、指令使用的基本方法。 学习综合程序的设计、编制及调试。 实验内容及步骤1排序实验 本实验要求编写一个程序,对存贮区中的一组双字进行排序,并将排序结果显示在屏幕上。在编写过程中,应使用32位寄存器,并且采用基址+变址+偏移的寻址方式。在程序中使用80x86指令系统中有关

32、32位的指令、寻址方式及32位寄存器时需要在文件头使用.386”或.386p。 具体实验步骤如下: 运行Tddebug软件,选择Edit菜单编写实验程序。 使用Compile菜单中的Compile和Link对实验程序进行汇编、连接。 使用Rmrun菜单中的Run,运行程序,观察运行结果。 更改数据区中的数据,考察程序的正确性。 2用32位寄存器、指令、扩展寻址方式实现数码转换及显示 本实验要求将一组ASCII字符转换成十六进制数码,并在屏幕上显示出来。要求使用32位寄存器、32位的指令和寻址方式。如将字符串This is tangdu speaking!进行转换,应转换成:54H、68H、69

33、H、73H、20H、69H、73H、20H、74H、61H、6EH、67H、64H、75H、20H、73H、70H、65H、61H、6BH 、69H、6EH、67H、21H。 具体实验步骤如下。 运行Tdpit软件,选择文件菜单编写实验程序。 使用编译菜单中的编译和连接对实验程序进行汇编、连接。 使用运行菜单中的运行,运行程序,观察运行结果。 更改数据区中的数据,考察程序的正确性。 参考程序:一维字节数据排序STACK1 SEGMENT STACK USE16DB64DUPSTACK1 ENDSDATASEGMENTUSE16MES1DBThe array is:$MES2DBAfter so

34、rt:$DATA1DB15H,0D8H,02H,04H,09H,44H,03H,32HCOUNT=8DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART: MOV AX,DATA ;显示未排序的数组 MOVDS,AX MOVDX,OFFSET MES1 MOVAH,09H INT 21H CALLKENTER CALLSAHEX CALLKENTER CALLBUBBLE;显示排序后的数组 MOVDX,OFFSET MES2 MOVAH,09H INT21H CALLKENTER CALLSAHEX CALLKENTER MOVAX,4C00H INT21

35、HBUBBLEPROC XORSI,SI XORCX,CX MOVSI,OFFSET DATA1 MOVCX,COUNTL1: XORBX,BX XORAX,AXL2: CMPBX,CX JAELB MOVAL,SI+BX+1 MOV DL,SI+BX CMPSI+BX,AL JAELNS XCHGSI+BX,AL MOVSI+BX+1,ALLNS: INCBX JMPL2LB: LOOPL1 RETBUBBLEENDPSAHEXPROCNEAR XORSI,SI XORCX,CX MOVSI,OFFSET DATA1 MOVCX,COUNTC1: MOVBX,CX DECBX MOVAL,D

36、S:SI+BX ANDAL,0F0H;取高4位 SHRAL,4 CMPAL,0AH;是否是A以上的数 JBC2 ADDAL,07HC2: ADDAL,30H MOVDL,AL MOVAH,02H INT21H;显示字符 MOVAL,DS:SI+BX ANDAL,0FH;取低4位 CMPAL,0AH JBC3 ADD AL,07HC3: ADDAL,30H MOVDL,AL;显示字符 MOVAH,02H INT21H TESTBX,00H JNZC4 MOVDL,20H MOVAH,02H INT21HC4: LOOPC1 RETSAHEXENDPKENTERPROCNEAR MOVDL,0AH

37、 MOVAH,02H INT21H MOVDL,0DH MOVAH,02H INT21H RETKENTERENDPCODE ENDS ENDSTART;A8-1.asm;综合程序设计实验排序实验.386pSTACK1 SEGMENT STACK USE16DB64DUPSTACK1 ENDSDATASEGMENTUSE16MES1DBThe array is:$MES2DBAfter sort:$DATA1DD110015H,111101D8H,22110002H,111a0004H,1d110009H,111f044H,11d10203H,32HCOUNT=8DATAENDSCODESEG

38、MENTUSE16ASSUMECS:CODE,DS:DATASTART: MOV AX,DATA ;显示未排序的数组 MOVDS,AX MOVDX,OFFSET MES1 MOVAH,09H INT 21H CALLKENTER CALLSAHEX CALLKENTER CALLBUBBLE;显示排序后的数组 MOVDX,OFFSET MES2 MOVAH,09H INT21H CALLKENTER CALLSAHEX CALLKENTER MOVAX,4C00H INT21HBUBBLEPROC XORESI,ESI XORECX,ECX MOVSI,OFFSET DATA1 MOVCX,C

39、OUNTL1: XOREBX,EBXL2: CMPEBX,ECX JAELB MOVEAX,ESI+EBX*4+4 CMPESI+EBX*4,EAX JGELNS XCHGESI+EBX*4,EAX MOVESI+EBX*4+4,EAXLNS: INCEBX JMPL2LB: LOOPL1 RETBUBBLEENDPSAHEXPROCNEAR XORESI,ESI XORECX,ECX MOVSI,OFFSET DATA1 MOVCX,COUNT*4C1: MOVEBX,ECX DECEBX MOVAL,DS:ESI+EBX ANDAL,0F0H;取高4位 SHRAL,4 CMPAL,0AH;

40、是否是A以上的数 JBC2 ADDAL,07HC2: ADDAL,30H MOVDL,AL MOVAH,02H INT21H;显示字符 MOVAL,DS:ESI+EBX ANDAL,0FH;取低4位 CMPAL,0AH JBC3 ADD AL,07HC3: ADDAL,30H MOVDL,AL;显示字符 MOVAH,02H INT21H TESTEBX,03H JNZC4 MOVDL,20H MOVAH,02H INT21HC4: LOOPC1 RETSAHEXENDPKENTERPROCNEAR MOVDL,0AH MOVAH,02H INT21H MOVDL,0DH MOVAH,02H I

41、NT21H RETKENTERENDPCODE ENDS ENDSTART;A8-2.asm;综合程序设计实验码制转换实验.386STACK1 SEGMENT STACK USE16 DB64DUPSTACK1 ENDSDATASEGMENTUSE16MES0 DB This is tangdu speaking!$MES1DB Show this sentence as hex:$BUF DB 65 DUPDATAENDSCODESEGMENTUSE16ASSUMECS:CODE,DS:DATASTART: MOV AX,DATA MOVDS,AX MOVDX,OFFSET MES0 ;Sh

42、ow This is tangdu speaking! MOVAH,09H INT 21H CALLKENTER MOVDX,OFFSET MES1 ;Show Sentence as hex MOVAH,09H INT 21H CALLKENTER CALLSAHEX MOVDX,OFFSET BUF MOVAH,09H INT 21H CALLKENTER MOVAH,4CH INT21HSAHEXPROCNEARCBYTE =24 PUSHAD ;将所有32位寄存器压栈 MOVDI,OFFSET MES0 MOVZX EDI,DI ;零扩展指令 MOVAX,DATA MOVGS,AX ;

43、使用GS段 MOVSI,OFFSET BUF MOVZX ESI,SI MOVECX,CBYTEC1: MOVAL,DS:EDI ANDAL,0F0H ;取高4位 SHRAL,4 CMPAL,0AH ;是否是A以上的数 JBC2 ADDAL,07HC2: ADDAL,30H MOVGS:ESI,AL MOVAL,DS:EDI ANDAL,0FH ;取低4位 CMPAL,0AH JBC3 ADD AL,07HC3: ADDAL,30H MOVGS:ESI+1,AL MOVBYTE PTR GS:ESI+2,20H;在每个字符间加入空格 ADDESI,3 INCEDILOOPC1 MOVBYTE PTR GS:ESI,24H;在串尾加上$符 POPAD ;弹出所有寄存器值 RETSAHEXENDPKENTERPROCNEAR MOVDL,0AH MOVAH,02H INT21H MOVDL,0DH MOVAH,02H INT21H RETKENTERENDPCODE ENDS ENDSTART.

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!