微机原理课后习题答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.3 微型计算机采用总线结构有什么优点?
解:采用总线结构,扩大了数据传送的灵活性、减少了连接。而且总线可以标准化,易于兼容和工业化生产。
2.6 IA-32结构微处理器支持哪几种操作模式?
解:IA-32结构支持3种操作模式:保护模式、实地址模式和系统管理模式。操作模式确定哪些指令和结构特性是可以访问的。
2.14 8086微处理器的总线接口不接有哪些功能?请逐一说明。
解:总线接口单元(BIU)负责与存储器接口;执行单元(EU)执行各种操作。BIU主要由段寄存器、指令指针、加法器(形成20位地址)和预取的指令流队列等组成。
2.15 8086微处理器的总线接口不见由哪几部分组成?
解:8086微处理器中的总线接口单元(BIU)负责CPU与储存器之间的信息传送。具体地说,BIU既负责从内存的指令部分取出指令,送至指令队列中排队(8086的指令队列有6个字节,而8088的指令队列只有4个字节);也负责传送执行指令时所需的操作数。执行单元(EU)负责执行指令规定的操作。
2.16 段寄存器CS=1200H,指令指针寄存器IP=FF00H,此时,指令的物理地址为多少?解:指令的物理地址=12000h+FF00H=21F00H
2.17 8086微处理器的执行部件有什么功能?由哪几部分组成?
解:8086微处理器的执行部件负责指令的执行。它主要由算术逻辑单元、标志寄存器和通用寄存器等部分组成。
附:8086CPU从功能上分包括几部分,各有什么功能?
3.3 写出下指令中内存操作数的所在地址。
(1)MOV AL,[BX+10]
(2)MOV [BP+10],AX
(3)INC BYTE PTR[SI+5]
(4)MOV DL,ES:[BX+SI]
(5)MOV BX,[BP+DI+2]
解:(1)数据段BX+10单元
(2)堆栈段BP+10单元
(3)数据段SI+5字节单元
(4)附加段(ES段)BX+SI单元
(5)堆栈段BP+DI+2单元
3.4 判断下列指令书写是否正确。
(1)MOV AL , BX (错,AL与BX数据宽度不同)
(2)MOV AL , CL (对)
(3)INC [BX] (错,因为不明确是增量字节还是字)
(4)MOV 5, AL (错,立即数不能作为目的操作数)
(5)MOV [BX],[SI] (错,因为不明确要传送的是字节还是字)
(6) MOV BL,0F5H (对)
(7) MOV DX,2000H (对)
(8)POP CS (错,CS不能作为POP指令的操作数)
(9)PUSH CS (错,CS不能作为PUSH指令的操作数)
3.5 设堆栈指针SP的初值为1000H,AX=2000H,BX=3000H,试问:
(1)执行指令PUSH AX后,SP的值是多少?
(2)再执行PUSH BX及POP AX后,SP、AX和BX的值是多少?
解:(1)SP=0FFEH
(2)SP=0FFEH,AX=3000H,BX=3000H
3.6 想要完成把[3000H]送[2000H]中,用指令:MOV [2000H],[3000H] 是否正确?如果不正确,应该用什么方法实现?
解:不正确。应为:MOV BL,200
SUB BL,AL
3.15 设DS=2100H,SS=5200H,BX-1400H,BP=6200H,说明下面两条指令所进行的具体操作:MOV BYTE PTR[BP],200
MOV WORD PTR[BX],2000
解:前一条指令时把立即数(应是字节)200,传送至堆栈段(BP的默认段)偏移量由BP 规定的字节单元,地址为:52000H+6200H=58200H。
第二条指令时把立即数2000,传送至数据段(BX的默认段)偏移量由BX规定的字单元,地址为:21000H+1400H=22400H。
3.16 使用堆栈操作指令时要注意什么问题?传送指令和交换指令在涉及内存操作数时应该分别要注意什么问题?
解:使用堆栈指令可以把内存单元作为一个操作数(从内存到内存)。但堆栈固定在堆栈段且只能由SP指向。且堆栈操作要修改堆栈指针。MOV指令不能实现内存单元间的数据传送。XCHG指令时交换,有一个操作数必须是寄存器。
3.17 下面这些指令中哪些是正确的?哪些是错误的?若是错误的,请说明原因。
(1) XCHG CS,AX (错误,CS不能交换)
(2) MOV [BX],[1000H ] (错误,MOV指令不能在内存间传送)
(3)XCHG BX,IP (错误,IP不能交换)
(4)PUSH CX (错误,CS可以作为PUSH指令的操作数)
(5)POP CX (错误,CS可以作为POP指令的操作数)
(6)IN BX,DX (错误,IN指令的目的操作数时累加器)
(7)MOV BYTE[BX],1000 (错误,目的操作数是字节单元)
(8)MOV CS,[1000] (错误,CS不能作为MOV指令的目的操作数)
3.22 用普通运算指令执行BCD码运算时,为什么要进行十进制调整?具体地讲,在进行BCD码加、减、乘、除运算时,程序段的什么位置必须加上十进制调整指令?
解:因为8086指令把操作数作为二进制数进行二进制运算,要得到正确的BCD结果,需要进行调整。在加、减、乘法指令之后加上BCD调整指令,而在除法指令之前先用BCD 调整指令再用除法指令。
3.30 设当前SS=2010H,SP=FE00H,BX=3457H,计算当前栈顶地址为多少?当执行PUSH BX指令后,栈顶指令和栈顶两个字节的内容分别是什么?
解:当前的栈顶为:20100H+FE00H=2FF00H。执行PUSH BX后,栈顶为2FF00H-2=2FDFE,而2FF00H中的内容为57H,2FDFF中的内容为34H。
4.1 在下列程序运行后,给响应的寄存器及存储单元填入运行的结果:
MOV AL,10H
MOV CX,1000H
MOV BX,2000H
MOV [CX],AL
XCHG CX,BX
MOV DH,[BX]
MOV DL,01H
XCHG CX,BX
MOV [BX],DL
HLT
解:寄存器及储存单元的内容如下:
AL=10H
BL=00H
BH=20H
CL=00H
CH=10H
DL=01H
DH=10H
(1000H)=10H
(2000H)=01H
4.2 要求同4.1,程序如下: