微机原理黄冰版--作业答案 下载本文

1章 绪论

1.2 用8位二进制码,写出下列十进制数的原码和补码表示 解释:

原码:最高位为符号位,正数符号位为0,负数符号位为1。

补码:正数的补码与原码相同;负数的补码:由其原码除符号位保持不变外,其余各位按位取反,末位加1而成。 解:

(1) [+65]原 = 0100 0001B 注:65 = 64 + 1

[+65]补 = [+65]原 = 0100 0001B 注:正数补码与原码相同

(2) [+115]原 = 0111 0011B 注:115 = 64 + 32 + 16 + 2 + 1 [+115]补 = [+115]原 = 0111 0011B 注:正数补码与原码相同 (3) [-65]原 = 1100 0001B 注:65 = 64 + 1

[-65]补 = 1011 1110B + 1B = 1011 1111B 注:除符号位外,按位取反,末位加1 (4) [-115]原 = 1111 0011B 注:115 = 64 + 32 + 16 + 2 + 1 [-115]补 = 1000 1100B + 1B = 1000 1101B 注:除符号位外,按位取反,末位加1 1.3 用16位二进制码,写出下列十进制数的原码和补码表示。

(1) [+120]原 = 0000 0000 0111 1000B 注:120 = 64 + 32 + 16 + 8 [+120]补 = [+120]原 = 0000 0000 0111 1000B 注:正数补码与原码相同

(2) [-120]原 = 1000 0000 0111 1000B 注:120 = 64 + 32 + 16 + 8 [-120]补 = 1111 1111 1000 0111B + 1B = 1111 1111 1000 1000B 注:除符号位外,按位取反,末位加1

(3) [+230]原 = 0000 0000 1110 0110B 注:230 = 128 + 64 + 32 + 4 + 2 [+230]补 = 0000 0000 1110 0110B 注:正数补码与原码相同

(4) [-230]原 = 1000 0000 1110 0110B 注:230 = 128 + 64 + 32 + 4 + 2 [-230]补 = 1111 1111 0001 1001B + 1B = 1111 1111 0001 1010B 注:除符号位外,按位取反,末位加1

1.4 写出下列用补码表示的二进制数的真值。 解释:

正数的补码 = 原码

负数的补码:再次求补码得到其原码 解:

(1) 0011 0111 正数的补码 真值:32 + 16 + 4 + 2 + 1 = +55 (2) 0101 1001 正数的补码 真值:64 + 16 + 8 + 1 = +89

(3) 1000 1101 负数的补码 真值:1111 0010B + 1B = 1111 0011B = -115 (4) 1111 1001 负数的补码 真值:1000 0110B + 1B = 1000 0111B = -7

第2章 Intel 8086微处理器

2.2 在存储器中存放的数据如图所示。试读出75422H和75424H字节单元的内容是什么?读出75422H和75424H字单元的内容是什么? 解: 存储器 75422H字节单元的内容:9CH ? 75424H字节单元的内容:5DH 7542 0H 13H 75422H字单元的内容:249CH 1H 78H 75424H字单元的内容:0E65DH 2H 9CH 3H 24H 4H 5DH 5H E6H

2.3 段地址和偏移地址为1000H:117AH的存储单元的物理地址是什么?而1109H:00EAH或1025H:0F2AH的存储单元的物理地址又是什么?这说明了什么问题? 解释:物理地址 = 段地址 × 10H + 偏移地址 解:

1000H : 117AH存储单元的物理地址1000H × 10H + 117AH = 1117AH 1109H : 00EAH存储单元的物理地址1109H × 10H + 00EAH = 1117AH 1025H : 0F2AH存储单元的物理地址1025H × 10H + 0F2AH = 1117AH

说明:不同的段地址不同的偏移地址可以指向同一个物理地址,即各个逻辑段可以相互重叠。

2.4 在存储器分段结构中,每个段区最大可占用多少地址范围,为什么?如果在8086的机器中,若段间不允许重叠,那么最多可分多少个段区? 解:

若为8086微处理器,每个段区最大可占用64KB,因为所有内部寄存器都只有16位。

若每段64KB,最多可分16个段区,因为8086微处理器有20条地址线,可访问存储器的最大容量为1MB。 2.5 如果从存储器的2000H地址开始分配段区,要求数据段占用1KB范围,堆栈段占用512B范围,代码段占用8KB范围。按数据段、堆栈段和代码段的顺序连续存放,试画出存储器分段地址分配示意图,图中应写明各段寄存器的内容? 解:

02000H 02400H 02600H

1KB 512B 8KB DS:0200 SS:0240H CS:0260H

注:

1KB:00 0000 0000B~11 1111 1111B

SS:起始物理地址2000H + 1KB = 2000H + 400H = 02400H 512B:0 0000 0000B~1 1111 1111B

CS:起始物理地址2400H + 512B = 2400H + 200H = 02600H 2.6 指出下列指令的源和目标操作数的寻址方式: 题号 (1) (2) (3) (4) (5) (6) 指令 MOV ARRAY,BX ADC CX,ALPHA[BX][SI] INC BL 目的操作数的寻址方式 直接寻址 寄存器寻址 寄存器寻址 寄存器间接寻址 寄存器寻址 源操作数的寻址方式 寄存器寻址 带位移的基址变址寻址 立即寻址 寄存器寻址 寄存器间接寻址 AND GAMMA[DI],11011000B 带位移的变址寻址 TEST ES:[SI],DX SBB SI,[BP] 2.7 现有DS=2000H,BX=0100H,SI=0002H,(20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=B7H,(21203H)=65H,试说明下列各指令执行完后AX寄存器的内容。 题号 (1) (2) (3) (4) (5) (6) (7) 指令 MOV AX,1200H MOV AX,BX MOV AX,[1200H] MOV AX,[BX] MOV AX,1100H[BX] MOV AX,[BX][SI] AX寄存器的内容 1200H 0100H 4C2AH 3412H 4C2AH 7856H 简单解释 立即数赋给AX 寄存器BX值赋给AX PA=DS×16+1200H=21200H PA=DS×16+BX=20100H PA=DS×16+BX+1100H=21200H PA=DS×16+BX+SI=20102H PA=DS×16+BX+SI+1100H=21202H MOV AX,1100H[BX][SI] 65B7H 2.8 假定DS=2000H,ES=2100H,SS=1500H,SI=00A0H,BX=0100H,BP=0010H,数据段中变量名VAL的偏移地址值为0050H,试指出下面源操作数字段的寻址方式是什么?其物理地址值是多少? 题号 指令 源操作数的寻址方式 源操作数的物理地址 (1) MOV AX, 00ABH (2) MOV AX,BX (3) MOV AX,[100H] (4) MOV AX,[BX] (5) MOV AX,[BP] (6) MOV AX,[BX+10] (7) MOV AX,[BX][SI] (8) MOV AX,VAL (9) MOV AX,ES:[BX] (10) MOV AX,[SI] (11) MOV AX,VAL[BX] 立即寻址 寄存器寻址 直接寻址 寄存器间接寻址 寄存器间接寻址 带位移的基址寻址 基址变址寻址 直接寻址 寄存器间接寻址 寄存器间接寻址 带位移的基址寻址 在代码段中,与CS、IP有关 在寄存器中 DS×16+100H=20100H DS×16+BX=20100H SS×16+BP =15010H DS×16+BX +10=2010AH DS×16+BX +SI=201A0H DS×16+VAL=20050H ES×16+BX=21100H DS×16+SI=200A0H DS×16+BX+VAL=20150H (12) MOV AX,VAL[BX][SI] 带位移的基址变址寻址 DS×16+BX+SI+VAL=201F0H 2.9 设AX=1122H,BX=3344H,CX=5566H,SP=2000H,试分析下列程序段执行后,AX、BX、CX、SP中的内容各为多少?并画出堆栈变化示意图。 解:

第1条指令 AX=1122H

PUSH AX

第2条指令 PUSH BX

第3条指令 PUSH CX

第4条指令 POP AX

第5条指令 POP CX

SP→

22H AX=5566H BX=3344H CX=3344H

SP→

44H 33H 22H 11H AX=5566H BX=3344H CX=5566H SP=1FFCH

SP→

66H 55H 44H 33H 22H 11H AX=1122H BX=3344H CX=5566H SP=1FFAH

SP→

44H 33H 22H 11H AX=1122H BX=3344H CX=5566H SP=1FFCH

SP→

22H 11H BX=3344H CX=5566H SP=1FFEH

11H SP=1FFEH

2.10 下列程序段中每一条指令执行完后,AX中的十六位进制内容是什么? 指令 MOV AX,0 DEC AX ADD AX,7FFFFH AX中的内容 AX=0000H AX=0FFFFH AX=7FFEH 指令 ADD AX,2 NOT AX SUB AX,0FFFFH ADD AX,8000H OR AX,0BFDFH AND AX,0EBEDH XCHG AH,AL SAL AX,1 RCL AX,1 AX=8000H AX=7FFFH AX=8000H AX=0000H AX=0BFDFH AX=0ABCDH AX=0CDABH AX=9B56H (CF=1,PF=1) AX=36ADH (CF=1,PF=1,OF=1) 1100 1101 1010 1011算术左移 1001 1011 0101 0110带进位循环左移 循环移位指令不影响除CF和OF以外的其他条件标志。

移位指令根据移位后的结果设置SF、ZF和PF位,AF位则无定义。 RCL:OF=1最高有效位的值发生变化;PF保留原来的值;

2.11 将十六进制数62A0H与下列各个数相加,试给出和数及标志位AF,SF,ZF,CF,OF和PF的状态。 (1) 9D60H

0110001010100000?100111010110000010000000000000000

和数:0H

AF=0,SF=0,ZF=1,CF=1,OF=0,PF=1 (2) 4321H

0110001010100000?010000110010000101010010111000001

和数:0A5C1H

AF=0,SF=1,ZF=0,CF=0,OF=1,PF=0

2.12 从下列各个数中减去4AE0H,试给出差值及标志位AF,SF,ZF,CF,OF和PF的状态。 (1)1234H (2)9090H 解:

0001001000110100[1234H]?0100101011100000[4AE0H]11100011101010100[0C754H]

AF=0,SF=1,ZF=0,CF=1,OF=0,PF=0

1001000010010000[9090H]?0100101011100000[4AE0H]00100010110110000[45B0H]

AF=0,SF=0,ZF=0,CF=0,OF=1,PF=0

2.13 假设BX=00E3H,字变量VALUE中存放的内容为79H,确定下列各条指令单独执行后的结果。 题号 指令 (1) XOR BX,VALUE (2) AND BX,VALUE (3) OR BX,VALUE (4) XOR BX,0FFH (5) AND BX,0 (6) TEST BX,01H BX寄存器的内容 简单解释 009AH 0061H 00FBH 001CH 0000H 00E3H 0000 0000 1110 0011 XOR 0000 0000 0111 1001 0000 0000 1110 0011 AND 0000 0000 0111 1001 0000 0000 1110 0011 OR 0000 0000 0111 1001 0000 0000 1110 0011 XOR 0000 0000 1111 1111 TEST指令只影响标志位,不影响结果 (1) XOR OSZAPC:0XXUX0 SF=0; ZF=0; PF=1