组成原理
2023-44
题 43 中的 C 程序段在计算机 M 上的部分机器级代码如下,每个机器级代码行中依次包含指令序号、虚拟地址、机器指令和汇编指令。

请回答下列问题。
1)第 20 条指令的虚拟地址是多少?
2)已知第 2 条 jmp 和第 7 条 jge 都是跳转指令,其操作码分别是 EBH 和 7DH,跳转目标地址分别为 0040 1084H、0040 10BCH,这两条指令都采用什么寻址方式?给出第 2 条指令 jmp 的跳转目标地址计算过程。
3)已知第 19 条 mov 指令的功能为 “a[i][j]←10”,其中 ecx 和 edx 为寄存器名,0042 2000H 是数组 a 的首地址,指令中原操作数采用什么寻址方式?已知 edx 中存放的是变量 j,ecx 中存放的是什么?根据该指令的机器码判断计算机 M 采用的是大端还是小端方式。
4)第一次执行第 19 条指令时,取指令过程中是否会发生缺页异常?为什么?
答案
1) 第20条指令的虚拟地址
0040 10B9H
2) 跳转指令的寻址方式
第 2 条 jmp 和第 7 条 jge 都使用相对寻址,第 2 条 jmp 的跳转目标地址是 0040 1079H + 2 + 09H = 0040 1084H。
3) 第19条指令的寻址方式及端序
采用立即数寻址,计算机采用小端方式。
4) 取指令时是否会发生缺页异常
第一次执行第19条指令时,取指令过程中不会发生缺页异常。因为第19条指令位于代码段(虚拟地址004010AE),程序启动时代码段已被加载到内存,访问时页面已驻留。