call 问题 监测点10.2
书上原文:call 标号(将当前的ip压栈后,转到标号处执行指令)问题:下面程序执行后,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
答案为何是6,而不是3? 执行call时的ip不是3么? 把3入栈,跳转偏移地址【7】,【7】-【6】 = 0001(16位位移), 这答案的6是怎么来的? 不会是先执行的call得到新的ip值之后 再入栈吧?
入栈的是call后面那条指令的ip 执行call s时,ip已经自动加3移动到下一条指令了,此时保存的ip已经是6H了
页:
[1]