微机原理习题及答案 联系客服

发布时间 : 星期二 文章微机原理习题及答案更新完毕开始阅读743335c4680203d8cf2f2424

微机原理习题册

第 1 章 数制和码制

1.将下列十进制数分别转换为二进制数 (1)147 (2)4095 (3)0.625 (4)0.15625 解:147=10010011B 4095=111111111111B 0.625=0.101B 0.15625=0.00101B 2. 将下列二进制数分别转换为十进制数 (1)10110.101B (2)10010010.001B (3)11010.1101B 解:

10110.101B=22.625 10010010.001B=146.0625 11010.1101B=26.8125 3.将二进制数转换成十六进制数

(1)10010101B(2)1101001011B(3)1111111111111101B (4)0100000010101B(5)01111111B(6)010000000001B 解:(1)95H(2)34BH(3)FFFDH(4)0815H(5)7FH(6)401H 4.已知 a=1011B, b=11001B, c=100110B,按二进制完成下列运算,并用十进制 运算检查计算结果:

(1)a+b; (2)c-a-b; (3)a·b; (4)c/b; 解:a=1011B=11, b=11001B=25, c=100110B=38 (1)a+b=100100B=36 (2)c-a-b=10B=2 (3)a·b=100010011B=275 (4)c/b=1……1101B(=13) 5.设机器字长为 8 位,写出下列各数的原码和补码:

(1) +1010101B (2)-1010101B (3)+1111111B (4)-1111111B (5)+1000000B (6)-1000000B 解:(1)+1010101B 原码 01010101B 补码 01010101B

(2) -1010101B 原码 11010101B 补码 10101011B (3) +1111111B 原码 01111111B 补码 01111111B (4) -1111111B 原码 11111111B 补码 10000001B (5) +1000000B 原码 01000000B 补码 01000000B (6) -1000000B 原码 11000000B 补码 11000000B 6.已知 a=00111000B,b=11000111B,计算下列逻辑运算:(1)a AND b;(2)a OR b;(3)a XOR b;(4)NOT a; 解:(1)00000000B(2)111111111B(3)111111111B(4)11000111B 7.求下列组合 BCD 数的二进制和十六进制表示形式:(1.14)

(1) 3251;(2)12907;(3)2006 解:(1)0011 0010 0101 0001B,3251H (2) 0001 0010 1001 0000 0111 B , 12907H (3) 0010 0000 0000 0110B , 2006H

8.设下列四组为 8 位二进制补码表示的十六进制数,计算 a+b 和 a-b,并判定其

结果是否溢出:

0

(1)a=37H,b=57H;(2)a=0B7H,b=0D7H; (3)a=0F7H,b=0D7H;(4)a=37H,b=0C7H。 解:(1)a=37H, b=57H; a+b=8EH; a-b=[-1]E0H=-32

(2) a=0B7H, b=0D7H; a+b=[1]8EH=-114; a-b=[-1]E0H=-32 (3) a=0F7H, b=0D7H; a+b=[1]CEH=-50; a-b=20H=32 (4) a=37H, b=0C7H; a+b=FEH=-2; a-b=[-1]70H=112 9.写出“0”到“9”共 10 个数符的 ASCII 码。

答:“0”的 ASCII 码是 30H,“1”的 ASCII 码是 31H,

“2”的 ASCII 码是 32H,“3”的 ASCII 码是 33H, “4”的 ASCII 码是 34H,“5”的 ASCII 码是 35H, “6”的 ASCII 码是 36H,“7”的 ASCII 码是 37H, “8”的 ASCII 码是 38H,“9”的 ASCII 码是 39H。 10.将下列算式中的十进制数表示成组合 BCD 码进行运算,并用加 6 和减 6 进行修正。 (1)38+42 (2)99+88 解:(1) 38 BCD + 42 BCD +88 BCD 第 2 章 7AH 121H 8086CPU 结构与功能 1.微

+ 06H + 66H 处理器

80 BCD 187 BCD 内部结构由那几个部分组成?阐述各部分的主要功能?答:微处理器内部结构主要由算术逻辑运算单元(ALU)、控制器、工作寄存器和 I/O 控制逻辑组成。算术逻辑运算单元是 CPU 的核心,它完成所有的运算操作;控制器是 CPU 的“指挥中心”,只有在它的控制下,CPU 才能完成指令的读入、寄存、译码和执行;工作寄存器用于暂时存储寻址信息和计算中间结果;I/O 控制逻辑用于处理 I/O 操作。 2.为什么地址总线是单向的,而数据总线是双向的?答:由于在计算机中地址总是由 CPU 产生的,因此地址总线是单向的。而数据 可从 CPU 写到存储器,也可从存储器读到 CPU,因此数据总线是双向的。 3.8086/8088 微处理器内部有哪些寄存器?其主要作用是什么?(2.4)答:执行部件有 8 个 16 位寄存器,AX、BX、CX、DX、SP、BP、DI、SI。AX、 BX、CX、DX 一般作为通用数据寄存器。SP 为堆栈指针存器,BP、DI、SI 在间接寻址时作为地址寄存器或变址寄存器。总线接口部件设有段寄存器 CS、DS、 SS、ES 和指令指针寄存器 IP。段寄存器存放段地址,与偏移地址共同形成存储器的物理地址。IP 的内容为下一条将要执行指令的偏移地址,与 CS 共同形成下一条指令的物理地址。

4.如果某微处理器有 20 条地址总线和 16 条数据总线,问:

(1) 假定存储器地址空间与 I/O 地址空间是分开的,则存储器地址空间有多

大?

(2) 数据总线上传送的有符号整数的范围有多大?

1

2) 99 BC

解:存储空间为220 =1048576 =1M 字节, 数据总线上传送的有符号整数的范围 为-32768~+32767。

5.从下列各数中减去 4AE0H,求出其结果及标志位 CF、AF、SF、ZF、OF 和 PF 的值: (1) 1234H (2)5D90H (3)9090H(4)EA04H 解:(1)1234H-4AE0H=

C754H;CF=1,AF=0,SF=1,ZF=0,OF=0,PF =0 (2) 5D90H -4AE0H=12B0H;CF=0,AF=0,SF=0,ZF=0,OF=0, PF=0 (3) 9090H-4AE0H=45B0H;CF=0,AF=0,SF=0,ZF=0,OF=0,PF =0 (4) EA04H-4AE0H=9F24H;CF=0,AF=0,SF=1,ZF=0,OF=0,PF =1

6.什么是逻辑地址?什么是物理地址?它们之间的关系如何?答:在逻辑空间中每条指令的地址和指令中要访问的操作数地址统称为逻辑地址。内存是由若干个存储单元组成的,每个存储单元有一个编号,这种编号可惟一标识一个存储单元,称为内存地址(或物理地址)。 7.写出下列存储器地址的段地址、偏移地址和物理地址:(1)2134:10A0 (2)1FA0:0A1F (3)267A:B876 解:(1)段地址:2134H; 偏移地址:10A0H; 物理地址:223E0H (2) 段地址:1FA0H; 偏移地址:0A1F H; 物理地址:2041FH (3) 段地址:267A H; 偏移地址:B876H; 物理地址:32016H

8.给定一个数据的有效地址为 2359H,并且(DS)=490BH,求该数据的物理地址。

答:4B409H

9.如果在一个程序段开始执行之前,(CS)=OA7F0H,(IP)=2B40H,求该程序段的第一个字的物理地址。 解:物理地址为: 0A7F0H×10H+2B40H=A3330H。

10.IBM PC 有哪些寄存器可用来指示存储器的地址?答:指示存储器地址的寄存器有:SI,DI,BX,BP

11.已知 AH=56H,AL=65H,则 AX 的值是多少?若 AX=AX+0202H,则 AH 和 AL 的值分别是多少?

答:AX=5665H;AH=58H;AL=67H。

12.在 8086CPU 中,从逻辑地址计算出物理地址的部件是什么?答:地址加法器。

13.当 8086CPU 重启后,指令指针指向的内存单元的物理地址是多少?

答:8086CPU 重启后,CS=0FFFFH,IP=0000H,因此指令指针指向的内存单元的物理地址 PA=CS×10H+IP = 0FFFF0H。 第 3 章 8086CPU 指令系统

1.写出完成下列要求的变量定义语句:

2

(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 的偏移地址。 解:(1)var1 DW 4512H,4512,-1,100/3,10H,65530

(2) var2 DB ?BYTE?, ?word?, ?WORD? (3) buf1 DB 100 DUP(?)

(4) buf2 DB 7 DUP(5 DUP(55H), 10 DUP(240)) (5) var3 DB LENGTH buf1 (6) pointer DW var1, var2

2. 指令正误判断,对正确指令写出源和目的操作数的寻址方式,对错误指令指出原因(设 VAR1,VAR2 为字节变量,L1 为标号):(3.3) 答:(1)MOV SI,100 ;指令正确,源:立即数寻址,目的:寄存器寻址 (2)MOV BX,VAR1[SI] ;指令正确,源:寄存器相对寻址,目的:寄存器寻址

(3)MOV AX, [BX] ;指令正确,源:寄存器间接寻址,目的:寄存 器寻址

(4)MOV AL, [DX] ;指令错误,DX 不能用作为地址寄存器 (5)MOV BP, AL ;指令错误,类型不一致 (6)MOV VAR1, VAR2 ;指令错误,MOV 指令不能从存储器到存储传送 器 (7) MOV CS, AX ;指令错误,CS 不能用作为目的操作数 (8) MOV DS, 0100H ;指令错误,MOV 指令不能将立即数传送到段寄存器 (9) MOV [BX][SI], 1 ;指令错误,类型不定

(10) MOV AX, VAR1+VAR2 ;指令错误,MOV 指令中不能完成加法运算 (11) ADD AX, LENGTH VAR1 ;指令正确,源:立即数寻址,目的:寄存器寻址

(12) OR BL, TYPE VAR2 ;指令正确,源:立即数寻址,目的:寄存器寻址

(13) SUB [DI], 78H ;指令错误,类型不定

(14) MOVS VAR1, VAR2 ;指令正确,源:隐含寻址,目的:隐含寻址 (15)PUSH 100H ;指令错误,立即数不能直接压入堆栈 (16)POP CS ;指令错误,CS 不能用作为目的操作数 (17)XCHG AX, ES ;指令错误,XCHG 指令中不能使用段寄存器 (18)MOV DS, CS ;指令错误,MOV 指令不能从段寄存器到段寄存 器

(19)JMP L1+5 ;指令正确,段内直接转移

3