微机原理与接口技术-张颖超-叶彦斐-第3章-习题答案

上传人:小** 文档编号:57087906 上传时间:2018-10-18 格式:DOC 页数:7 大小:94.54KB
返回 下载 相关 举报
微机原理与接口技术-张颖超-叶彦斐-第3章-习题答案_第1页
第1页 / 共7页
微机原理与接口技术-张颖超-叶彦斐-第3章-习题答案_第2页
第2页 / 共7页
微机原理与接口技术-张颖超-叶彦斐-第3章-习题答案_第3页
第3页 / 共7页
微机原理与接口技术-张颖超-叶彦斐-第3章-习题答案_第4页
第4页 / 共7页
微机原理与接口技术-张颖超-叶彦斐-第3章-习题答案_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《微机原理与接口技术-张颖超-叶彦斐-第3章-习题答案》由会员分享,可在线阅读,更多相关《微机原理与接口技术-张颖超-叶彦斐-第3章-习题答案(7页珍藏版)》请在金锄头文库上搜索。

1、1习题1 指出下列指令中操作数的寻址方式 (1) MOV BX, 20H(2) MOV AX, 1245H (3) MOV DX, SI(4) MOV 100BX, AL (5) MOV BPSI, AX(6) MOV BX+100SI, AX (7) MOV 1800H, AL(8) MOV SI, AX 答:源操作数目的操作数1立即寻址寄存器寻址 2直接寻址寄存器寻址 3寄存器间接寻址寄存器寻址 4寄存器寻址寄存器相对寻址 5寄存器寻址基址加变址寻址 6寄存器寻址相对基址加变址寻址 7寄存器寻址直接寻址 8寄存器寻址寄存器间接寻址2. 判断下列操作数寻址方式的正确性,对正确的指出其寻址方式

2、,错误的说明其错误原因:(1) AX(2) SI+DI (3) BP(4) BH (5) DS(6) BL+44 (7) BX+BP+32(8) DX (9) CX+90(10) BX*4 (11) BX+90H(12) SI100H 答: (1) 错误,AX 不能用于访问内存单元 (2) 错误,两个变址寄存器 SI 和 DI 不能同时用于内存单元的有效地址 (3) 正确,寄存器寻址方式 (4) 正确,寄存器寻址方式 (5) 正确,寄存器寻址方式 (6) 错误,寄存器 BL 不能用于表示内存单元的有效地址 (7) 错误,BX 和 BP 都是基址寄存器,不能同时用于内存单元的有效地址 (8) 错

3、误,DX 不能用于表示内存单元的有效地址 (9) 错误,CX 不能用于表示内存单元的有效地址 (10)错误,16 位寄存器不能乘以比例因子 (11) 错误,没有这样的寻址方式 (12) 错误,书写方式不对,应该写成 100HSI3. 已知 DS=2000H,ES=1000H,SS=1010H,SI=1100H,BX=0500H,BP=0200H,请指出 下列源操作数字段是什么寻址方式?源操作数字段的物理地址是多少? (1) MOV AL, 2500H (2) MOV AX, BP (3) MOV AX, ES:BP+102(4) MOV AL, BX+SI+20 答: (1) 源操作数属于直接

4、寻址,物理地址=DS16+2500H=20000H+2500H=22500H; (2) 源操作数属于寄存器间接寻址,物理地址=SS16+(BP) =10100H+0200H=10300H (3) 源操作数属于寄存器相对寻址,物理地址=ES16+(BP)+100=10000H+0200H+0AH=1020AH (4) 源操作数属于基址加变址寻址,物理地址=DS16+(BX)+(SI)+20=20000H+0500H+1100H +14H=21614H4. 判断下列指令的对错,如果错误请说明原因。 (1) MOV CS, BX(2) MOV CH, SI (3) PUSH AL(4) MOV DX

5、, BX BP (5) MOV CH, 100H(6) XCHG BX, 3 (7) PUSH CS(8) MOV AL, BXSI 答: (1) CS 不能赋值(2) 操作数类型/长度不匹配 (3) PUSH 指令的操作数必须是字(4) 寻址方式错误,两个基址寄存器不能同时使 用 (5) 100H 超出了 CH 表示的范围(6) 交换指令的操作数不能是立即数 (7) 正确(8) 正确5. 给出 MOV 指令执行后的结果,设有关寄存器及存储单元内容如下: DS=2000H, ES=2200H, BX=0100H, SI=0004H, (22100H)=12H, (22101H)=34H, (2

6、2102H)=56H, (22103H)=78H, (22104H)=9AH, (22105H)=0BCH, (20100H)=1AH, (20101H)=2BH, (20103H)=3CH, (20104H)=4DH, (20105H)=5EH, (20106H)=6FH, (1) MOV AX, ES:BXSI (2) MOV AX, BX (3) MOV AX, BX (4) MOV AX, BX+SI (5) MOV AX, BX+SI+01 答: (1) 物理地址=2200H16+0100H+0004H=22104H,所以(AX)=0BC9AH; (2) (AX)=(BX)=0100

7、H; (3) 物理地址=2000H16+0100H=20100H,所以(AX)=2B1AH; (4) 物理地址=2000H16+0100H+0004H=20104H,所以(AX)=5E4DH; (5) 物理地址=2000H16+0100H+0004H+01=20105H,所以(AX)=6F5EH;6. 已知 AX=1020H,DX=3080H,端口地址 PORT=41H,(40H)=6EH,(41H)=22H,指出下 列各条指令执行的结果。 (1) IN AL, PORT; AL= (2) IN AL, 40H; AX= (3) OUT DX, AL; (DX)=3(4) OUT DX, AX

8、; (DX)= 答: (1) AL=22H (2) IN AX, 40H; AX=226EH (3) OUT DX, AL; (DX)=6EH (4) OUT DX, AX; (DX)= 226EH7. 用一条指令实现把(BX)和(SI)之和传送给 CX。 答: LEA CX, BX+SI8. 试比较下列 3 组指令的功能 (1) LDS SI, DI (2) MOV SI, DIMOV DS, DI+2 (3) MOV DS, DI+2MOV SI, DI 答:(1) 相当于 MOV SI, DIMOV DS, DI+2 (2) 与(1)功能相同 (3) 第一条指令修改了 DS 的值,因此执

9、行第二条指令后结果可能与(1)(2)不同。9.求出以下各十六进制数与十六进制数 62A0 之和,并根据结果设置标志位 SF,ZF 和 OF 的值。 (1) 1234(2)4321(3) CFA0(4)9D60 略10. 写出以下指令序列中每条指令的执行结果,请在 DEBUG 环境下进行验证,并注意各 标志位的变化情况。 MOVBX, 23ABH ADDBL, 0ACH MOVAX, 23F5H ADDBH, AL SUBBX, AX ADCAX, 12H SUBBH,-9 略11. 编写计算 4A2B+10 多项式值的程序段;说明: (1) 多项式值存于 AX 中,A、B 是无符号数,设中间和

10、最后结果不超过 16 位二进制数。 (2) 数据说明:A DB 0AHB DB 10H 答:4MOV AL, A MUL A MOV BL, 4 MOVBH, 0 MUL BX SUB AL, B SBB AH, 0 ADD AX, 1012. 写一个计算 CL 的 3 次方的指令序列,假设幂不超过 16 位二进制数 答:有符号数 MOVAL, CL IMULCL MOVCX, AX MOVAL, CL CBW IMUL CX 无符号数 MOVAL, CL MULCL MOVCX, AX MOVAL, CL MOVAH, 0 MUL CX13. 假设 DX:AX 中存放一个双字的数据: NEG

11、 DX NEG AX SBB DX,0请问:(1)上述程序段完成什么功能?(2)设执行前,DX=0001H,AX=FFFFH,上述程序段执行后,DX、AX 的值是什么?答:求 DX,AX 存放的双字的相反数执行前两条语句后 DX=0FFFFH,AX=0001H,CF=1;执行第三条语句后,DX=0FFFEH,DX:AX=0FFFE 0001H14. 扩展无符号数是否可以使用如下指令?为什么? (1) CBW 指令;(2)CWD 指令答:不可以,因为这两条指令都是针对带符号数的。CBW 把 AL 的符号扩展到 AH,CWD把 AX 的符号扩展到 DX。如果 AL=80H,执行 CBW 后,AX=

12、0FF80H,显然不对。15. 按要求编写下列指令序列5(1) 清除 DL 中的低 2 位而不改变其他位;(2) 把 SI 的高 3 位置为 1 而不改变其他位;(3) 把 AX 中的 03 位置 0,79 位置 1,1315 取反;(4) 检查 CX 中的 1、3 和 5 位中是否有 1 位为 1;(5) 检查 BX 中的第 2、6 和 10 位是否同时为 1;(6) 检查 CX 中的 1、3、5 和 7 位中是否有 1 位为 0;(7) 检查 BX 中的第 2、6、10 和 12 位是否同时为 0。答:(1) ANDDL, 0FCH;1111 1100B(2)ORSI, 0E000H;11

13、10 0000 0000 0000B(3)ANDAX, 0FFF0H;1111 1111 1111 0000BORAX, 0380H; 0000 0011 1000 0000BXORAX,0E000H; 1110 0000 0000 0000B(4)MOVAX, CXANDAX, 002AH;0000 0000 0010 1010B如果运算结果不为 0,表示 1、3、5 位至少有一位为 1(5) MOVAX, BXANDAX, 0444H;0000 0100 0100 0100B;XORAX, 0444H如果运算结果为 0,表示 2、6、10 位均为 1或者 OR AX,1111 1011 1

14、011 1011B如果运算结果为 FFFFH,则表示 2、6、10 位均为 1(6) MOVAX, CX ORAX, 0FF55H;1111 1111 0101 0101B如果运算结果不为 0FFFFH,表示 1、3、5、7 中至少有一位为 0(7) MOVAX, BXANDAX, 1444H;0001 0100 0100 0100B;如果运算结果为 0,表示 2、6、10、12 位均为 0OR AX,1111 1111 0101 0101BNOT AX如果运算结果为 0,表示 2、6、10、12 位均为 016. 列出 3 种以上实现下列要求的指令或指令序列。(1) 清累加器 AX;6(2)

15、 清进位标志位(3) 将累加器内容乘以 2(不考虑溢出)(4) 将累加器内容除以 2(不考虑余数)答:(1) a. XORAX, AXb.SUBAX, AXc.ANDAX,0d.MOVAX,0(2) a. SUBAX, AXb.ANDAX, AXc.ORAX, AXd.XORAX, AXe.TESTAX, AXf.CLC(3) a.MOVCX,2; MULCXb.ADDAX, AXc.SHLAX, 1d.SALAX, 1e.CLCRCLAX, 1(4) a.MOVCX,2;无符号数DIVCXMOVCX,2;带符号数IDIVCXb.SHRAX, 1;无符号数.SARAX, 1;带符号数c.CLC

16、RCRAX, 117. 写出下列程序段执行后的结果:AX=?。MOVAX, 1234HMOVCL, 4ANDAL, 0FHADDAL, 30HSHLAH, CL7ANDAH, 0F3H答:MOVAX, 1234H; AX=1234HMOVCL, 4ANDAL, 0FH;AX=1204HADDAL, 30H;AX=1234HSHLAH, CL;AX=2034HANDAH, 0F3H;AX=2034H18. 试用移位指令把十进制数+35 和41 分别乘以 2。应该用什么指令?得到什么结果?如果除以 2,结果又如何?答:乘以 2MOVAL, 35; AL=0010 0011B/23HSHLAL,1 ; AL=46HMOVAL,-41; 0D7HSHLAL,1; AL=0AEH除以 2MO

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

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号