微机原理与接口技术习题 答案.doc

上传人:h**** 文档编号:883460 上传时间:2018-11-04 格式:DOC 页数:16 大小:74.01KB
下载 相关 举报
微机原理与接口技术习题 答案.doc_第1页
第1页 / 共16页
微机原理与接口技术习题 答案.doc_第2页
第2页 / 共16页
微机原理与接口技术习题 答案.doc_第3页
第3页 / 共16页
微机原理与接口技术习题 答案.doc_第4页
第4页 / 共16页
微机原理与接口技术习题 答案.doc_第5页
第5页 / 共16页
点击查看更多>>
资源描述

1、第 3 章 8086CPU 指令系统1. 写出完成下列要求的变量定义语句:(1)在变量 var1 中保存 6 个字变量:4512H,4512,1,100/3,10H,65530;(2)在变量 var2 中保存字符串:BYTE, word, WORD ;(3)在缓冲区 buf1 中留出 100 个字节的存储空间;(4)在缓冲区 buf2 中,保存 5 个字节的 55H,再保存 10 个字节的 240,并将这一过程重复 7 次;(5)在变量 var3 中保存缓冲区 buf1 的长度;(6)在变量 pointer 中保存变量 var1 和缓冲区 buf1 的偏移地址。解:var1 DW 4512H,

2、4512,-1,100/3,10H,65530var2 DB BYTE,word,WORDbuf1 DB 100 DUP(? )buf2 DB 7 DUP(5 DUP (55H ),10 DUP( 240) )var3 DB LENGTH buf1pointer DW var1,buf1 (或者 pointerDW OFFSET var1,OFFSET buf1)2. 设变量 var1 的逻辑地址为 0100:0000,画出下列语句定义的变量的存储分配图:var1 DB 12,12,20/6,4 DUP(0,55H)var2 DB Assemblevar3 DW AB, cd, Evar4 D

3、W var2var5 DD var2解:3. 指令正误判断,对正确指令写出源和目的操作数的寻址方式,对错误指令指出原因(设 VAR1, VAR2 为字变量, L1 为标号):(1)MOV SI,100 (2)MOV BX,VAR1SI(3)MOV AX, BX (4)MOV AL, DX(5)MOV BP, AL (6)MOV VAR1, VAR2(7)MOV CS, AX (8)MOV DS, 0100H(9)MOV BXSI, 1 (10)MOV AX, VAR1+VAR2(11)ADD AX, LENGTH VAR1 (12)OR BL, TYPE VAR2(13)SUB DI, 78H

4、 (14)MOVS VAR1, VAR2(15)PUSH 100H (16)POP CS(17)XCHG AX, ES (18)MOV DS, CS(19)JMP L1+5 (20)DIV AX, 10(21)SHL BL, 2 (22)MOV AL, 15+23(23)MUL CX (24)XCHG CL, SI(25)ADC CS:0100, AH (26)SBB VAR15,154解:(1)MOV SI,100 正确。源:立即数寻址, 目的:寄存器寻址(2)MOV BX,VAR1SI 正确。源:寄存器相对寻址, 目的:寄存器寻址(3)MOV AX,BX 正确。源:寄存器间接寻址,目的:寄

5、存器寻址(4)MOV AL,DX 错误。寄存器间接寻址时,DX, AX, CX 不能作地址寄存器(5)MOV BP,AL 错误。操作数类型不一致(6)MOV VAR1,VAR2 错误。两存储单元之间不能用 MOV 指令传送数据(7)MOV CS,AX 错误。CS 不能为目的操作数(8)MOV DS,0100H 错误。目的操作数为段寄存器时,源操作数不能为立即数(9)MOV BXSI ,1 错误。指令类型不定。(10)MOV AX,VAR1+VAR2 错误。MOV 指令中不能完成加法运算(11)ADD AX,LENGTH VAR1 正确。源:立即数寻址。目的:寄存器寻址(12)OR BL,TYP

6、E VAR2 正确。源:立即数寻址。目的:寄存器寻址(13)SUB DI,78H 错误。指令类型不定(14)MOVS VAR1,VAR2 正确。目的、源均为隐含寻址。操作数仅指出操作数类型(15)PUSH 100H 错误。将常数压入堆栈,要通过寄存器来实现(16)POP CS 错误。目的操作数不能为 CS(17)XCHG AX,ES 错误。XCHG 指令的操作数不能是段寄存器(18)MOV DS,CS 错误。MOV 指令不能从段寄存器到段寄存器(19)JMP L1+5 正确。段内直接转移(20)DIV AX,10 错误。指令格式错误。(21)SHL BL,2 错误。移位指令的移位数为 1 或者

7、 CL(22)MOV AL,15+23 正确。源:立即数寻址,目的: 寄存器。编译时就处理为 38(23)MUL CX 正确。源:寄存器寻址,目的:寄存器寻址(24)XCHG CL,SI 正确。源:寄存器间接寻址,目的:寄存器寻址(25)ADC CS:0100,AH 正确。源:寄存器寻址,目的: 直接寻址(数据在代码段中)(26)SBB VAR1-5,154 正确。源:立即数寻址,目的:直接寻址。4. 说明下列指令对的区别:(1)MOV AX,VAR1 与 MOV AX,OFFSET VAR1(2)MOV AX,VAR2 与 LEA AX,VAR2(3)MOV AL,LENGTH VAR1 与

8、 MOV AL,SIZE VAR1(4)MOV AL,ES: DI CMP AL, SI 与 CMPSB(5)SHR AL,1 与 SAR AL,1(6)SHR AL,1 与 ROR AL,1(7)ROL BX,1 与 RCL BX,1解:(1)MOV AX,VAR1 把变量 VAR1 对应地址单元中的一个字送入 AXMOV AX,OFFSET VAR1 把 VAR1 的有效地址的偏移地址送入 AX(2)MOV AX,VAR2 把变量 VAR2 对应地址单元中的一个字送入 AXLEA AX,VAR2 把 VAR2 的有效地址的偏移地址送入 AX(3)MOV AL,LENGTH VAR1 把变量

9、 VAR1 的长度送入 ALMOV AL,SIZE VAR1 把变量 VAR1 的大小送入 AL(4)MOV AL,ES:DI CMP AL,SI 把以 ES 为段地址,DI 为偏移地址的一个字节送入 AL,并与以 SI 内容为偏移地址的一个字节作比较,改变标志寄存器内容。 (相当于作 ES:( DI)与(DS: (SI)内容比较)CMPSB 对字符串中的一字节比较。寻址方式隐含。源串的地址由DS:SI 指定,目的串的地址由 ES:DI 指定。 (相当于作DS: (SI )与 ES:(DI)内容比较)(5)SHR AL, 1 AL 逻辑右移 1 位,最高位移入 0, 最低位移入 CF。SAR

10、AL,1 AL 算术右移 1 位,以最高位内容移入,最低位移入 CF, 其余各位右移一位。(6)SHR AL, 1 AL 逻辑右移 1 位,最高位移入 0, 最低位移入 CF。ROR AL, 1 AL 的各位构成环形移位,右移一位,最低位内容同时移入到 CF 和最高位。(7)ROL BX,1 BX 各位构成环形移位,左移一位,最高位内容同时移入到 CF 和最低位。RCL BX,1 BX 和 CF 构成环形移位,左移一位,CF 内容移入到最低位,最高位移入 CF。5. 写出下列转移指令的寻址方式(设 L1 为标号,VAR1 为字型变量,DVAR1 为双字型变量):(1)JMP L1 (2)JMP

11、 NEAR L1(3)JNZ L1 (4)JMP BX(5)JG L1 (6)JMP VAR1SI(7)JMP FAR PTR L1 (8)JMP DVAR1解:(1)JMP L1 段内直接寻址 (2)JMP NEAR PTR L1 段内直接寻址(3)JNZ L1 段内直接寻址 (4)JMP BX 段内间接寻址(5)JG L1 段内直接寻址 (6)JMP VAR1SI 段内间接寻址(7)JMP FARPTR L1 段间直接寻址 (8)JMP DVAR1 段间间接寻址6. 设(DS)2000H, (BX)0100H, (SI)0002H, (20100)3412H, (20102)7856H,

12、(21200)4C2AH, (21202)65B7H,求下列指令执行后 AX 寄存器的内容:(1)MOV AX,1200H; (2)MOV AX,BX; (3)MOV AX, 1200H;(4)MOV AX, BX; (5)MOV AX,1100BX;(6)MOV AX, BXSI;(7)MOV AX,1100BXSI解:(1)1200H (2) 0100H (3)4C2AH ( 4)3412H (5)4C2AH (6)7856H (7)65B7H7. 执行下列指令后,DX 寄存器中的内容是多少?TABLE DW 25,36,1,16,10000,13PYL DW 7MOV BX,OFFSET

13、 TABLEADD BX,PYLMOV DX,BX解:DX = 10FFH 由-16(FFF0H)的高 8 位和 10000(2710H)的低 8 位构成8. 如果堆栈的起始地址为 2200:0000,栈底为 0100H, (SP)00A8H,求(1)栈顶地址;(2)SS 的内容;(3)再存入数据 5678H,3AF2H 后,SP 的内容。解:栈顶地址 00A8H, SS = 2200H, 再存入 2 个字后,SP = 00A4H9. 设已用伪指令 EQU 定义了 4 个标识符:N1 EQU 2100N2 EQU 10N3 EQU 20000N4 EQU 25000下列指令是否正确?并说明原因

14、。(1)ADD AL,N1N2; (2)MOV AX,N3N4;(3)SUB BX,N4N3; (4)SUB AH,N4N3N1;(5)ADD AL,N2; (6)MOV AH,N2*N2解:(1)错误。N1-N2=2090255 (2)正确 (3)正确(4)错误。N4-N3-N1=2900255 (5)正确 (6)正确10. 按下列要求写出指令:(1)将 AX 寄存器的低 4 位清零,其余位不变;(2)将 BX 寄存器的低 4 位置 1,其余位不变;(3)将 AL 寄存器的低 4 位保持不变,高 4 位取反;(4)测试 BX 中的位 1 和位 2,当这两位同时为 0 时将 AL 置 0FFH

15、,否则 AL 清零;(5)测试 BX 中的位 1 和位 2,当这两位有一位为 0 时将 AL 置 0FFH,否则 AL 清零;(6)将 AL 中保存的字母 ASCII 码变换成相应的大写字母的 ASCII 码;(7)将 AL 中保存的字母 ASCII 码变换成相应的小写字母的 ASCII 码;(8)将 AX 中的各位取反;(9)将 DX 中的低 7 位取反,高 9 位不变;(10)将 CX 中的低 8 位与高 8 位互换。解:(1)AND AX,0FFF0H (2)OR BX,000FH (3)XOR AL,0F0H(4) TEST BX,06H (5) MOV AX,BXJZ ZERO AN

16、D AX,06HMOV AL, 00H XOR AX,06HJMP OVER JZ OVERZERO: MOV AL,0FFH MOV AL,0FFH OVER: OVER:(6)AND AL,5FH或者:CMP AL,61HJL OVER (无需变换或不是字母)CMP AL,7AHJG OVER (不是字母)AND AL,5FH 或 SUB AL,20HOVER:(7)OR AL,20H 或者:CMP AL,41HJL OVER (不是字母)CMP AL,5AHJG OVER (无需变换或不是字母)OR AL,20H 或 ADD AL,20HOVER:(8)XOR AX,0FFFFH 或者

17、NOT AX(9)XOR DX,007FH (10)XCHG CH,CL11. 写出完成下述功能的程序段:(1)传送 40H 到 AL 寄存器;(2)将 AL 的内容乘以 2;(3)传送 16H 到 AH 寄存器;(4)AL 的内容加上 AH 的内容。计算最后结果(AL)?解:(1)MOV AL,40H (2)SHL AL,1 (3)MOV AH,16H (4)ADD AL,AHAL=96H12. 写出完成下述功能的程序段:(1)从缓冲区 BUF 的 0004 偏移地址处传送一个字到 AX 寄存器;(2)将 AX 寄存器的内容右移 2 位;(3)将 AX 内容与 BUF 的 0006 偏移地址

18、处的一个字相乘;(4)相乘结果存入 BUF 的 0020H 偏移地址处(低位在前) 。解: (1) LEA SI, BUFMOV AX, SI+4(2) SHR AX,1SHR AX,1(3) MUL WORD PTR 6SI(4) MOV 20HSI,AXMOV 22HSI,DX13. 设(BX)11001011B,变量 VAR 的内容为 00110010B,求下列指令单独执行后 BX 的内容:(1)XOR BX,VAR; (2)AND BX,VAR;(3)OR BX,VAR; (4)XOR BX,11110000B;(5)AND BX,00001111B; (6)TEST BX,1解:(1

19、)00F9H (2)0002H(3)00FBH(4)003BH(5)000BH(6)00CBH14. 设(DX)10111011B, (CL)3, (CF)1,求下列指令单独执行后 DX 的内容:(1)SHR DX,1; (2)SAR DX,CL; (3)SHL DX,CL;(4)SHL DX,1; (5)ROR DX,CL; (6)ROL DL,CL;(7)SAL DH,1; (8)RCL DX,CL; (9)RCR DL,1解:DX= 0000 0000 1011 1011B CF=1 CL=3(1)SHR DX,1 DX 逻辑右移 1 0000 0000 0101 1101B = 005

20、DH(2)SAR DX,CL DX 算术右移 3 0000 0000 0001 0111B = 0017H(3)SHL DX,CL DX 逻辑左移 3 0000 0101 1101 1000B = 05D8H(4)SHL DX,1 DX 逻辑左移 1 0000 0001 0111 0110B = 0176H(5)ROR DX,CL DX 循环右移 3 0110 0000 0001 0111B = 6017H(6)ROL DL,CL DL 循环左移 3 0000 0000 1101 1101B = 00DDH(7)SAL DH,1 DH 算术左移 1 0000 0000 1011 1011B =

21、 00BBH(8)RCL DX,CL DX 带进位循环左移 3 0000 0101 1101 1100B = 05DCH(9)RCR DL,1 DL 带进位循环右移 1 0000 0000 1101 1101B = 00DDH15. 选择题(各小题只有一个正确答案)(1)执行下列三条指令后:MOV SP,1000HPUSH AXCALL BXa. (SP)1000H; b. (SP)0FFEH;c. (SP)1004H; d. (SP)0FFCH;(2)要检查寄存器 AL 中的内容是否与 AH 相同,应使用的指令为:a. AND AL, AH b. OR AL, AHc. XOR AL, AH

22、 d. SBB AL, AH(3)指令 JMP NEAR PTR L1 与 CALL L1(L1 为标号)的区别在于:a. 寻址方式不同; b. 是否保存 IP 的内容;c. 目的地址不同; d. 对标志位的影响不同。解:(1)D PUSHU AX 则 AX 入栈,SP=0FFEH ;CALL BX 则 IP 入栈,SP=0FFCH(2)C 异或,若相同,则 AL=0,ZF1。(3)B16. 寄存器 DX:AX 组成 32 位数,DX 为高位,编写程序段实现:(1)DX:AX 右移 3 位,并将移出的低 3 位保存在 CL 中;(2)DX:AX 左移 3 位,并将移出的高 3 位保存在 CL

23、中;解:(1)移出的 3 位应该按时序移入 CL 中。XOR CL,CLMOV BL,3L1: SHR DX,1RCR AX,1RCL CL,1DEC BLJNZ L1(2)移出的 3 位应该按时序移入 CL 中。XOR CL,CLMOV BL,3L1: SHL AX,1RCR DX,1RCR CL,1DEC BLJNZ L117. 编写程序段实现将 BL 中的每一位重复 4 次,构成 32 位的双字 DX:AX ,例如当BL01011101B 时,则得到的(DX)0F0FH , (AX)0FF0FH。解:算术右移时,移入的值就是最高位本身,这样可以使位内容重复,利用这一点可以实现题目的要求。XOR DX,DXXOR AX,AXMOV CX,4L1: SHR BL,1 RCR AX,1SAR AX,1SAR AX,1SAR AX,1LOOP L1MOV CX,4L2: SHR BL,1RCR DX,1 SAR DX,1 SAR DX,1 SAR DX,1LOOP L218. 字变量 VAR1 中保存有小于 38250 的 16 位无符号数,编写程序段实现 VAR1150,

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

当前位置:首页 > 教育教学资料库 > 参考答案

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。