在一个段式存储管理系统中,逻辑地址为32位,其中高16位为段号,低16位为段内偏移,以下是段表(其中的数据均为十六进制,见表7—1)。
问答题 x的逻辑地址为10108,它的物理地址是多少?
【正确答案】正确答案:高1 6位为段号,低16位为段内偏移,则1为段号(对应基址1 1900),0108为段内偏移,则逻辑地址11A08对应的物理地址为基址加段内偏移,即11900+0108=11A08。
【答案解析】
问答题 栈指针的当前地址是70FF0,它的物理地址是多少?
【正确答案】正确答案:同(1)问,7为段号,OFFO为段内偏移,13000+OFF0=13FFO。
【答案解析】
问答题 第一条指令的逻辑地址和物理地址各为多少?
【正确答案】正确答案:逻辑地址240,物理地址为基址加段内偏移,即10000+240=10240。
【答案解析】
问答题 pushx指令的执行过程:将SP(堆栈寄存器)减4,然后存储x的值。试问x被存储在什么地方(物理地址)?
【正确答案】正确答案:在(2)中,知道SP对应物理地址为13FFO,减4之后为13FEC,即x存储地址为13FEC。
【答案解析】
问答题 call sin指令的执行过程:先将当前PC值入栈,然后在PC内装入目标PC值。试问哪个值被压入栈了?新的栈指针的值是多少?新的PC值是多少?
【正确答案】正确答案:PC在调用call sin命令之后,自增为248,所以逻辑地址248被压入栈。由第(4)问我们知道,每次入栈栈指针是减少4,那么将当前PC值入栈后,则栈指针的值为70FF0—4—4=70EE8。即新的栈指针值为70FE8,新的PC值为360。
【答案解析】
问答题 语句“mov r2,4+(sp)”的功能是什么?
【正确答案】正确答案:70FE8 (sp) +4=70FEC,即x的逻辑地址,所以功能是访问x的值,即sin函数的输入参数。 注意:mov指令是汇编里使用最频繁的指令,它相当于高级语言中的赋值语句。指令格式如下: mov reg/mem, reg/mem/lmm 该指令的功能:把源操作数(第二操作数)的值传给目的操作数(第一操作数)。指令执行后,目的操作数的值被改变,而源操作数的值不变。
【答案解析】解析:本题需要注意题目所问的地址是逻辑地址和物理地址,PC值和栈指针值指的都是逻辑地址,不是其物理地址,这也可以从第(2)问得知。