←上一题上题中 C 程序段在计算机 M 上的部分机器级代码如下,每个机器级代码行中依次包含指令序号、虚拟地址、机器指令和汇编指令。 for (i = 0; i < 24; i++) 1 00401072 C7 45 F8 00 00 00 00 mov[ebp-8], 0 2 00401079 EB 09 jmp 00401084h 3 0040107B 8B 55 F8 mov eax, [ebp-8] ... ... ... 7 00401088 7D 32 jge 004010bch for (j = 0; j < 64; j++) 8 0040108A C7 45 FC 00 00 00 00 mov[ebp-4], 0 ... ... ... a[i][j] = 10; ... ... ... 19 004010AE C7 84 82 00 20 42 00 0A 00 00 00 mov[ecx+edx*4+00422000h], 0Ah 20 ... ... 请回答下列问题。 (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 条指令时,取指令过程中是否会发生缺页异常?为什么?