1、 0 微机原理与接口技术 习题解答 1 第 1 章 数制与码制 1. 将下列十进制数转换成二进制数: ( 1) 58;( 2) 67.625; ( 3) 5721; 解:( 1) 58D = 0011 1010B ( 2) 67.625D = 0100 0011.1010B ( 3) 5721D = 0001 0110 0101 1001B 2. 将二进制数变换成十六进制数: ( 1) 1001 0101B; ( 2) 11 0100 1011B; ( 3) 1111 1111 1111 1101B; ( 4) 0100 0000 10101B;( 5) 0111 1111B; ( 6) 01
2、00 0000 0001B 解: ( 1) 1001 0101B = 95H ( 2) 11 0100 1011B = 34BH ( 3) 1111 1111 1111 1101B = FFFDH ( 4) 0 1000 0001 0101B = 815H ( 5) 0111 1111B = 7FH ( 6) 0100 0000 0001B = 401H 3. 将十六进制数变换成二进制数和十进制数: ( 1) 78H; ( 2) 0A6H; ( 3) 1000H; ( 4) 0FFFFH 解 :( 1) 78H = 120D = 0111 1000B ( 2) 0A6H = 166D = 10
3、10 0110B ( 3) 1000H = 4096D = 0001 0000 0000 0000H ( 4) 0FFFFH = 65535D = 1111 1111 1111 1111B 4. 将下列十进制数转换成十六进制数: ( 1) 39; ( 2) 299.34375; ( 3) 54.5625 解:( 1) 39D = 27H ( 2) 299.34375D = 12B.58H ( 3) 54.5625D = 36.9H 5. 将下列二进制数转换成十进制数: ( 1) 10110.101B; ( 2) 10010010.001B; ( 3) 11010.1101B 解:( 1) 10
4、110.101B = 22.625D 2 ( 2) 10010010.001B = 146.125D ( 3) 11010.1101B = 26.8125D 6. 计算(按原进制运算): ( 1) 10001101B 11010B; ( 2) 10111B 11100101B; ( 3) 1011110B 1110B; ( 4) 124AH 78FH; ( 5) 5673H 123H; ( 6) 1000H F5CH; 解:( 1) 10100111B ( 2) 11111100B ( 3) 1010000B ( 4) 19D9H ( 5) 5796H ( 6) A4H 7. 已知 a=101
5、1B, b=11001B, c=100110B, 按二进制完成下列运算,并用十进制运算检查计算结果: ( 1) a+b; ( 2) c-a-b; ( 3) a b; ( 4) c b 解: a=1011B=11D b=11001B=25D c=100110B =38D ( 1) 100100B = 36D ( 2) 10B = 2D ( 3) 1 0001 0011B=275D ( 4) 1B 余 1101B= 13D 8. 已知 a=00111000B, b=11000111B, 计算下列逻辑运算: ( 1) a AND b; ( 2) a OR b; ( 3) a XOR b; ( 4)
6、NOT a 解:( 1) 00000000B ( 2) 11111111B ( 3) 11111111B ( 4) 11000111B 9. 设机器字长为 8 位,写 出下列各数的原码和补码: ( 1) +1010101B;( 2) -1010101B;( 3) +1111111B; ( 4) -1111111B;( 5) +1000000B;( 6) -1000000B 解:( 1)原 01010101B 补 01010101B ( 2)原 11010101B 补 10101011B 3 ( 3) 原 01111111B 补 01111111B ( 4) 原 11111111B 补 1000
7、0001B ( 5) 原 01000000B 补 01000000B ( 6) 原 11000000B 补 11000000B 10. 写出下列十进制数的二进制补码表示(设机器字长为 8 位): ( 1) 15;( 2) 1;( 3) 117;( 4) 0; ( 4) 15;( 5) 127;( 6) 128;( 7) 80 解:( 1) ( 00001111B)补 ( 2) ( 11111111B)补 ( 3) ( 01110101B)补 ( 4) ( 00000000B)补 ( 5) ( 11110001B)补 ( 6) ( 01111111B)补 ( 7) ( 10000000B)补 (
8、 8) ( 01010000B)补 11. 设机器字长为 8 位,先将下列各数表示成二进制补码,然后按补码进行运算,并用十进制数运算进行检验: ( 1) 87 73;( 2) 87( 73);( 3) 87( 73); ( 4)( 87) 73;( 5)( 87) 73;( 6)( 87)( 73); 解:( 1) 1110B=14D ( 2) 00001110B 进位舍弃 ( 3) 10100000B=-96D 溢出 ( 4) 11110010B=-14D ( 5) 01100000B=96D 溢出 ( 6) 11110010B=-14D 12. 已知 a,b,c,d 为二 进制补码: a=
9、00110010B, b=01001010B, c=11101001B, d=10111010B, 计算: ( 1) a+b;( 2) a+c;( 3) c+b;( 4) c+d; ( 5) a-b;( 6) c-a;( 7) d-c;( 8) a+d-c 解:( 1) 01111100B 4 ( 2) 00011011B ( 3) 00110011B ( 4) 10100011B ( 5) 11101000B ( 6) 10110111B ( 7) 11010001B ( 8) 11B 13. 设下列四组为 8 位二进制补码表示的十六 进制数,计算 a+b和 a-b,并判断其结果是否溢出:
10、( 1) a=37H, b=57H; ( 2) a=0B7H, b=0D7H; ( 3) a=0F7H, b=0D7H; ( 4) a=37H, b=0C7H 解 :( 1) a+b=8EH 溢出 ,a-b=E0H 未溢出 ( 2) 8EH 未溢出 ,E0H 未溢出 ( 3) CEH 未溢出 ,20H 未溢出 ( 4) FEH 未溢出 70H 未溢出 14. 求下列组合 BCD 数的二进制和十六进制表示形式: ( 1) 3251( 2) 12907( 3) 2006 解:( 1) 0011 0010 0101 0001B = 3251H ( 2) 0001 0010 1001 0111B =
11、12907H ( 3) 0010 0000 0000 0110B = 2006H 15. 将下列算式中的十进制数表示成组合 BCD 码进行运算,并用加 6/减 6 修正其结果: ( 1) 38 42;( 2) 56 77;( 3) 99 88;( 4) 34 69; ( 5) 38 42;( 6) 77 56;( 7) 15 76;( 8) 89 23 解:( 1) 0011 1000B + 0100 0010B = 0111 1010B 低 BCD 码位需要加 6 修正 0111 1010B + 0000 0110B = 1000 0000B = 80BCD ( 2) 0101 0110B
12、+ 0111 0111B = 1100 1101B 高、低 BCD 码位都需要加 6 修正 1100 1101B + 0110 0110B = 0001 0011 0011B=133BCD ( 3) 1001 1001B+1000 1000B = 0001 0010 0001B 高、低 BCD 码位都需要加 6 修正 0001 0010 0001B +0110 0110B = 0001 1000 0111B=187BCD ( 4) 0011 0100B + 0110 1001B = 1001 1101B 低 BCD 码位需要加 6 修正 5 1001 1101B + 0000 0110B =
13、1010 0011B 修正结果使高 BCD 码位需要加 6 修正 1010 0011B +0110 0000B = 0001 0000 0011B = 103BCD ( 5) 00111000B-01000010B =( -1) 1111 0110B 高 BCD 码位需要减 6 修正 ( -1) 1111 0110B -0110 0000B =( -1) 1001 0110B=-100+96=-4BCD ( 6) 01110111B-01010110B = 0010 0001B = 21BCD ( 7) 00011001B-01110110B =( -1) 1001 1111B 高、低 BCD
14、 码位都需要减 6 修正 ( -1) 1001 1111B -01100110B =( -1) 0011 1001B = -100+39 = -61BCD ( 8) 10001001B-00100011B = 0110 0110B = 66BCD 16. 将下列字符串表示成相应的 ASCII 码(用十六进制数表示): ( 1) Example 1;( 2) XiDian University;( 3) -108.652; ( 4) How are you?;( 5) Computer( 6) Internet Web 解 :( 1) 45H, 78H,61H,6DH,70H,6CH,65H,
15、20H, 31H ( 2) 58H,69H,44H,69H,61H,6EH,20H,55H,6EH,69H,76H,65H, 72H,73H,69H,74H,79H ( 3) 2DH,31H,30H,38H,2EH,36H,35H,32H ( 4) 48H,6FH,77H,20H,61H72H,65H,20H79H,6FH,75H ( 5) 43H,6FH,6DH,70H,75H,74H,65H,72H ( 6) 49H,6EH,74H,65H72H,6EH,65H,74H,20H,57H,65H,62H 17. 将下列字符串表示成相应的 ASCII 码(用十六进制数表示): ( 1) Hel
16、lo( 2) 123456;(注: 表示回车)( 3) ASCII; ( 4) The number is 2315 解 :( 1) 48H,65H,6CH,6CH,6FH ( 2) 31H,32H,33H,0DH,34H,35H,36H ( 3) 41H,53H,43H,49H,49H ( 4) 54H,68H,65H,20H,6EH,75H,6DH,62H,65H,72H 6 第 2 章 8086 CPU 结构与功能 1. 微处理器内部结构由哪几部分组成?阐述各部分的主要功能。 解:微处理器内部结构由四部分组成: ( 1)算术逻辑运算单元 ALU:完成所有的运算操作; ( 2)工作寄存器:
17、暂存寻址信息和计算过程中的中间结果; ( 3)控制器:完成指令的读入 、 寄存和译码,并产生控制信号序列使 ALU 完成指定操作; ( 4) I/O 控制逻辑:处理 I/O 操作。 2. 微处理器级总线有哪几类?各类总线有什么作用? 解:微处理器级总线有三类: ( 1)数据总线:传送信息; ( 2)地址总线:传送地址码; ( 3)控制总线 传送控制信号。 3. 为什么地址总线是单向的,而数据总线是双向的? 解:地址码只能由 CPU 生成。而数据需要在 CPU 和存储器之间传输。 4. 8086/8088 微处理器内部有哪些寄存器?其主要作用是什么? 解: 8086CPU 内部有 14 个 16
18、 位寄存器,其中 8 个通用寄存器( 4 数据寄存器 AX、 BX、CX、 DX, 4 地址指针 /变址寄存器 SI、 DI、 SP、 BP), 4 个段寄存器( CS、 DS、 ES、 SS),2 个控制寄存器(指令指针 IP,微处理器状态字 PSW)。 应该注意的是:可以在指令中用作为地址指针的寄存器有: SI、 DI、 BP 和 BX;在 微处理器状态字 PSW 中, 一共设定了 9 个标志位,其中 6 个标志位用于反映 ALU 前一次操作的结果状态( CF, PF, AF, ZF, SF, OF),另 3 个标志位用于控制 CPU 操作( DF,IF, TF)。 5. 如果某微处理器有
19、 20 条地址总线和 16 条数据总线: ( 1)假定存 储器地址空间与 I/O 地址空间是分开的,则存储器地址空间有多大? ( 2)数据总线上传送的有符号整数的范围有多大? 解:( 1)存储器地址空间为: 2021MB ( 2)有符号数范围为: 15 152 2 1, 即 32768 32767 6. 将十六进制数 62A0H 与下列各数相加,求出其结果及标志位 CF、 AF、 SF、 ZF、 OF 7 和 PF 的值: ( 1) 1234H;( 2) 4321H;( 3) CFA0H;( 4) 9D60H 解:( 1) 74D4H CF=0 AF=0 SF=0 ZF=0 OF=0 PF=1
20、 ( 2) A5C1H CF=0 AF=0 SF=1 ZF=0 OF=1 PF=0 ( 3) 3240H CF=1 AF=0 SF=0 ZF=0 OF=0 PF=0 ( 4) 0000H CF=1 AF=0 SF=0 ZF=1 OF=0 PF=1 7. 从下列各数中减去 4AE0H,求出其结果及标志位 CF、 AF、 SF、 ZF、 OF 和 PF 的值: ( 1) 1234H;( 2) 5D90H;( 3) 9090H; ( 4) EA04H 解:( 1) C754H CF=1 AF=0 SF=1 ZF=0 OF=0 PF=0 ( 2) 12B0H CF=0 AF=0 SF=0 ZF=0 O
21、F=0 PF=0 ( 3) 45B0H CF=0 AF=0 SF=0 ZF=0 OF=1 PF=0 ( 4) 9F24H CF=0 AF=0 SF=1 ZF=0 OF=0 PF=1 9. 写出下列存储器地址的段地址、偏移地址和物理地址: ( 1) 2134: 10A0;( 2) 1FA0: 0A1F;( 3) 267A: B876 解:物理地 址段地址 *10H+偏移地址 ( 1) 段地址 : 2134H, 偏移地址 : 10A0H, 物理地址 : 223E0H ( 2) 段地址 : 1FA0H, 偏移地址 : 0A1FH, 物理地址 : 2041FH ( 3) 段地址 : 267AH, 偏移
22、地址 : B876H, 物理地址 : 32016H 10. 给定一个数据的有效地址为 2359H,并且( DS) 490BH,求该数据的物理地址。 解:物理地址段地址 *10H+偏移地址 物理地址 490BH 2359H 4B409H 11. 如果在一个程序段开始执行之前 ,( CS) 0A7F0H,( IP) 2B40H, 求该程序段的 第一个字的物理地址。 解 : 物理地址 段地址 *10H+偏移地址 物理地址 CS*10H+IP = AAA40H 12. IBM PC 有哪些寄存器可用来指示存储器的地址? 解:变址寄存器 SI, DI,堆栈指针 SP, BP,另外还有 BX。 8 第 3
23、 章 8086CPU 指令系统 1. 写出完成下列要求的变量定义语句: ( 1)在变量 var1 中保存 6 个字变量: 4512H, 4512, 1, 100/3, 10H, 65530; ( 2)在变量 var2 中保存字符串: BYTE , word , WORD ; ( 3)在缓冲区 buf1 中留出 100 个字节 的存储空间; ( 4)在缓冲区 buf2 中,保存 5 个字节的 55H,再保存 10 个字节的 240,并将这一过程重复 7 次; ( 5)在变量 var3 中保存缓冲区 buf1 的长度; ( 6)在变量 pointer 中保存变量 var1 和缓冲区 buf1 的偏
24、移地址。 解: var1 DW 4512H,4512,-1,100/3,10H,65530 var2 DB BYTE,word,WORD buf1 DB 100 DUP( ?) buf2 DB 7 DUP( 5 DUP( 55H) ,10 DUP( 240) var3 DB LENGTH buf1 pointer DW var1,buf1 (或者 pointer DW OFFSET var1, OFFSET buf1) 2. 设变量 var1 的逻辑地址为 0100: 0000,画出下列语句定义的变量的存储分配图: var1 DB 12, 12, 20/6, 4 DUP( 0, 55H) va
25、r2 DB Assemble var3 DW AB , cd , E var4 DW var2 var5 DD var2 解: 9 3. 指令正误判断,对正确指令写出源和目的操作数的寻址方式,对错误指令指出原因(设VAR1, VAR2 为字变量 , L1 为标号): ( 1) MOV SI, 100 ( 2) MOV BX, VAR1SI ( 3) MOV AX, BX ( 4) MOV AL, DX ( 5) MOV BP, AL ( 6) MOV VAR1, VAR2 ( 7) MOV CS, AX ( 8) MOV DS, 0100H ( 9) MOV BXSI, 1 ( 10) MOV
26、 AX, VAR1+VAR2 ( 11) ADD AX, LENGTH VAR1 ( 12) OR BL, TYPE VAR2 ( 13) SUB DI, 78H ( 14) MOVS VAR1, VAR2 ( 15) PUSH 100H ( 16) POP CS ( 17) XCHG AX, ES ( 18) MOV DS, CS ( 19) JMP L1+5 ( 20) DIV AX, 10 ( 21) SHL BL, 2 ( 22) MOV AL, 15+23 ( 23) MUL CX ( 24) XCHG CL, SI ( 25) ADC CS:0100, AH ( 26) SBB VAR1 5,154 解 :( 1) MOV SI,100 正确。源:立即数寻址, 目的:寄存器寻址 ( 2) MOV BX,VAR1SI 正确。源:寄存器相对寻址, 目的:寄存器寻址 ( 3) MOV AX,BX 正确。源:寄存器间接寻址,目的:寄存器寻址 ( 4) MOV AL,DX 错误。寄存器间接寻址时, DX, AX, CX 不能作地址寄存器 ( 5) MOV BP,AL 错误。操作数类型不一致 ( 6) MOV VAR1,VAR2 错误。两存储单元之间不能用 MOV 指令传送数据