问题
问答题
假如一个程序的段表如下,其中存在位为1表示段在内存,存取控制字段中w表示可写,R表示可读,E表示可执行。对下面的指令在执行时会产生什么样的结果
段号 | 存在位 | 内存始址 | 段长 | 存取控制 | 其他信息 |
0 | 0 | 500 | 100 | W | |
1 | 1 | 1000 | 30 | R | |
2 | 1 | 3000 | 200 | E | |
3 | 1 | 8000 | 80 | R | |
4 | 0 | 5000 | 40 | R |
(2)STORE R1,[1,20]
(3)LOAD R1,[3,20]
(4)LOAD R1,[3,100]
(5)JMP[2,100]
答案
参考答案:(1)从段表中可读出第0段的存在位为0,表示此段未装入内存,因此产生缺页中断。
(2)从段表中可读出第1段在内存中,但存取控制为R,即只读,而此指令要求写,故访问权限不合法,产生保护性中断。
(3)从段表中可读出第3段在内存中,此指令中段内位移小于段长,存取控制合法,求出其内存地址为8000+20=8020,指令将该单元的内容读到寄存器R1中。
(4)从段表中可读出第3段在内存中,但此指令中段内位移大于段长,产生越界中断。
(5)从段表可知第2段在内存中,此指令中段内位移小于段长,存取控制合法,求出其内存地址为3000+100=3100,指令执行后,跳转到内存单元3100处继续执行。