微型计算机原理及应用 第四版 课后答案 (郑学坚 朱定华)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微机原理第七章答案
7.3 设AX=1122,BX=3344H,CX=5566H,SS=095BH,SP=0040H,下述程序执行后AX ,
BX ,CX ,DX 4个通用寄存器内容是多少?画出堆栈存储器的物理地址及存储内容和SP 指向的示意图。 PUSH AX PUSH BX PUSH CX POP BX POP AX POP DX
参考答案:(BX)=5566H, (AX)=3344H, (DX)=1122H ,(CX)=5566H 堆栈段物理地址=SS*16(左移4位)+SP
7.4 设 SP=0040H,如果用进栈指令存入5个数据,则SP=0036H ,若用出栈指
令取出两个数据,则SP=003AH 。
7.5将表中程序段各指令执行后AX 的值用十六进制数填入表中
7.6 用十六进制数填下表,已知DS=1000H,ES=2000H,SS=0FC0H,通用寄存器的值
为0。
参考答案:逻辑地址=段基址:段内偏移地址
BP以SS为默认段基址,其余寄存器以DS为默认段基址
ES:为段前缀,以ES为段基址
7.7 试给出执行完下列指令后OF、SF、ZF、CF4个可测试标志位的状态(用十
六进制给出FLAG的值,其余各位为0)
(1)MOV AX,2345H (2) MOV BX,5439H
ADD AX,3219H ADD BX,456AH
(3)MOV CX,3579H (4) MOV DX,9D82H
SUB CX,4EC1H SUB DX,4B5FH
参考答案:(这里除了上面4个标志还考虑了奇偶标志PF和辅助进位标志AF)
7.8AX 中有一负数,欲求其绝对值,若该数为补码,则使用指令NEG AX;若为原码则用指令AND AX,7FFFH。。
7.9 分别写出实现如下功能的程序段:
(1)将AX中间8位(做高8位),BX低4位和DX高4位(做低4位)拼成一个新字。(注意:左移右移操作)
AND AX,0FF0H
MOV CL,04H
SHL AX,CL
AND BL,0FH
AND DH,0F0H
SHR DH,CL
SHL BL,CL
OR AL,DH
OR AL,BL
(2)将CX中间8位取反,其余位不变
XOR CX,0FF0H
(3)将数据段以BX为偏移地址的连续3单元中的无符号数求和。
MOV CX,3
MOV AL,0
LAB:ADD AL,[BX]
ADC AH,00H;(注意字节单元的和可能超过一个字节,故这里和扩展至AH)INC BX
LOOP LAB
(4) 将数据段中以BX为偏移地址的连续4单元中的内容颠倒过来
MOV CX,2 ;(4/2单元个数除2,循环计数)
MOV SI,BX
ADD SI,3 ;(指向最后一个数据单元,首地址+单元个数-1)
LAB:MOV AL,[BX]
XCHG AL,[SI]
MOV [BX],AL
INC BX
DEC SI
LOOP LAB
(5) 将BX中的4位压缩BCD数用非压缩数形式按序放在AL,BL,CL和DL中
MOV CL,4 (注意先后次序,不能用其它寄存器)
MOV DL,BL
AND DL,0FH
MOV AL,BH
SHR AL,CL
XCHG BH,BL
AND BL,0FH
SHR BH,CL
MOV CL,BH
(6)不用乘法指令实现AL(无符号数)乘以20
AL*(24+22)( 24左移4位,22左移2位)
MOV AH,0
MOV CL,2
SAL AX,CL ;进行乘4操作
MOV BX,AX ;保留乘4中间结果
SAL AX,CL;再移2次,相当于乘16
ADD AX,BX
7.10一段数据定义为:
DATA SEGMENT
S1 DB 0,1,2,3,4,5
S2 DB ‘12345’
COUNT=$-S1
NB DB 3DUP(2)
NW DW 120,-256
P DW -1
DATA ENDS
(1)不分配存储单元)
(3) 填写表中程序段各指令执行后。目的寄存器的值,并指出源操作数所使用的
(4)改正下列不正确的指令错误
a. MOV AX,S1 改正 MOV AX,WORD PTR S1
b. MOV BP,OFFSET S2 改正 MOV BX,OFFSET S2
MOV CL,[BP] MOV CL,[BX]
c. MOV SI,OFFSET NB 改正 MOV SI,OFFSET NB
MOV [SI],‘+’MOV BYTE PTR [SI],‘+’
d. MOV DL,NW+2 改正MOV DL, BYTE PTR NW+2
e. MOV DI,CH 改正MOV DI,CX
f. MOV BX, OFFSET S1 改正 MOV BX, OFFSET S1
MOV DH,BX+3 MOV DH,[BX+3]
g. INC COUNT 改正 MOV BX,COUNT INC BX (符号常数不能加1)
h. MOV NB,S2 改正 MOV AL,S2 MOV NB,AL(两个内存变量不能直接传送)
i. MOV AX,[BX+S1] 改正 MOV AX,WORD PTR [BX+S1]