【发布时间】:2015-06-20 05:52:30
【问题描述】:
第一个问题 关于示例代码运行时会发生什么,哪项陈述是正确的?
1: main PROC
2: mov eax,30
3: push eax
4: push 40
5: call Ex3Sub
6: INVOKE ExitProcess,0
7: main ENDP
8:
9: Ex3Sub PROC
10: pusha
11: mov eax,80
12: popa
13: ret
14: Ex3Sub ENDP
一个。 EAX 在第 6 行将等于 40
b.程序将在第 6 行出现运行时错误而停止
c。 EAX 在第 6 行将等于 30
d。程序将在第 13 行出现运行时错误而停止
第二个问题 关于示例代码运行时会发生什么,哪项陈述是正确的?
1: main PROC
2: push 10
3: push 20
4: call Ex2Sub
5: pop eax
6: INVOKE ExitProcess,0
7: main ENDP
8:
9: Ex2Sub PROC
10: pop eax
11: ret
12: Ex2Sub ENDP
一个。 EAX 在第 6 行将等于 10
b.程序将在第 10 行出现运行时错误而停止
c。 EAX 在第 6 行将等于 20
d。程序将在第 11 行出现运行时错误而停止
1.通过查看这个,我认为 EAX 在第 6 行的末尾仍然等于 30,因为 eax 只是被压入堆栈而不是值的变化
2.由于 LIFO(后进先出),我相信它等于 10。 EAX 等于 10,因为它是最后一个。
这是一个新概念,任何帮助将不胜感激。
【问题讨论】: