下面的程序执行之后,ax中的数值为多少?
内存地址 机器码 汇编指令
1000:0 b8 00 00 mov ax,0
1000:3 e8 01 00 call s
1000:6 40 inc ax
1000:7 58 s:pop ax
CPU执行call
指令时,会进行两部操作:
- 将当前的
IP
或者CS
和IP
压入栈中; - 转移到标号处。
在此题中,CPU在执行call
指令时,IP已经指向了偏移地址为6的指令(IP指向下一条要执行的指令),所以执行完call
之后,会把6压入栈,然后跳转到s标志处开始执行,而s标志处的操作是把栈中的6pop
到ax
中,所以ax
中的值为6。