登录
首页 单片机论坛
回帖 发帖
正文

主题:求助!!各位大哥我新写的程序段,还请高人指点!!

点击:1021 回复:7

要求:把长度为10H的字符串从内部RAM的输入缓冲区inbuf向设在外部RAM的输出缓冲区outbuf进行传送,一直进行到遇见回车ODH或整个字符送完毕。
程序:
MOV   R0,#inbuf
MOV   R1,#outbuf
MOV   R7,#10
LOOP:MOV   A,@R0
        PUSH   A
        MOV   A,#0DH
        SUBB   A,#0DH
        INC   R0
        JZ   LOOP1
        MOVX   @R1,A
        INC   R1
         DJNZ   R7,LOOP
LOOP1:END
各位大侠,请多多指教,我是新学的菜鸟,没什么设备,要是那位有空了可否帮我试一下看可以汇编出来不,小弟谢过了!!!!
06-02-17 06:52
MOV   R0,#inbuf
MOV   R1,#outbuf
MOV   R7,#10
LOOP:MOV   A,@R0
        PUSH   A
        MOV   A,#0DH
        SUBB   A,#0DH
        INC   R0
        JZ   LOOP1
        POP   A
        MOVX   @R1,A
        INC   R1
         DJNZ   R7,LOOP
LOOP1:END
早上太急了,忘了POP出栈了!!:)表情
06-02-17 09:20
今天有点空,帮你改改.
MOV   R0,#inbuf
MOV   R1,#outbuf
MOV   R7,#10                 ;这里是10个字符,不是10H(15个字符)
LOOP:MOV   A,@R0
        PUSH   ACC
        SUBB   A,#0DH
        JZ   LOOP1
        POP   ACC
        MOVX   @R1,A
        INC   R0
        INC   R1
        DJNZ   R7,LOOP
LOOP1:END
06-02-17 10:09
3楼的也受了顶楼的影响,在“JZ LOOP1”没有恢复堆栈,我极力反对这样来传递数值!我记得好象给你修改过一个相似的例子,哎,没仔细看我的回复,还在用POP A,给个标准答案吧:)
MOV R0,#INBUF
MOV R1,#OUTBUF
MOV R7,#10H
LOOP: MOV A,@R0
CJNE A,#0DH,LOOP1
AJMP LOOP2
LOOP1: MOVX @R1,A
INC R0
INC R1
DJNZ R7,LOOP
LOOP2: END
06-02-17 10:50
突然觉得这里好不合理,顶楼的一个劲在问问题,而我一个劲的在解答,我的金钱和经验值都比顶楼的低,过分:)
06-02-17 10:58
刚要下,突然又想起一件事,楼上的程序在减之前都没 CLR C。哎,不来了,再也不来这里了
06-02-17 11:06
呵呵,只顾改执行段的程序程序结束后没有出栈,失误!当初在想其实这段程序不用栈传递数据直接判断呢.
06-02-17 11:36
多谢了!!!这里我用的堆栈不是在传递数据,只是保存了一下,不知道可以不???哪天上午写的太急了,很多都不是很好,忘了清零了,真是不好意思,这种小儿科的失误还要让你指出来!!
另外你说的你没有我的等级和经验高我就不知道怎么回事了,是不是你的单片机技术太好了:)。只有我这种菜鸟才有经验积累:)!!!表情
06-02-19 20:58

工控新闻

更多新闻资讯