第1章作业
作业
教材P15 习题 1.1 (2)
1.2 (1) (2) (3) 1.5 (2) (3) 1.7 (1) (2) (3) 1.8 (2) (4) 1.9 (2) (3)
(参考答案略)
参考答案
(略)
第2章作业
作业
教材P26-27习题 2.2 2.4 2.6 2.8
参考答案
(略)
第 1 页 共 10 页
第3章作业
作业
教材P71-72习题 3.1 3.2
3.4 (2) (4) (6)+(1)(5) 3.7 3.9
补充说明:
(1)对于3.1题,当操作数是存储器操作数时,注意区分内存操作数的物理地址与存储单元的内容!
(2)对于3.2题,不仅要能够判断,如果出错,还要知道具体出错的原因。
(3)对于3.7和3.9,要能够分析出每一条指令执行完后,目的操作数中寄存器的内容是什么。
参考答案 3.1
注意题目要求:源操作数的寻址方式,并计算相应的物理地址
(1) mov ax, bx 寄存器寻址 (2) mov ax, [bx] 寄存器间接寻址 (3) mov ax, table[si] 变址寻址
物理地址= (ds)×16+(si) +table = 31804H 物理地址= (ds)×16+(bx) = 30700H
因为操作数是寄存器操作数,所以无相应的物理地址
(4) mov ax, [bp]disp 基址寻址
物理地址= (ss)×16+(bp)+disp = 41700H
(5) mov ax, [bx][di] 基址变址寻址
物理地址= (ds)×16+(bx)+(di) = 30800H
(6) mov ax, [bp][si]table 相对基址变址寻址
物理地址= (ss)×16+(bp)+(si)+table = 42504H
第 2 页 共 10 页
3.2
注意题目要求:源8086/8088微处理器 (1) sub ax, [bx+bp]
× 错误原因: 对于源操作数,没有这种寻址方式 (2) add value1,value2
× 错误原因:源操作数和目的操作数不能同时为存储器操作数 (3) rol [bx][di],3
× 错误原因:当移位次数大于1时,要先把移位次数送入cl寄存器
即:mov cl, 3
rol
[bx][di], cl
(4) not bx, dx × 错误原因:
(5) mov ds, 1000h
× 错误原因: 不能把立即数送入段寄存器
(6) mov cs, ax
× 错误原因: cs寄存器不能作为目的操作数 (7) cmp 1000h, bx
× 错误原因:目的操作数不能为立即数 (8) mov value1, cx √
(9) mov ds, es
× 错误原因:两个段寄存器之间不能直接进行传送操作 (10) push cs √
(11) push 2a00h
× 错误原因: push指令的操作数只能是16位寄存器操作数或16位存储器操作数 备注: 由于本题题目中指出针对8086/8088微处理器,故此指令用法错误。若针对386以上
第 3 页 共 10 页
not指令只能有一个操作数
微处理,则正确。 (12) in
100h, al
× 错误原因: 源操作数和目的操作数均不符合in指令的语法格式
备注:具体语法格式可参见第3章课件或教材,这里只列举四个书写正确的实例。
① in ② in
al, 50h
表示从50h端口读入一个字节数据送入al
ax, 50h 表示从50h端口读入一个字数据送入ax
③ mov dx, 100h in
al, dx
表示从100h端口读入一个字节数据送入al
④ mov dl, 100h
in
al, dx
表示从100h端口读入一个字数据送入ax
③和④即说明,当端口号超过ffh(即255)时,要先将端口号送入dx (13) lea bx, 4300h × 错误原因: (14) mov ax, [cx] × 错误原因:
用于寄存器间接寻址的寄存器只能是bx,bp,si,di之一。 立即数不存在偏移地址
3.4
ps:符合要求的指令或程序段不止一种,这里只给出一种参考。 (1) mov ax, 0 and ax,0 (2) mov cl,4
rol bl,cl
(4) and bx,0f7afH
或: and bx, 1111011110101111B 或: btr bx,4 btr bx,6 btr bx,11
注: 指令btr的用法请参照教材P69
(5) xor ax, 0100000000100000B 或 xor ax, 4020H (6) test dx,0001h jnz L1 …
L1: … ; b0位为1
test dx, 0200h jnz L2
第 4 页 共 10 页
相关推荐: