在某段式存储管理系统中,逻辑地址为32位,其中高16位为段号,低16位为段内偏移量,以下是段表(其中的数据均为16进制):以下是代码段的内容(代码前的数字表示存放代码的十六进制逻辑地址):
问答题 x的逻辑地址为10108H,它的物理地址是多少?要求给出具体的计算过程。
【正确答案】正确答案:高16位为段号,低16位为段内偏移,则l为段号(对应基地址为11 900H),0108H为段内偏移量,则逻辑地址10108H对应的物理地址为11900H+0108H=11A08H。
【答案解析】
问答题 若栈指针SP的当前值为70FF0H,push x指令的执行过程:先将SP减4,然后存储x的值。试问存储x的物理地址是多少?
【正确答案】正确答案:SP的当前值为70FFOH中,先减4H后得70FECH,7为段号,0FECH为段内偏移量,则对应的物理地址为13000H+0FECH=13FECH,故存储x的物理地址为13FECH。
【答案解析】
问答题 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的内容,当然就是逻辑地址。
【答案解析】
问答题 “mov r2,4+(SP)”的功能是什么?(假设指令集与x86系列CPU相同)
【正确答案】正确答案:70FE8(sp)+4=70FECH,即x在栈中的逻辑地址(call sin之前刚被push进去的),故其功能是把x的值送入寄存器2,作为sin函数的参数。
【答案解析】