微机原理期末考题整理

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档