本来运行正常的汇编程序,为什么加了一个中断分支子程序就不能运行?
2010年10月09日 12:53 发布者:lifs
RMRG1: CLR EA MOV DFLG,#8FH LCALL DSPL_FLG
LCALL DLY1S
RM10: MOV R3,#50
MOV R4,#2
RM14: MOV R6,#5
ACALL RMK0
JZ RM13
LCALL DLY0S
MOV R4,#2
DJNZ R3,RM14
AJMP RMRG0 NOP
NOP
LJMP ERR
RM13: DJNZ R4,RM14
MOV R0Tr,#R0T
MOV R1Tr,#R1T
MOV DFLG,#0EH LCALL DSPL_FLG
LCALL DLY1S
AJMP RMRG0
NOP
NOP
LJMP ERRRMK0: JNB P3.2,RM11B
MOV P1,#0FFH
MOV A,P1
ANL A,#0E0H
SWAP A
RR A
CLR C
SUBB A,R6
RET
RM11B: MOV R3,#100 RM11B1: LCALL DLY0S
JB P3.2,RM10
DJNZ R3,RM11B1
AJMP RMRG0
NOP
NOP
LJMP ERR
网友评论
embcom010 2010年10月18日
中断分支子程序的主要影响有:
1、运行时序。
2、R1~R4的冲突。
3、堆栈的影响。
仔细分析一下吧。
中断分支子程序的主要影响有:
1、运行时序。
2、R1~R4的冲突。
3、堆栈的影响。
仔细分析一下吧。
MCU_NEWER 2010年11月08日
汇编相对于C语言来说,读起来较难入脑,导致思绪不能快速清晰的建立起来。
因此,如要用汇编来写程序,分段落、加注释、排版对齐都是很必要的。
一行只写一个语句,各子程序的功能是什么都要注释明白。
不同的寄存器又是用来储存什么量的?要注释。
程序调用会否导致某些变量的值发生意外的改变呢?
程序调用前后是否要做、是否有做必要的现场保护、还原呢?
变量的取值是否恰当呢?特别是控制程序走向的变量,有时可能根本不可能变化达到某一个界限值。
时序是否恰当呢?
有些程序段又没写出来,也不知它们会对哪些变量产生什么影响。
如果可以的话,请把程序的目的写出来,别人就更容易明白了。
汇编相对于C语言来说,读起来较难入脑,导致思绪不能快速清晰的建立起来。
因此,如要用汇编来写程序,分段落、加注释、排版对齐都是很必要的。
一行只写一个语句,各子程序的功能是什么都要注释明白。
不同的寄存器又是用来储存什么量的?要注释。
程序调用会否导致某些变量的值发生意外的改变呢?
程序调用前后是否要做、是否有做必要的现场保护、还原呢?
变量的取值是否恰当呢?特别是控制程序走向的变量,有时可能根本不可能变化达到某一个界限值。
时序是否恰当呢?
有些程序段又没写出来,也不知它们会对哪些变量产生什么影响。
如果可以的话,请把程序的目的写出来,别人就更容易明白了。
MCU_NEWER 2010年11月08日
加注释不只是为了给别人看,也可以方便自己日后的阅读、修改、升级,也就是方便维护了。
事实上本人没编过什么大程序,也就只编过几个小小的程序,程序阅读能力不好,所以也没细心分析。楼上发表的是部分心得,仅供参考,希望有助于楼主发现问题所在。
加注释不只是为了给别人看,也可以方便自己日后的阅读、修改、升级,也就是方便维护了。
事实上本人没编过什么大程序,也就只编过几个小小的程序,程序阅读能力不好,所以也没细心分析。楼上发表的是部分心得,仅供参考,希望有助于楼主发现问题所在。
szw0117 2010年11月08日
学习了
学习了
斑头雁 2010年11月15日
加注释不只是为了给别人看,也可以方便自己日后的阅读、修改、升级,也就是方便维护了。
事实上本人没编过什么大程序,也就只编过几个小小的程序,程序阅读能力不好,所以也没细心分析。楼上发表的是部分心得,仅 ...
MCU_NEWER 发表于 2010-11-8 20:27 http://www.eechina.com/images/common/back.gif
同意,经验之谈。
加注释不只是为了给别人看,也可以方便自己日后的阅读、修改、升级,也就是方便维护了。
事实上本人没编过什么大程序,也就只编过几个小小的程序,程序阅读能力不好,所以也没细心分析。楼上发表的是部分心得,仅 ...
MCU_NEWER 发表于 2010-11-8 20:27 http://www.eechina.com/images/common/back.gif
同意,经验之谈。
zls261976514 2011年01月17日
加注释不只是为了给别人看,也可以方便自己日后的阅读、修改、升级,也就是方便维护了。
事实上本人没编过什么大程序,也就只编过几个小小的程序,程序阅读能力不好,所以也没细心分析。楼上发表的是部分心得,仅 ...
MCU_NEWER 发表于 2010-11-8 20:27 http://www.eechina.com/images/common/back.gif养成良好的编程习惯
加注释不只是为了给别人看,也可以方便自己日后的阅读、修改、升级,也就是方便维护了。
事实上本人没编过什么大程序,也就只编过几个小小的程序,程序阅读能力不好,所以也没细心分析。楼上发表的是部分心得,仅 ...
MCU_NEWER 发表于 2010-11-8 20:27 http://www.eechina.com/images/common/back.gif养成良好的编程习惯
奋斗六号 2011年02月05日
很给力
很给力
gsxpop 2011年02月15日
写得太不清楚了!!
写得太不清楚了!!
wongfu72 2011年02月15日
学习了,
学习了,
suwxdsp@163.com 2011年04月18日
汇编不加注释,过一些天后自己都看不懂的。
汇编不加注释,过一些天后自己都看不懂的。
klyzh2003 2011年04月20日
没有注释的汇编程序无异于天书!
没有注释的汇编程序无异于天书!
alpha321 2011年09月17日
楼上各位都说得很有道理,特别是MCU_NEWER,发帖能遇上这么热心的朋友不能不说是楼主的造化,可要好好珍惜呀。以后别发这种少头没尾的帖子了。
我看了看程序,其中楼主没有指出所说的分支,但这里有一个明显的问题,在RM14标记下,有个调用“ACALL RMK0”,而在RMK10中又有一个直接跳转到RM10的“JB P3.2, RM10”,RM10又在RM14的前边。这样反复调用多次,堆栈就会溢出。
楼上各位都说得很有道理,特别是MCU_NEWER,发帖能遇上这么热心的朋友不能不说是楼主的造化,可要好好珍惜呀。以后别发这种少头没尾的帖子了。
我看了看程序,其中楼主没有指出所说的分支,但这里有一个明显的问题,在RM14标记下,有个调用“ACALL RMK0”,而在RMK10中又有一个直接跳转到RM10的“JB P3.2, RM10”,RM10又在RM14的前边。这样反复调用多次,堆栈就会溢出。
pcbkey 2015年02月07日
支持一下
支持一下
写清楚点啊