检测点10.4
下面的程序执行后,ax中的数值为多少
内存地址 机器码 汇编指令
1000:0 b8 06 00 mov ax, 6
1000:2 ff d0 call ax
1000:5 40 inc ax
1000:6 mov bp, sp
add ax,
答案是 ax=0BH
当时第一时间没有看明白,觉得没有定义栈段,sp的内容是多少我不知道,实际上默认sp为0;
call ax后,将sp-2=fffe,将ip=5入栈;此时ss:=5
然后错误的以为bx是和bp联系在一起的,实际上是和ss联系在一起的,所以就是ss:。
mov bp,sp
add ax,
这句话可以修改为
pop bx
add ax,bx
效果是一样的 看了你的分析,明白了{:7_146:} 我想,sp是多少并不重要,默认也不一定是0,重要的是 sp 指向栈顶的那个内存单元址里存的数据。 wuyantao 发表于 2018-8-29 21:47
我想,sp是多少并不重要,默认也不一定是0,重要的是 sp 指向栈顶的那个内存单元址里存的数据。
是的,刚学的时候会忽略压栈要sp自减这个事情
页:
[1]