问答题 假如一个程序的段表见下表,其中存在位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
(1)STORE R1,[0,70]。
(2)STORE R1,[1,20]。
(3)LOAD R1,[3,20]。
(4)LOAD R1,[3,100]。
(5)JMP[2,100]。
【正确答案】在执行指令的过程中,如果指令中包含有地址部分,则必须先进行逻辑地址到物理地址的转换。在地址转换过程中还要进行越界检查和存取控制权限的检查,只有在地址不越界、访问方式合法、形成物理地址后,才能去完成指令规定的操作。 (1)对于指令STORE R1,[0,70],从段表的第0号项可以读出第0段的存在位为0,表示段未装入内存,因此地址变换机构将产生缺段中断,请求系统将其调入内存。 (2)对于指令STORE R1,[1,20],从段表的第1项可以看出,虽然指令中的逻辑地址合法,段也已经在内存,但本指令对内存的访问方式为写操作,与存取控制字段(只读)不符,故硬件将产生保护性中断信号。 (3)对于指令LOAD R1,[3,20],从段表的第3项可以读出第3段的存在位为1,内存始址为8000,段长为80,存取控制为R,因此逻辑地址合法,访问方式合法,形成物理地址8020后,指令将把该单元的内容读到寄存器R1中。 (4)对于指令LOAD R1,[3,100],从段表可以知道第3段在内存中,但指令的逻辑地址中段内位移100超过了段长80,产生了越界中断。 (5)对于指令JMP[2,100],从段表第2项可以读出第2段的存在位为1,内存始址为3000,段长为200,访问权限为E,因此逻辑地址与访问方式都合法,形成物理地址3100,指令执行后,将跳转到内存单元3100处继续执行。
【答案解析】