微机接口答案.pdf

上传人:ylj18****41534 文档编号:73491706 上传时间:2023-02-19 格式:PDF 页数:63 大小:3.41MB
返回 下载 相关 举报
微机接口答案.pdf_第1页
第1页 / 共63页
微机接口答案.pdf_第2页
第2页 / 共63页
点击查看更多>>
资源描述

《微机接口答案.pdf》由会员分享,可在线阅读,更多相关《微机接口答案.pdf(63页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、 第三章 1.分别说明下列指令的源操作数和目的操作数各采用什么寻址方式。(1)MOV AX,2408H(2)MOV CL,0FFH(3)MOV BX,SI(4)MOV 5BX,BL(5)MOV BP+100H,AX(6)MOV BX+DI,$(7)MOV DX,ES:BX+SI(8)MOV VALBP+DI,DX(9)IN AL,05H(10)MOV DS,AX 答:(1)立即数,寄存器(2)立即数,寄存器(3)寄存器间接,寄存器(4)寄存器,寄存器相对(5)寄存器,寄存器相对(6)立即数,基址变址(7)基址变址,寄存器(8)寄存器,相对基址变址(9)直接端口寻址,寄存器(10)寄存器,寄存器

2、 2.已知:DS=1000H,BX=0200H,SI=02H,内存 10200H10205H 单元的内容分别为 10H,2AH,3CH,46H,59H,6BH。下列每条指令执行完后 AX 寄存器的内容各是什么(1)MOV AX,0200H(2)MOV AX,200H(3)MOV AX,BX(4)MOV AX,3BX(5)MOV AX,BX+SI(6)MOV AX,2BX+SI 答:(1)0200H(2)2A10H(3)0200H(4)5946H(5)463CH(6)6B59H 3.设 DS=1000H,ES=2000H,SS=3500H,SI=00A0H,DI=0024H,BX=0100H,B

3、P=0200H,数据段中变量名为 VAL 的偏移地址值为 0030H,试说明下列源操作数字段的寻址方式是什 么物理地址值是多少(1)MOV AX,100H(2)MOV AX,VAL(3)MOV AX,BX(4)MOV AX,ES:BX(5)MOV AX,SI(6)MOV AX,BX+10H(7)MOV AX,BP(8)MOV AX,VALBPSI(9)MOV AX,VALBXDI(10)MOV AX,BPDI 答:(1)直接,10100H(2)直接,10030H(3)寄存器间接,10100H(4)寄存器间接,20100H(5)寄存器间接,100A0H(6)寄存器相对,10110H(7)寄存器间

4、接,35200H(8)相对基址变址,352D0H(9)相对基址变址,10154H(10)基址变址,35224H 4.写出下列指令的机器码(1)MOV AL,CL(2)MOV DX,CX(3)MOV BX+100H,3150H 答:(1)B(2)B(3)00000000 00000001 01010000 00110001B 5.已知程序的数据段为:DATA SEGMENT A DB$,10H B DB COMPUTER C DW 1234H,0FFH D DB 5 DUP()E DD 1200459AH DATA ENDS 求下列程序段执行后的结果是什么。MOV AL,A MOV DX,C X

5、CHG DL,A MOV BX,OFFSET B MOV CX,3BX LEA BX,D LDS SI,E LES DI,E 答:MOV AL,A AL=24H MOV DX,C DX=1234H XCHG DL,A DL=24H,A=34H MOV BX,OFFSET B BX=2 MOV CX,3BX CX=5550H LEA BX,D BX=000EH LDS SI,E DS=1200H,SI=459AH LES DI,E ES=1200H,DI=459AH 6.指出下列指令中哪些是错误的,错在什么地方。(1)MOV DL,AX(2)MOV 8650H,AX(3)MOV DS,0200H

6、(4)MOV BX,1200H(5)MOV IP,0FFH(6)MOV BX+SI+3,IP(7)MOV AX,BXBP(8)MOV AL,ES:BP(9)MOV DL,SIDI(10)MOV AX,OFFSET 0A20H(11)MOV AL,OFFSET TABLE(12)XCHG AL,50H(13)IN BL,05H(14)OUT AL,0FFEH 答:(1)长度不匹配(2)立即数不能做目的操作数(3)段寄存器不能用立即数赋值(4)两个内存单元不能直接传送数据(5)IP 不能用指令直接修改(6)指令中不能出现 IP(7)BX/BP 应与 SI/DI 搭配(8)正确(9)SI/DI 应与

7、 BX/BP 搭配(10)OFFSET 后应跟内存单元(11)偏移地址为 16 位,AL 长度不够(12)立即数不能用于 XCHG(13)IN 必须用 AL/AX(14)操作数顺序反向;地址应为 8 位 7.已知当前数据段中有一个十进制数字 09 的 7 段代码表,其数值依次为 40H,79H,24H,30H,19H,12H,02H,78H,00H,18H。要求用 XLAT 指令将十进制数 57 转换成相应的 7 段代码值,存到 BX 寄存器中,试写出相应的程序段。答:DATA SEGMENT TABLE DB 40H,79H,24H,30H,19H,12H,02H,78H,00H,18H D

8、ATA ENDS MOV AL,5 MOV BX,OFFSET TABLE XLAT TABLE MOV CL,AL MOV AL,7 XLAT TABLE MOV BL,AL MOV BH,CL 8.已知当前 SS=1050H,SP=0100H,AX=4860H,BX=1287H,试用示意图表示执行下列指 令过程中,堆栈中的内容和堆栈指针 SP 是怎样变化的。PUSH AX PUSH BX POP BX POP AX(1)指 9.下列指令完成什么功能(1)ADD AL,DH(2)ADC BX,CX(3)SUB AX,2710H(4)DEC BX(5)NEG CX(6)INC BL(7)MUL

9、 BX(8)DIV CL 答:(1)AL+DHAL(2)BX+CX+CFBX(3)AX-2710HAX(_4)BX-1BX(5)0-CXCX(6)BL+1BL(7)AX*BXDX,AX(8)AX/CL 商AL,余数AH 10.已知 AX=2508H,BX=0F36H,CX=0004H,DX=1864H,求下列每条指令执行后的结果 是什么标志位 CF 等于什么(1)AND AH,CL(2)OR BL,30H(3)NOT AX(4)XOR CX,0FFF0H(5)TEST DH,0FH(6)CMP CX,00H(7)SHR DX,CL(8)SAR AL,1(9)SHL BH,CL(10)SAL A

10、X,1(11)RCL BX,1(12)ROR DX,CL 答:(1)AX=0408H,CF=0(2)BX=0F36H,CF=0(3)AX=0DAF7H,CF 不变(4)CX=0FFF4H,CF=0(5)DX=01864H,CF=0(6)CX=0004H,CF=0(7)DX=0186H,CF=0(8)AX=2504H,CF=0(9)BX=0F036H,CF=0(10)AX=4A10H,CF=0(11)BX=1E6C/1E6DH,CF=0(12)DX=4186H,CF=0 11.假设数据段定义如下:DATA SEGMENT STRING DB The Personal Computer&TV DA

11、TA ENDS 试用字符串操作等指令编程完成以下功能:(1)把该字符串传送到附加段中偏移量为 GET_CHAR 开始的内存单元中。(2)比较该字符串是否与The Computer相同,若相同则将AL 寄存器的内容置 1,否则置 0。并要求将比较次数送到 BL 寄存器中。(3)检查该字符串是否有&,若有则用空格字符将其替换。(4)把字符串大写字母传送到附加段中以 CAPS 开始的单元中,其余字符传到以 CHART 开始的单元中。然后将数据段中存储上述字符串的单元清 0。答:(1)CLD LEA SI,STRING LEA DI,GET_CHAR MOV CX,26 REP MOVSB(2)补充在

12、附加段定义 STRING1 DB The computer MOV AL,1 CLD LEA SI,STRING LEA DI,STRING1 MOV CX,12 REPZ CMPSB JZ SKIP MOV AL,0 SKIP:MOV BX,12 SUB BX,CX(3)MOV AX,DATA MOV ES,AX CLD MOV AL,&LEA DI,STRING MOV CX,26 NEXT:REPNE SCASB JZ FIND JMP EXIT FIND:MOV BYTE PTR DI-1,JCXZ EXIT JMP NEXT EXIT:(4)LEA SI,STRING LEA DI,

13、CAPS LEA BX,CHART MOV CX,26 NEXT:MOV AL,SI CMP AL,A JB OTHER CMP AL,Z JA OTHER MOV ES:DI,AL INC DI JMP SKIP OTHER:MOV ES:BX,AL INC BX SKIP:MOV BYTE PTRSI,0 INC SI LOOP NEXT 12.编程将 AX 寄存器中的内容以相反的顺序传送到 DX 寄存器中,并要求 AX 中的内容不 被破坏,然后统计 DX 寄存器中1的个数是多少。答:MOV BL,0 PUSH AX MOV DX,0 MOV CX,16 NEXT:SHL AX,1 JNC

14、 SKIP INC BL SKIP:RCR DX,1 LOOP NEXT STOP:POP AX 13.设 CS=1200H,IP=0100H,SS=5000H,SP=0400H,DS=2000H,SI=3000H,BX=0300H,(20300H)=4800H,(20302H)=00FFH,TABLE=0500H,PROG_N 标号的地址为 1200:0278H,PROG_F 标号的地址为 3400H:0ABCH。说明下列每条指令执行完后,程序将分别 转移到何处执行(1)JMP PROG_N(2)JMP BX(3)JMP BX(4)JMP FAR PROG_F(5)JMP DWORD PTR

15、 BX 如将上述指令中的操作码 JMP 改成 CALL,则每条指令执行完后,程序转向何处执行并 请画图说明堆栈中的内容和堆栈指针如何变化。答:(1)1200H:0278H(2)1200H:0300H(3)1200H:4800H(4)3400H:0ABCH(5)00FFH:4800H 将操作码 JMP 改成 CALL 后:(1)1200H:0278H 指令长度为 3,则 IP=0100H+3=0103H,入栈 (5)00FFH:4800H 指令长度为 2,则 IP=0100H+2=0102H,入栈 14.在下列程序段括号中分别填入以下指令(1)LOOP NEXT(2)LOOPE NEXT(3)L

16、OOPNE NEXT 试说明在这三种情况下,程序段执行完后,AX,BX,CX,DX 的内容分别是什么。START:MOV AX,01H MOV BX,02H MOV DX,03H MOV CX,04H NEXT:INC AX ADD BX,AX SHR DX,1()答:(1)AX=05H BX=10H CX=0 DX=0(2)AX=02H BX=04H CX=03H DX=01H(3)AX=03H BX=07H CX=02H DX=0 15.某班有 7 个同学英语成绩低于 80 分,分数存在 ARRAY 数组中,试编程完成以下工作:(1)给每人加 5 分,结果存到 NEW 数组中(2)把总分存

17、到 SUM 单元中 答:DATA SEGMENT ARRAY DB,NEW DB 7 DUP()SUM DW 0 DATA ENDS MOV AX,DATA MOV DS,AX(1)LEA SI,ARRAY LEA DI,NEW MOV CX,7 NEXT:MOV AL,SI ADD AL,5 MOV DI,AL INC SI INC DI LOOP NEXT(2)LEA SI,ARRAY CLC SP 5000H:0000H 5000H:03FCH 5000H:03FEH 5000H:0400H MOV CX,7 NEXT1:MOV AL,SI MOV AH,0 ADC SUM,AX INC

18、 SI LOOP NEXT1 16.中断向量表的作用是什么它放在内存的什么区域内中断向量表中的什么地址用于 类型 3 的中断 答:中断向量表用来存放中断服务程序的入口地址。8086 的 256 类中断的入口地址要占用 1K 字节,位于内存 00000H003FFH 的区域内。中断向量表中 0000CH0000FH 用于类型 3 的中断。17.设类型 2 的中断服务程序的起始地址为 0485:0016H,它在中断向量表中如何存放 答:物理地址 内容 00008H 16H 00009H 00H 0000AH 85H 0000BH 04H 18.若中断向量表中地址为 0040H 中存放 240BH,

19、0042H 单元里存放的是 D169H,试问:(1)这些单元对应的中断类型是什么(2)该中断服务程序的起始地址是什么 答:(1)10H(2)D169H:240BH 19.简要说明 8086 响应类型 04 中断的条件是什么 答:类型 0:除法错中断 执行除法指令时,若除数为 0 或所得商超过寄存器能容纳的范围,则自动产生类型 0 中断。类型 1:单步中断 若 CPU 的单步标志 TF=1,则每执行完一条指令后,自动产生类型 1 中断。类型 2:不可屏蔽中断 NMI 当 8086 的 NMI 引脚上接收到由低变高的电平变化时,将自动产生类型 2 中断。类型 3:断点中断 若在程序中某位置设置断点

20、,当程序执行到该断点时,则产生类型 3 中断。类型 4:溢出中断 若溢出标志 OF=1,则可由溢出中断指令 INTO 产生类型 4 中断。第四章 1.下列变量各占多少字节 A1 DW 23H,5876H A2 DB 3 DUP(),0AH,0DH,$A3 DD 5 DUP(1234H,567890H)A4 DB 4 DUP(3 DUP(1,2,ABC)答:A1 占 4 个字节 A2 占 6 个字节 A3 占 40 个字节 A4 占 60 个字节 2.下列指令完成什么功能 MOV AX,00FFH AND 1122H+3344H MOV AL,15 GE 1111B MOV AX,00FFH L

21、E 255+6/5 AND AL,50 MOD 4 OR AX,0F00FH AND 1234 OR 00FFH 答:(1)将 0066H 传送给 AX(2)将 0FFH 传送给 AL(3)将 0FFFFH 传送给 AX(4)AND AL,02H(5)OR AX,00FFH 3.有符号定义语句如下:BUF DB 3,4,5,123 ABUF DB 0 L EQU ABUF-BUF 求 L 的值为多少 答:L=6 4.假设程序中的数据定义如下:PAR DW PNAME DB 16 DUP()COUNT DD PLENTH EQU$-PAR 求 PLENTH 的值为多少表示什么意义 答:PAR 的

22、偏移地址为 0,PLENTH 当前偏移地址$=2+16+4=22,$-PAR=22,故 PLENTH 的值为 22。若在 PLENTH 所在行有变量定义,则$表示该变量的偏移地址,即$表示 PLENTH 所在 行的当前偏移地址。故 PLENTH 表示从当前行到 PAR 之间定义的变量所占的字节个数。5.对于下面的数据定义,各条 MOV 指令执行后,有关寄存器的内容是什么 DA1 DB DA2 DW 10 DUP()DA3 DB ABCD MOV AX,TYPE DA1 MOV BX,SIZE DA2 MOV CX,LENGTH DA3 答:AX=1,BX=20,CX=1 6.下段程序完成后,A

23、H 等于什么 IN AL,5FH TEST AL,80H JZ L1 MOV AH,0 JMP STOP L1:MOV AH,0FFH STOP:HLT 答:讨论从端口 5FH 输入的数据最高位的情况。若最高位为 1,则 AH=0;若最高位为 0,则 AH=0FFH。7.编程序完成下列功能:(1)利用中断调用产生 5 秒延时。(2)利用中断调用,在屏幕上显示 19 之间随机数。答:(1)可以利用中断类型 1CH 来处理,因为在系统时钟的中断处理程序中,时钟中断一 次要调用一次 INT 1CH,即每隔 55ms,产生一次 1CH 中断,要产生 5 秒延时,只要中断 5s/55ms=91 次即可。

24、又因 1CH 中断处理程序中只有一条 IRET 指令,故可将用户的程序代 替原有的 INT 1CH 程序。DATA SEGMENT COUNT DW 91;计数器 MESS DB 5 s delayed!,0AH,0DH,$DATA ENDS CODE SEGMENT MAIN PROC FAR ASSUME CS:CODE,DS:DATA,ES:DATA START:PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX MOV AL,1CH;得到原中断向量 MOV AH,35H INT 21H PUSH ES;存储原中断向量 PUSH BX PUSH

25、DS MOV DX,OFFSET DELAY;DELAY 的偏移地址和段地址 MOV AX,SEG DELAY MOV DS,AX MOV AL,1CH;设置中断向量 MOV AH,25H INT 21H POP DS IN AL,21H;设置中断屏蔽位 AND AL,0FEH OUT 21H,AL STI MOV DI,2000H;主程序延迟,在执行此段程序期间 A1:MOV SI,3000H;产生中断 A2:DEC SI JNZ A2 DEC DI JNZ A1 POP DX;取原中断向量 POP DS MOV AL,1CH MOV AH,25H INT 21H RET MAIN ENDP

26、 DELAY PROC NEAR PUSH DS PUSH AX PUSH CX PUSH DX MOV AX,DATA MOV DS,AX STI DEC COUNT;5 秒计数 JNZ EXIT MOV DX,OFFSET MESS;显示信息 MOV AH,09H INT 21H MOV COUNT,91;5 秒的值 EXIT:CLI POP DX POP CX POP AX POP DS IRET DELAY ENDP CODE ENDS END START(2)可以利用 INT 1AH,读取当前时间的 1/100 秒为随机数。CODE SEGMENT ASSUME CS:CODE ST

27、ART:MOV AH,0 INT 1AH;读取当前时间 CH:CL=时:分 MOV AL,DL;DH:DL=秒:1/100 秒 MOV AH,0 MOV BL,9 DIV BL INC AH MOV DL,AH ADD DL,30H MOV AH,2 INT 21H MOV AH,4CH INT 21H CODE ENDS END START 8.编两个通过过程完成将 AX 中存放的二进制数转换成压缩型 BCD 码以及将 BCD 码转换 成二进制数。答:(1)将 AX 中的二进制数先后除以 1000,100 和 10,每次除法所得的商,即是 BCD 数 的千位、百位和十位数,余数是个位数。子程

28、序名:B2TOBCD 输入参数:AX=十六位二进制数 输出参数:CF=0,则 AX=4 位压缩型 BCD 码。CF=1,则要转换的数大于 9999,AX 不 变。使用寄存器:CX:存放除数,DX:存放中间结果。B2TOBCD PROC FAR CMP AX,9999;AX9999,则 CF 置 1 JBE TRAN STC JMP EXIT TRAN:PUSH CX PUSH DX SUB DX,DX;DX 清 0 MOV CX,1000;计算千位数 DIV CX XCHG AX,DX;商在 DX 中,余数在 AX 中 MOV CL,4 SHL DX,CL;DX 左移 4 位 MOV CL,1

29、00;计算百位数 DIV CL ADD DL,AL;百位数加到 DL 中,DX 左移 4 位 MOV CL,4 SHL DX,CL XCHG AL,AH;余数保留在 AL 中 SUB AH,AH MOV CL,10;计算十位数 DIV CL ADD DL,AL;十位数加到 DL 中,DX 左移 4 位 MOV CL,4 SHL DX,CL ADD DL,AH;加个位数 MOV AX,DX;结果送到 AX 中 POP DX POP CX EXIT:RET B2TOBCD ENDP(2)将 AX 中 4 位 BCD 码顺序乘以 1000,100,10 和 1,然后求和即得。子程序名:BCDTOB2

30、 输入参数:AX=4 位压缩 BCD 码 输出参数:AX=十六位二进制数 使用寄存器:BX:暂存数据,CX:存放乘数,DX:存放中间结果 BCDTOB2 PROC FAR PUSH BX PUSH CX PUSH DX MOV BX,AX MOV CL,4 ROL AX,CL AND AX,000FH MOV CX,1000;乘以 1000 MUL CX MOV DX,AX MOV AX,BX MOV CL,8 ROL AX,CL AND AX,000FH MOV CL,100;乘以 100 MUL CL ADD DX,AX MOV AX,BX MOV CL,4 SHR AX,CL AND A

31、X,000FH MOV CL,10;乘以 10 MUL CL ADD DX,AX AND BX,000FH ADD DX,BX MOV AX,DX POP DX POP CX POP BX RET BCDTOB2 ENDP 9.编写两个通用过程,一个完成 ASCII 码转换成二进制数功能,另一个完成 ASCII 字符显 示输出功能。答:(1)将 AX 中两位 ASCII 码先转化成数字,然后 AH*10+AL。子程序名:ASCIITOB2 输入参数:AX=2 位 ASCII 码 输出参数:AX=转换后二进制数 使用寄存器:BX,CX,DX ASCIITOB2 PROC FAR PUSH BX

32、PUSH CX PUSH DX MOV BX,AX SUB AH,30H MOV AL,AH MOV CL,10;乘以 10 MUL CL MOV DX,AX MOV AX,BX SUB AL,30H MOV AH,0 ADD AX,DX POP DX POP CX POP BX RET ASCIITOB2 ENDP(2)使用 2 号 DOS 功能调用显示字符。子程序名:DISPLAY 输入参数:AX=2 位 ASCII 码 输出参数:无 使用寄存器:BX,DX DISPLAY PROC FAR PUSH BX PUSH DX MOV BX,AX MOV DL,AH MOV AH,2 INT

33、21H MOV AX,BX MOV DL,AL MOV AH,2 INT 21H POP DX POP BX RET DISPLAY ENDP 10.编制两个通用过程,完成十六进制数转换成ASCII 码并将 ASCII 码字符显示。答:(1)子程序名:HEXTOASC 输入参数:AX:4 位十六进制数 输出参数:DX,AX:4 位 ASCII 码,DX 高 2 位,AX 低 2 位 使用寄存器:BX,CX,DX HEXTOASC PROC FAR PUSH BX PUSH CX PUSH DX MOV BX,AX MOV CL,4;转换 AH 高 4 位 SHR AX,CL AND AX,0F

34、00H ADD AH,30H CMP AH,3AH JB A1 ADD AH,7 A1:MOV DH,AH MOV AX,BX;转换 AH 低 4 位 AND AX,0F00H ADD AH,30H CMP AH,3AH JB A2 ADD AH,7 A2:MOV DL,AH MOV BH,BL;转换 AL 高 4 位 MOV CL,4 SHR BL,CL ADD BL,30H CMP BL,3AH JB A3 ADD BL,7 A3:MOV AH,BL AND BH,0FH;转换 AL 低 4 位 ADD BH,30H CMP BH,3AH JB A4 ADD BH,7 A4:MOV AL,

35、BH POP DX POP CX POP BX RET HEXTOASC ENDP(2)子程序名:DISPLAYASC 输入参数:DX,AX:4 位 ASCII 码 输出参数:无 使用寄存器:BX,CX DISPLAYASC PROC FAR PUSH BX PUSH CX MOV BX,DX MOV CX,AX MOV DL,BH MOV AH,02H INT 21H MOV DL,BL INT 21H MOV DL,CH INT 21H MOV DL,CL INT 21H MOV DL,H INT 21H POP CX POP BX RET DISPLAYASC ENDP 11.某程序可从

36、键盘接收命令(05),分别转向 6 个子程序,子程序入口地址分别为 P0 P5,编制程序,用跳转表实现分支结构。答:DATA SEGMENT TABLE DW 6 DUP()DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX LEA SI,TABLE MOV WORD PTRSI,OFFSET P0 MOV WORD PTRSI+2,OFFSET P1 MOV WORD PTRSI+4,OFFSET P2 MOV WORD PTRSI+6,OFFSET P3 MOV WORD PTRSI+8,OFF

37、SET P4 MOV WORD PTRSI+10,OFFSET P5 MOV AH,1 INT 21H SUB AL,30H SHL AL,1 MOV AH,0 MOV SI,AX JMP TABLESI P0:P1:P2:P3:P4:P5:MOV AH,4CH INT 21H CODE ENDS END START 12.在首地址为 TABLE 的数组中按递增次序存放着 100 个 16 位补码数,编写一个程序,把 出现次数最多的数及其出现次数分别存放于 AX 和 BL 中。答:DATA SEGMENT TABLE DW 100 DUP();数组中的数据是按增序排列的 NUM DW COUN

38、T DW 0 DATA ENDS CODE SEGMENT MAIN PROC FAR ASSUME CS:CODE,DS:DATA START:PUSH DS;设置返回 DOS SUB AX,AX PUSH AX MOV AX,DATA MOV DS,AX;给 DS 赋值 BEGIN:MOV CX,100;循环计数器 MOV SI,0 NEXT:MOV DX,0 MOV AX,TABLESI COMP:CMP TABLE SI,AX;计算一个数的出现次数 JNE ADDR INC DX ADD SI,2 LOOP COMP ADDR:CMP DX,COUNT;此数出现的次数最多吗 JLE D

39、ONE MOV COUNT,DX;目前此数出现的次数最多,记下次数 MOV NUM,AX;记下此数 DONE:LOOP NEXT;准备取下一个数 MOV CX,COUNT;出现最多的次数存入(CX)MOV AX,NUM;出现最多的数存入(AX)RET MAIN ENDP CODE ENDS;以上定义代码段 END START 13.将键盘上输入的十六进制数转换成十进制数,在屏幕上显示。答:DATA SEGMENT STRING DB INPUT 4 HEX NUM:,0AH,0DH,$NUM DB 10 DUP()DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS

40、:DATA START:MOV AX,DATA MOV DS,AX LEA DX,STRING;显示提示信息 MOV AH,9 INT 21H MOV BP,4 MOV DX,0 CONT:MOV CL,4;输入 4 位十六进制数DX SHL DX,CL D1:MOV AH,1 INT 21H CMP AL,0 JB D1 CMP AL,F JA D1 CMP AL,A JB A1 SUB AL,7 A1:SUB AL,30H MOV AH,0 ADD DX,AX DEC BP JNZ CONT MOV SI,0;将 DX 转换成十进制数,再转换成 ASCII 码NUM MOV AX,DX M

41、OV DX,0 MOV BX,10 D2:DIV BX ADD DL,30H MOV NUMSI,DL INC SI CMP AX,0 JZ EXIT MOV DX,0 JMP D2 EXIT:MOV DL,0AH;显示十进制数 MOV AH,2 INT 21H MOV DL,0DH INT 21H D3:DEC SI MOV DL,NUMSI MOV AH,2 INT 21H JNZ D3 MOV AH,4CH INT 21H CODE ENDS END START 14.将 AX 中的无符号二进制数转换成 ASCII 字符串表示的十进制数。答:将 13 题输入过程和输出过程去掉即得。DAT

42、A SEGMENT NUM DB 10 DUP();转换后 ASCII 码按倒序存放于 NUM DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AX,;无符号二进制数 MOV SI,0;将 AX 转换成十进制数,再转换成 ASCII 码NUM MOV DX,0 MOV BX,10 D2:DIV BX ADD DL,30H MOV NUMSI,DL INC SI CMP AX,0 JZ EXIT MOV DX,0 JMP D2 EXIT:MOV AH,4CH INT 21H CODE EN

43、DS END START 15.从键盘输入 20 个有符号数,将它们排序并在屏幕上显示。答:DATA SEGMENT NUM DW 20 DUP();存放 20 个有符号数 ASC DB 10 DUP();输出时暂时保存每一个数的 ASCII 码 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV CX,20 MOV BX,10 MOV SI,0 MOV BP,0 BEGIN:MOV DX,0;输入 20 个有符号数(十进制),并 A1:MOV AH,1;转化为二进制数存放于 NUM 数组

44、INT 21H CMP AL,;判断是否空格 JZ A2 CMP AL,0DH;是否回车符 JZ A2 CMP AL,-;是否-JZ A3 JMP A4 A3:MOV BP,1 JMP A1 A4:PUSH AX MOV AX,DX MUL BX MOV DX,AX POP AX SUB AL,30H MOV AH,0 ADD DX,AX JMP A1 A2:CMP BP,1 JNZ A5 NEG DX;若为负数,则取负 A5:MOV NUMSI,DX MOV BP,0 ADD SI,2 LOOP BEGIN MOV DL,0DH;回车换行 MOV AH,2 INT 21H MOV DL,0A

45、H INT 21H MOV BX,0;对 20 个有符号数按由小到大顺序排序 MOV CX,19;采用冒泡法,排序后依然存放于 NUM 数组 L1:MOV DX,CX L2:MOV AX,NUMBX CMP AX,NUMBX+2 JLE CONT1 XCHG AX,NUMBX+2 MOV NUMBX,AX CONT1:ADD BX,2 LOOP L2 MOV CX,DX MOV BX,0 LOOP L1 MOV CX,20;将 20 个有符号数(二进制)转换为十进制数 MOV SI,0;再转换为 ASCII 码并输出屏幕 D1:MOV AX,NUMSI ADD SI,2 TEST AX,100

46、0H JZ D4 PUSH AX MOV DL,-MOV AH,2 INT 21H POP AX NEG AX D4:MOV DI,0 MOV DX,0 MOV BX,10 D2:DIV BX ADD DL,30H MOV ASCDI,DL INC DI CMP AX,0 JZ D3 MOV DX,0 JMP D2 D3:MOV DL,ASCDI-1 MOV AH,2 INT 21H DEC DI JNZ D3 MOV DL,MOV AH,2 INT 21H LOOP D1 MOV AH,4CH;返回 DOS INT 21H CODE ENDS END START 16.编写多字节有符号数的加

47、法程序,从键盘接收两个加数,在屏幕上显示结果。答:DATA SEGMENT STRING1 DB INPUT FIRST NUM(HEX):,0DH,0AH,$STRING2 DB INPUT SECOND NUM(HEX):,0DH,0AH,$STRING3 DB THE RESULT IS(HEX):,0DH,0AH,$NUM1 DW 0,0;存放加数 1 NUM2 DW 0,0;存放加数 2 RESULT DB 0,0,0,0;存放结果 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX LE

48、A DX,STRING1;输入第一个加数(4 位十六进制数)MOV AH,9 INT 21H MOV SI,2 MOV CX,8 CONT:PUSH CX CMP CX,4 JNZ B1 SUB SI,2 B1:MOV CL,4 SHL NUM1SI,CL C1:MOV AH,1 INT 21H CMP AL,0 JB C1 CMP AL,F JA C1 CMP AL,A JB A1 SUB AL,7 A1:SUB AL,30H MOV AH,0 ADD NUM1SI,AX POP CX LOOP CONT MOV DL,0DH;回车换行 MOV AH,2 INT 21H MOV DL,0AH

49、 INT 21H LEA DX,STRING2;输入第二个加数(4 位十六进制数)MOV AH,9 INT 21H MOV SI,2 MOV CX,8 CONT1:PUSH CX CMP CX,4 JNZ B2 SUB SI,2 B2:MOV CL,4 SHL NUM2SI,CL C2:MOV AH,1 INT 21H CMP AL,0 JB C2 CMP AL,F JA C2 CMP AL,A JB A2 SUB AL,7 A2:SUB AL,30H MOV AH,0 ADD NUM2SI,AX POP CX LOOP CONT1 MOV DL,0DH;回车换行 MOV AH,2 INT 2

50、1H MOV DL,0AH INT 21H LEA SI,NUM1;两数相加 LEA BX,NUM2 LEA DI,RESULT MOV CX,4 CLC AD:MOV AL,SI ADC AL,BX MOV DI,AL INC SI INC BX INC DI LOOP AD LEA DX,STRING3;显示结果(4 位十六进制数)MOV AH,9 INT 21H MOV CX,4 MOV DI,3 TT:PUSH CX MOV DL,RESULTDI MOV CL,4 SHR DL,CL ADD DL,30H CMP DL,3AH JB D1 ADD DL,7 D1:MOV AH,2 I

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作报告

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁