已知 (sp)=32H (32H)=50H 执行 pop sp
之后(sp)= ?到底是50H呢还是4FH呢?
查询了下指令集:
![](//images0.cnblogs.com/blog/497388/201401/101057403163.jpg)
照此分析,(sp)应该等于4F。
不过用代码,keilc51 4 ,89C51单片实物仿真后发现答案不是4F。。。奇怪的说。。。
一、KEIL4C51 仿真。
仿真代码:
org 0000
jmp main
main:
mov a,#50H
mov 32H,a
mov sp,#32H
nop
pop sp
nop
jmp $
end
结果:
![](//images0.cnblogs.com/blog/497388/201401/101101324413.jpg)
二、89C51单片机上测试。。。
测试代码:
org 0000
jmp main
main:
mov a,#255
mov P0,a
mov a,#50H
mov 32H,a
mov sp,#32H
nop
pop sp
nop
mov a,sp
subb a,#50H
jnz LED7_ON
LED2_ON:
clr c
mov P0.2,c ;发现P0.2亮了。
jmp end_asm
LED7_ON:
clr c
mov P0.7,c
end_asm:
jmp $
end
单片机上发现。。。P0.2口的LED亮了。。额
为毛和指令集说的有出入?
难道是我的测试代码有问题。。。。囧。。。。