我刚刚接触51汇编,最近看到一段程序,通过keil调试,结果就是不能调用函数,程序居然运行到 sjmp $这个语句去了。程序如下:
result equ 30h
org 0000h
sjmp start
org 0030h
start:mov A,#1Ah
acall bintohex
sjmp $
nop
nop
bintohex:mov dptr,#asciitab
mov B,A
swap A
anl A,#0fh
movc A,@A+dptr
mov result,A
mov A,B
anl A,#0fh
movc A,@A+dptr
mov result+1,A
ret
asciitab
B '0123456789ABCDEF'end

最新回复
kgnn (2007-1-09 23:49:23)
可能是对F10,F11区别不了解吧
F11单步执行会进入子程序
F10单步执行则是运行完子程序返回,再跳到下一行(子程序已经调用完毕)
PS:
:D被当成表情了,发贴时选择禁用Smiles
或者把: D分开
[ 本帖最后由 kgnn 于 2007-1-9 23:54 编辑 ]
pkpioneer (2007-1-10 09:22:07)
只能说明你的子程序是直接当作一条指令被调用了
kenny1983 (2007-1-10 20:01:02)