初学者,51汇编中的一个子函数调用问题?


我刚刚接触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
asciitabB '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)

    sjmp $就是程序原地踏步啊
    只能说明你的子程序是直接当作一条指令被调用了
  • kenny1983 (2007-1-10 20:01:02)

    呵呵,谢谢各位的帮助。现在明白了