一、前言
为啥同学们觉得汇编入门难,C语言入门不难,无非就是C语言比较好理解而已,当你去理解汇编的语法,会发现汇编似乎更简单。
二、查手册
在STC的官方手册都会有这些指令的用法,大家可以先去自己查一下
指令 | 解释 |
---|---|
SETB | 寄存器某一位中置为1 |
CLR | 寄存器某一位置为0 |
JB | 如果寄存器某一位为1,则跳转 |
JNB | 如果寄存器某一位不为1,则跳转 |
AJMP | 短跳转 |
LJMP | 长跳转 |
三、语法解释(实战说明)
(1)根据标志位点灯
说明:假设我有一个变量displ1,它的第0位为1则点灯,为0灭灯
C语言案例:
while(1){
if(displ1 & 0x01){
P10 = 1;
}
else{
P10 = 0;
}
}
汇编案例
TEST1:
JB DISPL1.0 , TEST2 ;判断displ1的第0位是否为1,为1则跳转去test2
CLR P1.0 ;电平控制脚设置为0
AJMP TEST1 ;跳转test1形成循环
TEST2:
SETB P1.0 ;电平控制脚设置为1
AJMP TEST1 ;跳转test1形成循环
查看注释,其实你们就会发现一些东西
a,汇编的执行也是严格从上到下,但是没有花括号那些规定执行域的东西
b,汇编靠什么实现二分支结构?就是类似JB、JNB这些是 1 / 0 就跳转的指令
c,汇编怎么实现循环?靠跳转,只要我跳转回去前面的标号(也就是test1、test2这些)就可以实现了(类似C语言的goto)
四、总结
今天就暂且不进行实例训练,但是我们今天已经学习了汇编的三大结构的常用写法,对于进行51单片机汇编学习已经迈出了一大步,很快就可以感受汇编的快乐了。