微机原理课后习题参考答案 联系客服

发布时间 : 星期六 文章微机原理课后习题参考答案更新完毕开始阅读72873f514693daef5ef73dd5

第一章

2、完成下列数制之间的转换。

(1)01011100B=92D (3)135D=10000111B (5)10110010B=262Q=B2H

3、组合型BCD码和非组合型BCD码有什么区别?写出十进制数254的组合型BCD数和非组合型数。 答:组合型BCD码用高四位和低四位分别对应十进制数的个位和十位,其表示范围是0~99;非组合型BCD码用一个字节的低四位表示十进制数,高四位则任意取值,表示范围为0~9。 组合型:254=(001001010100)BCD

非组合型:254=(00000010 00000101 00000100)BCD

7、计算机为什么采用补码形式存储数据?当计算机的字长n=16,补码的数据表示范围是多少?

答:在补码运算过程中,符号位参加运算,简化了加减法规则,且能使减法运算转化为加法运算,可以简化机器的运算器电路。+32767~ -32768。

9、设计算机字长n=8,求下列各式的[X+Y]补和[X-Y]补,并验证计算结果是否正确。 (1)X=18,Y=89 [X+Y]补=00010010+01011001=01101011B=107D 正确

[X-Y]补=10111001B=00010010+10100111=(-71D)补正确

(2)X=-23,Y=-11 [X+Y]补=11101001+11110101=11011110B=(-34D)补正确

[X-Y]补=11101001+00001011=11110100B=(-12D)补正确

(3)X=18,Y=-15 [X+Y]补=00010010+11110001=00000011B=(3D)补正确

[X-Y]补=00010010+00001111=00100001B=(33D)补正确

(4)X=-18,Y=120 [X+Y]补=11101110+01111000=01100110B=(102D)补正确

[X-Y]补=11101110+10001000=01110110B=(123D)补由于X-Y=-138 超出了机器数范围,因此出错了。

13、微型计算机的主要性能指标有哪些?

答:CPU字长、存储器容量、运算速度、CPU内核和IO工作电压、制造工艺、扩展能力、软件配置。

第二章

2、8086标志寄存器包含哪些标志位?试说明各标志位的作用。

答:进位标志:CF;奇偶校验:PF;辅助进位:AF;零标志:ZF;符号标志:SF;溢出标志:OF。

5、逻辑地址与物理地址有什么区别?如何将逻辑地址转换为物理地址?

答:物理地址是访问存储器的实际地址,一个存储单元对应唯一的一个物理地址。逻辑地址是对应逻辑段内的一种地址表示形式,它由段基址和段内偏移地址两部分组成,通常表示为段基址:偏移地址。

物理地址=段基址*10H+偏移地址。

6、写出下列逻辑地址的段基址、偏移地址和物理地址。 (1)2314H:0035H (2)1FD0H:000AH 答:(1)段基址:2314H;偏移地址:0035H;物理地址:23175H。 (2)段基址:1FD0H;偏移地址:000AH;物理地址:1FD0AH。 8、设(CS)=2025H,(IP)=0100H,则当前将要执行指令的物理地址是多少? 答:物理地址=(CS)*10H+(IP)=20350H

9、设一个16字的数据区,它的起始地址为70A0H:DDF6H(段基址:偏移地址),求这个数据区的首字单元和末字单元的物理地址。

答:首字:70A0*10H+DDF6H=7E7F6H

末字单元地址=起始地址+(字数-1)*2=7E7F6H+(16-1)*2=7E814H。 13、80486CPU内部由哪些主要部件构成?有哪几种工作模式? 答:(1)总线接口单元、指令预取单元、指令译码单元、控制单元,整数运算单元,浮点运算单元,段预存储器管理单元,高速缓冲单元。

(2)实地址模式、保护虚拟地址模拟、虚拟8086模式

14、80486CPU存储器最大可寻址空间是多少?虚拟存储空间是多少?两者有何区别? 答:最大可寻址空间是4GB,虚拟存储空间是64TB。前者为实地址,虚拟存储空间为外部存储管理器。

第三章

4、指出下列指令中的源操作数和目标操作数的寻址方式。

(1)MOV BX,1000H源操作数:立即寻址;目标操作数:寄存器寻址

(2)MOV AL,[BX] 源操作数:寄存器间接寻址;目标操作数:寄存器寻址

(5)MOV [DI+1000H],BX 源操作数:寄存器寻址;目标操作数:寄存器相对寻址 (6)MOV [1000H],CX 源操作数:寄存器寻址;目标操作数:直接寻址 5、设(DS)=2000H、(ES)=2100H、(SS)=1500H、(BX)=0100H、(BP)=0040、(SI)=00A0H、(DI)=0120H,在指令MOV AX,src中,求用下列表示源操作数src的有效地址EA和物理地址PA各是多少?

(1)100H[BX] EA=(100H+0100H)=0200H ; PA=2000*10H+0200H=20200H (2)ES:[BX+DI] EA=0100H+0120H=0220H ;PA=2100*10H+0220H=21220H (3)[BP] EA=0040H ; PA=1500*10H+0040H=15040h

(4)ES:[BX+10H] EA=0100H+0010H=0110H ;PA=21000H+0110H=21110H 6、指出下列指令中的错误,并改正。

(1)MOV BL,30A0H操作数不匹配改:MOV BX,30A0H

(2)MOV 0010H,AL立即数不可以作为目标操作数改:MOV AX,0010H (3)XCHG AL,BX操作数类型不匹配改:XCHG AX,BX

(4)MOV [AX],3456H立即数送入存储器需要说明改:MOV WORDPTR [AX],3456H (5)PUSH AL堆栈以字为操作单元改:PUSH AX

(6)POP CS POP不可以用CS为目标操作数改:POP AX (7)MOV DS,1000H立即数不能直接送入段寄存器改:MOV AX,1000H MOV DS,

AX

(8)MOV [BX],[1000H]存储器不可以相互传送改:MOV AX,[1000H]

MOV [BX],AX

(9)LDS (BX),[1000H]LDS使用时期目标为16位通用寄存器改:LDS BX,[1000H] (10)LEA BX,CX LEA源操作数为存储器改:LEA BX,[CX]

7、已知(AX)=4A0BH,[1020H]单元中的内容为260FH,写出下列每条指令单独执行后的结果。

(1)MOV AX,1020H ;(AX)=1020H (2)XCHG AX, [1020H] ;(AX)=260FH (3)MOV AX,[1020H] ;(AX)=260FH (4)LEA AX,[1020H] ;(AX)=1020H

10、设一个堆栈段共有100H个字节单元,堆栈的起始地址为1250H:0000H,若在堆栈中存有5个字数据,问:

(1)栈顶的物理地址多少?

(2)栈底的物理地址是多少? (3)当前SS和SP的内容是多少?

(4)若弹出两个数据,SP的内容是多少? 答:栈底:12600H 栈顶:12600-A=125F6H SS:[1250H:0000H ] SP: [1250H:00F6H ]

(4)弹出两个数据后,SP内容,00F6+4=00FAH 则,SP:[1250H:00FAH ]

11、编程完成下列程序段,根据运算结果置标志位OF、SF、ZF、AF、PF、CF,并分析程序执行结果是否正确?为什么?(n=8) (2)122-64 (4)-68+(-72) 答:(2)程序:MOV AL,120 MOV BL,64 SUB AL,BL

计算结果:00111010 OF=0 SF=0 ZF=0 AF=0 PF=1 CF=0 (4)程序: MOV AL,-68 MOV BL,-72 ADD AL,BL

计算结果:01110100 有溢出 OF=1 SF=0 ZF=0 AF=1 PF=1 CF=1 17、判断下列指令格式的对与错,并解释错在哪里。 (1)ADD 25H,AX错;目标操作数不可以为立即数 (2)INC BX,1错;INC只有目标操作数

(3)MUL AL,BL错;乘法指令目标操作数是隐含的 (4)SUBB AL,3错;减法指令是SUB (5)DAA AL错;DAA后无操作数

(6)NEG CX,0错;NEG后只有目标操作数 (7)CMP [BX],1000H[BX+SI]对

22、写出下列程序段执行后的结果。 MOV CL,4 MOV AL,87 MOV DL,AL AND AL,0FH OR AL,30H SHR DL,CL OR DL,30H (AL)= 37H,(DL)=35H

27、试用CMP指令和条件转移指令实现下列判断 (1)AX和CX中的内容为无符号数:

若(AX)>(CX)则转至BIGGER符号执行;若(AX)<(CX)则转至LESS符号执行。 (2)BX和DX中的内容为无符号数:

若(BX)>(DX)则转至BIGGER符号执行;若(BX)<(DX)则转至LESS符号执行。 答:(1)CMP AX,CX JA BIGGER JB LESS

(2)CMP BX,DX

JG BIGGER JL LESS

第四章

8、按下列的要求写出段定义格式。

(1)数据段的位置从0E000H开始,在该段中定义的5个字节数据,3个字数据,2双字数据,要求字节数据从偏移地址0000H开始,字数据从偏移地址0010H开始,双字数据从偏移地址0020H开始。

(2)堆栈段定义100个字节

(3)代码段的开始位置给有关段寄存器赋值,在程序结束时能够返回DOS。 答:DATA SEGMENT

ORG 0000H

D1 DB 00H,01H,02H,03H,04H ORG 0010H

D2 DW 0000H,0010H,0020H ORG 0020H

D3 DD 3 DUP() DATA ENDS

STACK SEGMENTSTACk DB 100 DUP STACK ENDS

CODE SEGMENT CODE

ASSUME CS:CODE,DS:DATA START :……

CODE ENDS ENDS START

10、定义数据段,画出数据存储示意图,并说明该数据段共有多少个字节单元。 DATA SEGMENT

D1 DB 12,0,’A’,-6 D2 DW 1234H,65H

D3 DB 3 DUP(3,0,5) DATA ENDS

共有17个存储单元如下图: 0CH 00H 41H FAH 34H 12H 65H 00H