当前位置:文档之家› (完整版)微机原理课后习题参考答案

(完整版)微机原理课后习题参考答案

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

(1)01011100B=92D (3)135D=10000111B (5)10110010B=262Q=B2H3、组合型BCD码和非组合型BCD码有什么区别?写出十进制数254的组合型BCD数和非组合型数。

答:组合型BCD码用高四位和低四位分别对应十进制数的个位和十位,其表示范围是0~99;非组合型BCD码用一个字节的低四位表示十进制数,高四位则任意取值,表示范围为0~9。

组合型:254=(001001010100)BCD非组合型:254=(00000010 00000101 00000100)BCD7、计算机为什么采用补码形式存储数据?当计算机的字长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)=20350H9、设一个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=21110H6、指出下列指令中的错误,并改正。

(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,1000HMOV 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)=1020H10、设一个堆栈段共有100H个字节单元,堆栈的起始地址为1250H:0000H,若在堆栈中存有5个字数据,问:(1)栈顶的物理地址多少?(2)栈底的物理地址是多少?(3)当前SS和SP的内容是多少?(4)若弹出两个数据,SP的内容是多少?答:栈底:12600H 栈顶:12600-A=125F6HSS:[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,120MOV BL,64SUB AL,BL计算结果:00111010 OF=0 SF=0 ZF=0 AF=0 PF=1 CF=0(4)程序:MOV AL,-68MOV BL,-72ADD AL,BL计算结果:01110100 有溢出OF=1 SF=0 ZF=0 AF=1 PF=1 CF=117、判断下列指令格式的对与错,并解释错在哪里。

(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,4MOV AL,87MOV DL,ALAND AL,0FHOR AL,30HSHR DL,CLOR DL,30H(AL)= 37H ,(DL)=35H27、试用CMP指令和条件转移指令实现下列判断(1)AX和CX中的内容为无符号数:若(AX)>(CX)则转至BIGGER符号执行;若(AX)<(CX)则转至LESS符号执行。

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

答:(1)CMP AX,CXJA BIGGERJB LESS(2)CMP BX,DXJG BIGGERJL LESS第四章8、按下列的要求写出段定义格式。

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

(2)堆栈段定义100个字节(3)代码段的开始位置给有关段寄存器赋值,在程序结束时能够返回DOS。

答:DATA SEGMENTORG 0000HD1 DB 00H,01H,02H,03H,04HORG 0010HD2 DW 0000H,0010H,0020HORG 0020HD3 DD 3 DUP()DATA ENDSSTACK SEGMENT STACkDB 100 DUPSTACK ENDSCODE SEGMENT CODEASSUME CS:CODE,DS:DATASTART :……CODE ENDSENDS START10、定义数据段,画出数据存储示意图,并说明该数据段共有多少个字节单元。

DATA SEGMENTD1 DB 12,0,’A’,-6D2 DW 1234H,65HD3 DB 3 DUP(3,0,5)DATA ENDS共有17个存储单元如下图:12、定义数据段如下,画出数据存储示意图,并说明变量X1和X2所对应的逻辑地址各是多少?DATA SEGMENT AT 10A0HORG 0010HX1 DB 22,33,ORG $ + 0020HX2 DB ‘AB12CD’DATA ENDS10A00H10A10H10A32HX1逻辑地址:10A0H:0010H X2的逻辑地址:10A0H:0032H13、定义数据段如下,写出执行以下指令后的结果。

相关主题