(9分)43题的C语言代码,对应的机器级代码如下,请回

(9分)43题的C语言代码,对应的机器级代码如下,请回答问题。

for(int i=0;i<24;i++)
1   00401070     C7...     mov[ebp-8],0
2   00401079     EB 09   jmp 00401084h
3   0040107B     8B 55 F8   mov eax,[ebp-8]
...  ...                    ...              ...
7   00401088     7D32    jpe 004010bch
for(int j=0;j<64;j++)
8   0040108A     C7 45...      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的操作码是 EBH,它的转移目标地址是00401084h。第7条指令jge的操作码是7DH,它的转移目标地址是 004010bch。这两条指令分别采用什么寻址方式?请给出jmp 指今的转移目标地址计算过程

(3)第19条指令,实现了adll-10该指今的源操作数采用什么寻址方式?已知edx 存放的值,ecx存放的是什么?该系统采用大端还是小端存储?

(4)第一次取第19条指令时,是否发生缺页?为什么?

答案

(1)第20条指令的虚拟地址是 004010B9h (1分)

(2)jmp 指今采用相对寻址《(1分)

ige 指今采用相对寻址《1分)

执行jmp指令时,程序计数器PC指向jmp指令的后一条指令,即0040107Bh。jmp 指令的转移目标地址计算过程为 0040107Bh+09h = 00401084h (1分)

(3)源操作数采用立即寻址(1分)

ecx存放的值 =i64*4 =256 (1分)

系统采用小端存储 (1分)

(4)没有发生缺页(1分)

第19条指令的页号是00401h,第1条指令的页号也是00401h。刚开始访问第1条指令时,就会把页面00401h 调入内存。之后当第一次访问到第19条指令时,页面已经在内存中,因此不会发生缺页。 (2分)

注:第2小问,jmp、jge指令的寻址方式,如果答“偏移导址”,可能也会给分

偏移寻址

题目信息

题号:6896
题型:简答题
知识点:408考研
难度:普通