51单片机汇编入门基础代码-流水灯

51单片机汇编代码-流水灯

一、基础指令集简介

       汇编指令集是由芯片厂商制定的,其实际意义还是1和0。作为最接近硬件的程序语言,它能够帮助我们更容易理解微型计算机的运行原理。当然如果你能够对硬件有所了解,学习它必然是事半功倍的。

1、数据传递指令 mov

MOV A,Rn
Rn指的是通用寄存器R0-R7,将Rn寄存器中的内容放入累加器A中。

MOV A,direct
direct就是指的直接的地址,将该地址内的数据放入累加器A中。

MOV A,#data 
#data为立即数(前面加#用于区分立即数和地址),将立即数送入累加器A中。

有下面历程被使用到:
MOV A,#0FEH
将立即数#0FEH放入累加器A中。第一个参数除累加器A外还可以为任意寄存器。
MOV R2,#7
将立即数7放入寄存器R2中。
MOV P2,A
将A的写入P2端口寄存器,从而控制引脚电平。

2、跳转指令

1.短转移类指令       AJMP addr11     
2.长转移类指令       LJMP addr16     
3.相对转移指令       SJMP rel
它们都用于指令跳转,从当前位置跳转到后面的地址位(一般为自己拟了名字的地址如DELAY:)。(它们的差别在于跳转的范围:LJMP一下能跳64Kb。而AJMP最多只能跳2Kb,而SJMP则最多只能跳256b)

常用的跳转指令还有ACALL
ACALL 使用范围是±2K范围,超出这个范围的调用将会出错,这时可以使用LCALL即长调用语句。

有下面历程被使用到:
ACALL DELAY
跳转到程序中的DELAY处去继续执行。
SJMP DOWN
跳转到程序中的DOWN处去继续执行。

3、位移指令

RL
是左移指令(参加左移的是8个位,也就是一个字节)
RR
是右移指令(参加左移的是8个位,也就是一个字节)

有下面历程被使用到:
RL A
将累加器A中的数据左移一位。

4、条件转移指令

循环转移指令       DJNZ Rn,rel
若寄存器Rn内的内容为0则跳转到rel(自己取的程序地址名)去执行。

有下面历程被使用到:
DJNZ R2,DOWN
若寄存器R2为0则跳转到DOWM去执行。

5、伪指令

是用于对汇编过程进行控制的指令,该类指令并不是可执行指令,不生成机器代码。只用于帮助汇编器提供汇编信息。
  
ORG address
控制汇编程序最终运行在内存的address地址上。
name EQU expression
类似于宏定义,赋予前者另一个名字。

有下面历程被使用到:
ORG 30H
使该汇编程序被下载到目标机内存的30H处。
CLC1 EQU 200
让CLC1字符串拥有200的含义。

二、流水灯汇编源代码

程序源码:

ORG 30H
CLC1 EQU 200
CLC2 EQU 125
MOV R2,#7
MOV A,#0FEH
MOV P2,A
DOWN:   RL A
  ACALL DELAY
  MOV P2,A
  DJNZ R2,DOWN
  MOV R2,#7
UP:  RR A
  ACALL DELAY
  MOV P2,A
  DJNZ R2,UP
  MOV R2,#7
  SJMP DOWN
  
DELAY:  MOV R7,CLC2
DEL1: MOV R6,CLC1
  DJNZ R6,$
  DJNZ R7,DEL1
  RET
END

其中符号$代表当前的指令所在的地址。

基本电路图:在这里插入图片描述
注:该文章主要用于对51单片机汇编语句的入门学习。之后可根据个人需要进行系统性学习。

  • 41
    点赞
  • 268
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值