微机课后答案整理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.2 指出下列MOV指令的源操作数的寻址方式:
MOV AX,1234H
MOV AX,BX
MOV AX,[BX]
MOV AX,TABLE;TABLE ;TABLE是一个变量名
MOV AX,[1234H]
MOV AX,[BX+1234H]
MOV AX,[BP][SI]
MOV AX,[BX+SI-1234H]
【解】:MOV AX,1234H 立即寻址
MOV AX,BX 寄存器寻址
MOV AX,[BX] 寄存器间接寻址
MOV AX,TABLE ;TABLE是一个变量名直接寻址方式
MOV AX,[1234H] 直接寻址方式
MOV AX,[BX+1234H] 寄存器相对寻址
MOV AX,[BP][SI] 基址变址寻址
MOV AX,[BX+SI-1234H] 相对地址变址寻址
3.3 设:(DS)=2000H,(BX)=0100H,(SS)=1000H,(BP)=0010H,TABLE的物理地址为2000AH,(SI)=0002H。求下列每条指令源操作数的存储单元地址:MOV AX,[1234H]
MOV AX,[BX]
MOV AX,TABLE[BX]
MOV AX,[BP]
MOV AX,[BP][SI]
【解】:存储单元地址:(DS)×10H + EA =2000H×10H+1234H=21234H
存储单元地址:(DS)×10H +(BX)=2000H×10H+0100H=20100H
存储单元地址:(DS)×10H+EA=2000H×10H+0100H+000AH=2010AH
存储单元地址:(SS)×10H+EA=1000H×10H+0010H=10010H
储单元地址:(SS)×10H+EA=1000H×10H+0010H+0002H =10012H
3.4 设ARRAY是字数组的首地址,写出将第5个字元素取出送AX寄存器的指令,要求使用以下几种寻址方式:
⑴直接寻址⑵寄存器间接寻址⑶寄存器相对寻址⑷基址变址寻址
【解】:(1)直接寻址(2)寄存器间接寻址(3)寄存器相对寻址(4)基址变址寻址MOV AX, ARRAY+8 MOV BX, ARRAY+8 MOV BX, 8 LEA BX, ARRAY
MOV AX, [BX] MOV AX, ARRAY[BX] MOV SI, 8
MOV AX,[BX+SI]
3.7 下列每组指令有何区别?
(1)MOV AX,1234H 立即寻址
MOV AX,[1234H] 直接寻址
(2)MOV AX,TABLE 直接寻址
MOV AX,[TABLE] 直接寻址
(3)MOV AX,TABLE 将TABLE的内容送AX
LEA AX,TALBE 将TABLE的偏移量送AX
(4)MOV AX,BX 寄存器寻址
MOV AX,[BX] 寄存器间接寻址
3.8 MOV CS,AX指令正确吗?
错误。不能用CS作目的操作数。
3.9 写一指令序列将3456H装入DS寄存器。
MOV AX,3456H
MOV DS,AX
不能将立即数直接送段寄存器,所以得间接。
3.10 若正在访问堆栈的03600H单元,则SS和SP的值各是多少?03600H=SS*10H+SP
所以有多个答案。例如:
SS=350H SP=0H
SS=300H SP=600H
3.11 若(SS)=2000H,(SP)=000AH,
先执行将字数据1234H和5678H压入堆栈的操作,
再执行弹出一个字数据的操作,
试画出堆栈区及SP的内容变化过程示意图(标出存储单元物理地址)
3.13 能用ADD指令将BX内容加到ES中去吗?
不能。算术运算中段寄存器不得作为目的操作数。
3.14 INC [BX]指令正确吗?
错误。需指明存储器操作数的类型是字节还是字。
3.15 若(AX)=0001H,(BX)=0FFFFH,执行ADD AX,BX之后,
标志位ZF、SF、CF、OF各是什么?
ZF=1 SF=0 CF=1 OF=0
3.16 写一指令序列完成将BL中的数据除以CL中的数据,
再将其结果乘以2,并将最后为16位数的结果存入DX寄存器中。
MOV AL,BL
CBW
DIV CL
MOV CL,2
MUL CL
MOV DX,AX
3.17 写一指令序列,完成将AX寄存器的最低4位置1,
最高3位清0,第7、8、9位取反,其余位不变的操作。
OR AX,000FH
AND AX,1FFFH
XOR AX,0380H
第四章
⑴ADD V AR1,V AR2 ⑵SUB AL,V AR1 ⑶JMP LAB[SI] ⑷JNZ V AR1
⑸JMP NEAR LAB
【解】:
⑴ADD V AR1,V AR2
ADD两个操作数不能同时为存储单元,
MOV AX, V AR1
ADD AX, V AR2
⑵SUB AL,V AR1
两个操作数不匹配
SUB AX, V AR1
⑶JMP LAB[SI]
LAB与[SI]不能相加
JMP WORD PTR [SI]
⑷JNZ V AR1
JNZ后面应是标号,不应是变量
JNZ LAB
⑸JMP NEAR LAB
缺少PTR运算符
JMP NEAR PTR LAB
4.5 假设程序中的数据定义如下:
PARTNO DW ?
PNAME DB 16 DUP(?)
COUNT DD ?
PLENTH EQU $-PARTNO
问PLENTH的值为多少? 它表示什么意义?
PLENTH的值为22,表示从PARTNO开始到PLENTH之前所含字节数
4.6 有符号定义语句如下:
BUFF DB 1,2,3,‘123’
EBUFF DB 0
L EQU EBUFF-BUFF
问L的值是多少?
L值为6。
BUFF DB 1,2,3,‘123’
L EQU $-BUFF
EBUFF DB 0
4.9给出等值语句如下:
ALPHA EQU 100
BETA EQU 25
GAMMA E QU 2
下列表达式的值是多少?
⑴ALPHA*100+BETA ⑵ALPHA MOD GAMMA+BETA ⑶(ALPHA+2)*BETA-2 ⑷(BETA/3) MOD 5
⑸(ALPHA+3)*(BETA MOD GAMMA) ⑹ALPHA GE GAMMA
⑺BETA AND 7 ⑻GAMMA OR 3
【解】:⑴ALPHA*100+BETA
100×10025=10025
⑵ALPHA MOD GAMMA+BETA
100/(25+2)=19
⑶(ALPHA+2)*BETA-2
(100+2)*25=2548
⑷(BETA/3) MOD 5
(25/3) MOD 5=3
⑸(ALPHA+3)*(BETA MOD GAMMA)
(100+3)*(25 MOD 2)=103
⑹ALPHA GE GAMMA