发 帖  
原厂入驻New
申请华秋企业认证 多层板首单免费打样!
30s提交资料,10分钟通过审核(免费赔付+顺丰包邮)>>立即报名
请问汇编程序中函数返回跑飞问题该怎么解决?
239 汇编程序 函数
分享
汇编程序中函数返回跑飞问题
代码如下:
  ORG  0000H
  LJMP Start
Start: ACALL Init
Main: ACALL TlTr
  LJMP Main
TlTr: MOV  1001H,#03FH ;左移初始值
  MOV  1002H,#0FCH ;右移初始值
  ACALL TLeft
  ACALL TRight
  RET                              //跑飞位置1

TLeft: MOV  1000H,#006H ;循环次数
  MOV  A,1001H
  USH ACC
LLoop: SETB 1.2
  OP  ACC
  MOV  0,A
  CLR  1.2
  RR  A
  USH ACC
  ACALL Delay
  DEC  1000H
  MOV  A,1000H
  JNZ  LLoop
  RET                              //跑飞位置1
TRight: MOV  1000H,#006H ;循环次数
  MOV  A,1002H
  USH ACC
RLoop: SETB 1.2
  OP  ACC
  MOV  0,A
  CLR  P1.2
  RL  A
  PUSH ACC
  ACALL Delay
  DEC  1000H
  MOV  A,1000H
  JNZ  RLoop
  RET                              //跑飞位置1
        ;程序初始化函数
Init: SETB P1.1
  MOV  P0,#0FFH
  CLR  P1.1
  SETB P1.3
  MOV  P0,#00H
  CLR  P1.3
  RET
        ;延时函数
Delay: MOV  R5,#0EAH
  MOV  R6,#060H
DLoop: SETB C
  MOV  A,R6
  SUBB A,#00H
  MOV  A,R5
  SUBB A,#00H
  JC  DEnd
  MOV  A,R6
  DEC  R6
  JNZ  DLoop
  DEC  R5
  LJMP DLoop
DEnd: RET
  END
0
2019-7-23 21:03:08   评论 分享淘帖 邀请回答
9个回答
2019-7-24 07:57:42 评论

举报

2019-7-24 08:03:20 评论

举报

怎么不对称啊,没这个概念,给说一下吧
2019-7-24 08:17:11 评论

举报

没事就不要用压栈出站,压的和出的不一样能不飞吗
2019-7-24 08:25:04 评论

举报

都没有初始化SP就敢CALL???
2019-7-24 08:39:32 评论

举报

2019-7-24 08:44:34 评论

举报

16位地址应该用DPTR:
MOV DPTR,#1001H
MOV 1001H,#03FH在汇编语句里是没有的
2019-7-24 09:03:37 评论

举报

堆栈指针没有设置,肯定飞
2019-7-24 09:22:20 评论

举报

堆栈使用不对称,压栈总数要和出栈总数一样。看你的程序,应该可以不使用堆栈的,看不出你使用堆栈有什么作用。
还有就是楼上说的16位地址的问题,你确定有用到16位地址吗
2019-7-24 14:52:28 评论

举报

只有小组成员才能发言,加入小组>>

915个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /6 下一条

快速回复 返回顶部 返回列表