当前位置:编程学习 > 汇编语言 >>

单片机初学者,求助汇编程序练习。

主要是数据的传送。如将00H-0FH 16个数据送往内部RAM30H-3FH 再转送内部RAM40H-4FH再送往外部4800H-480FH在外部再次送往5800H-580FH最后送回内部RAM50H_5FH 难道这16个数据要一条条用mov写出来吗。。。那岂不是很多条有简单方法没?求高手编一个给我看看。。。跪求
追问:...我害怕做错。内部传送得第一步编译个给我看看啊哥我刚学啊。我把分给你行不o(╯□╰)o
答案:START:MOV A, #00H    //欲传送的数据开始
      MOV R0,#30H  //欲传送的地址入口
      MOV R7,#10H  //R7存放数据个数10个
      MOV A,@R0    //数据开始传送到指定地址
      INC R0             //地址加1
          INC A               //数据加1
          DJNZ R7,START//是否传送完0F个数据,否则转到start,是则顺序执行,进行下一步传送
again1: MOV R0,#30H   //数据存放处 
        MOV  R1,#40H   //欲传送的地址入口
        MOV R7,#10H  //数据个数
        MOV @R0,A   //取数据
        MOV A,@R1    //数据开始传送到指定地址
        INC R1              //地址加1
              INC R0               //数据地址加1
              DJNZ R7,again1//是否传送完0F个数据,否则转到again1,是则顺序执行,进行下一步传送
again2: MOV R0,#40H     //数据存放处 
	MOV DPTR,#4800H //欲传送的地址入口
        MOV R7,#10H     //数据个数
        MOV @R0,A       //取数据
        MOV A,@DPTR     //数据开始传送到指定地址
        INC DTPR        //地址加1
              INC R0          //数据地址加1
              DJNZ R7,again1//是否传送完0F个数据,否则转到again2,是则顺序执行,进行下一步传送
again3: MOV DPTR,#40H     //数据存放处 
	MOV DPTR,#4800H //欲传送的地址入口
        MOV R7,#10H     //数据个数
        MOV @R0,A       //取数据
        MOV A,@DPTR     //数据开始传送到指定地址
        INC DTPR        //地址加1
             INC R0          //数据地址加1
             DJNZ R7,again3//是否传送完0F个数据,否则转到again3,是则顺序执行,进行下一步传送
again4:......
       ......
       ......
   不想写了 反正这就是大概的过程

无非就是取数据,取欲传送的地址,然后存数据,然后地址加1,继续传送。直到10H个数据传完。
要学会直接寻址,间接寻址的用法就OK
其他:你说的一条一条的用mov,movc,movx指令也行的通,但是方法比较笨,简单一点的就是用循环,每次传输用一个十六次循环来实现,每次循环让地址和数据自动加一,INC指令。至于怎么实现十六次循环,我就不复述了,也很简单,其他的应该没有什么更好的方法了 

上一个:汇编小程序求源代码。。。
下一个:32位汇编如何寻址?16位是,段地址*16+偏移地址,那32呢?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,