微机原理期末考题整理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(1)子程序调用
(SP)=1000H,(BX)=468AH, CS:2006处有一指令CALL WORD PTR [BX],其机器码为0FF17H。问调用这条指令后,堆栈0FFEH的内容?
IP
CALL WORD PTR [BX]
该题可参考教材(第三版)第75页的内容,和第76页图3.14.
若用U反汇编你,该指令的形式为:
CS:2006H 0FF17 CALL WORD PTR [BX]
CS:2008H …..... …….
调用指令将返回地址(即调用指令的下一条指令的地址)压入堆栈,并转向子程序入口。
在本题中,子程序入口地址在BX所指出的内存单元中,即468AH。该地址只有两个字节,因此是段内调用。
段间调用要保存CS,IP两个字内容。而断内调用不需要保存CS,只需要保存IP一个字内容。
CALL WORD PTR [BX] 指令的起始偏移地址是2006H,它的机器码0FF17H占两个字节。因此该指令的下一条指令的地址为:CS:2008H。需要把偏移地址2008H 压入堆栈。
堆栈变化情况如上图。0FFEH处为:08H
若为段间调用,则调用指令后堆栈:
IP
CALL FAR WORD PTR [BX]
(2)中断
给定(SP)=0100, (SS)=0300, (PSW)=0240,以及存储单元的内容(00020)=0040, (00022)=0100,在段地址为0900及偏移地址为00A0的单元中有一条中断指令
INT 8。试问:
1)执行INT 8指令后,SP、SS、IP、PSW的内容是什么?
2)栈顶的三个字是什么?
该题可参考教材(第三版)第166页,可屏蔽中断响应的5个步骤:
(1)等待当前指令结束,进入中断响应周期。
(2)从中断控制逻辑获得中断类型号。
(3)当前的PSW、CS、IP内容依次压入堆栈。保护断点状态和地址。
(4)清除PSW中IF和TF位为0
(5)把中断服务程序的入口地址置入IP,CS,进入中断服务程序。
解答:
(1)当前的PSW、CS、IP内容依次压入堆栈
INT 8指令的格式:
0900: 00A0 0CD08 INT 8
0900:00A2 …………
(CS:IP 机器码汇编指令)
(CS段)
该指令占两字节,下一条指令的偏移地址为00A2H。因此要压入堆栈的(CS)=0900, (IP)=00A2H. 当前(PSW)=0240
(SS段)
(2)清除PSW中IF和TF位为0
PSW 内容
(中断后IF,TF 清零)
0 0 0 0 0 0IF D 9TF D 8
D 15D 0
1 00 1 0 0 0 0 0 0
中断前:
0240H 0 0 0 0 0 0IF D 9TF D 8
D 15D 0
0 00 1 0 0 0 0 0 0
中断后:
0040H
(3)中断服务程序的入口地址置入IP,CS
INT 8中断类型号:4*8=32=0020H IP 的地址中断服务程序入口地址的地址:
0000:0020
0000:00210000:0022
0000:0023
CS 的地址
数据段内容:
0021H 0023H
数据段内容(DS 段)
IP
00H 00H DS : disp 0000 : 0020H
0022H 40H 01H CS
中断服务程序的入口地址:(CS)=0100H, (IP)=0040H 因此,答案:
1) 执行INT 8指令后: (SP)=0100H-6=00FAH
(SS)=0300H, (IP)=0040H, (CS)=0100H (PSW)=0040H
2) 栈顶的三个字分别是:
(IP)=00A2H, (CS)=0900H, (PSW)=0240H