在某段式存储管理系统中,逻辑地址为32位,其中高16位为段号,低16位为段内偏移量,以下是段表(其中的数据均为16进制): 以下是代码段的内容(代码前的数字表示存放代码的十六进制逻辑地址): 试问: call sin指令的执行过程:先

admin2018-07-17  42

问题  在某段式存储管理系统中,逻辑地址为32位,其中高16位为段号,低16位为段内偏移量,以下是段表(其中的数据均为16进制):

    以下是代码段的内容(代码前的数字表示存放代码的十六进制逻辑地址):

    试问:
call sin指令的执行过程:先将当前PC值入栈,然后在PC内装入目标PC值。请问:哪个值被压入栈了?新的SP指针的值是多少?新的PC值是多少?

选项

答案在调用call sin指令后,PC自增为248,所以逻辑地址248被压入栈。由(2)可知每次入栈时SP指针先减4,因此当前PC值入栈后,SP指针的值为70FF0H—4H—4H=70FE8H,故新的SP指针值为70FE8H,新的PC值为转移指令的目的地址360H。 注意:有同学会问为什么入栈的不是物理地址? 首先段式存储器(页式、段页式也一样)中PC的值一定是逻辑地址,然后取指令时系统才按照逻辑地址根据一定的规则转换为物理地址再去访问内存。所以入栈的是PC的内容,当然就是逻辑地址。

解析
转载请注明原文地址:https://kaotiyun.com/show/TyRi777K
0

最新回复(0)