微型计算机原理和应用第四版课后答案解析(郑学坚朱定华) 下载本文

完美WORD格式

微机原理第七章答案

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

095EBH 66H

095ECH 55H

095FDH 44H

095EEH 33H

095EFH 22H

11H SP→ 095F0H

7.4 设 SP=0040H,如果用进栈指令存入5个数据,则SP=0036H ,若用出栈指

令取出两个数据,则SP=003AH 。

7.5将表中程序段各指令执行后AX的值用十六进制数填入表中

参考答案: 程序段 MOV AX,0 DEC AX ADD AX,7FFFH ADC AX,1 NEG AX AX 0 FFFFH 7FFEH 8000H 8000H 程序段 OR AX,3FDFH AND AX,0EBEDH XCHG AH,AL SAL AX,1 RCL AX,1 AX BFDFH ABCDH CDABH 9B56H 36ADH 7.6 用十六进制数填下表,已知DS=1000H,ES=2000H,SS=0FC0H,通用寄存器的值

为0。

参考答案:逻辑地址=段基址:段内偏移地址

专业整理 知识分享

完美WORD格式

BP以SS为默认段基址,其余寄存器以DS为默认段基址 ES:为段前缀,以ES为段基址 指令 存储器操作数逻辑地址 SUB [BP],AL 0FC0H:0000H MOV [BX],BH 1000H:0000H MOV [DI],DL 1000H:0000H MOV ES:[SI],BL 2000H:0000H ADD 500H[BP],AH 0FC0H:0500H SUB [SI-300H],AL 1000H:FD00H MOV 1000H[DI],DL 1000H:1000H MOV [BX-8],CL 1000H:FFF8H MOV ES:1000H[DI],CH 2000H:1000H MOV [BP+SI],DH 0FC0H:0000H MOV [BX+DI],DL 1000H:0000H 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 OF DF IF TF SF ZF 0 AF 0 溢出 方向 中断 陷阱 符号 为零 辅进 PF 0 奇偶 CF 进位 参考答案:(这里除了上面4个标志还考虑了奇偶标志PF和辅助进位标志AF) (1)AX=555EH FLAG=0000H OF DF IF TF SF ZF 0 AF 0 PF 0 CF 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (2)BX=99A3H FLAG=0894H OF DF IF TF SF ZF 0 AF 0 PF 0 CF 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 (3)CX=E6B8 FLAG=0081H OF DF IF TF SF ZF 0 AF 0 PF 0 CF 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 (4)DX=5223 FLAG=0014H OF DF IF TF SF ZF AF PF 0 CF 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 专业整理 知识分享

完美WORD格式

7.8 AX 中有一负数,欲求其绝对值,若该数为补码,则使用指令 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

专业整理 知识分享

完美WORD格式

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)画出该数据段数据存储形式(注意:符号常量COUNT不分配存储单元)

地址 内容 S1 -0000H 00H 0001H 01H 0002H 02H 0003H 03H 0004H 04H 0005H 05H S2 -0006H 31H 0007H 32H 0008H 33H 0009H 34H 000AH 35H NB -000BH 02H 000CH 02H 000DH 02H NW -000EH 78H 000FH 00H 0010H AAH 0011H FDH P -0012H FFH 0013H FFH

专业整理 知识分享