什么是汇编指令呢?汇编指令利用助记符来表示计算机的指令称之为汇编指令:注意用二进制数表示的指令称之为机器指令;事实上cpu只能执行二进制机器语言,但是用二进制语言编写语言又非常的麻烦且困难,所以出现了使用助记符来代表二进制机器语言
汇编指令/汇编语句的格式:
标号 : 助记符 【操作码】 【操作数】 【注释】
MAIN : MOV A,#20H;将立即数20H送入累加器A中
8051内核能用作间址寄存器的有3个:
@Ri(R0 , R1)访问内部RAM
@DPTA访问外部RAM
(计算机编程中,数据的传送方式是从右边传到左边的)
指令中参与运算的数据称为源操作数,运算的结果称为目标操作数(通常使用源操作数的寻址方式)
8051汇编常用的伪指令:
伪指令不是cpu的指令,而是用来控制编译器的命令
(1)ORG(16bit)
用来指定开头的起始地址(开始执行的地址)程序段或者数据段
格式:
标号 : ORG 16bit绝对地址
标号是可选的 ORG 0040H;指定程序的起始地址为0040H,从0040H开始存放
(2)END
用来结束原程序的编译,(指令END后面的程序不会再进行编译 )
注意:汇编程序必须由END指令结束
(3)EQU(常用的通用指令)
用来数据定义,端口定义,常量定义
格式:
标识符 EQU 数值(8bit或16bit)------将数值的值赋给标识符
举例:定义KEY端口
KEY_PORT EQU P1
KEY_PORT就是1
TABT EQU 1000H (TABT的值为1000H)
(4)DB
用来定义字节数据表格,可用ORG来指定该表格的起始地址
格式:
标号 : DB 数据1,数据2.......数据n
TABLE : DB 1,2,9,16,25,36,49,64,81
举例:该表格的起始地址为0040H,则定义0~9的平方值
ORG 0040H
TABLE : DB 1,2,9,16,25,36,49,64,81
注意多个数据中要用“ , ”隔开 (DB与DW不要混肴)
8051可寻址的方式有2种:
1,使用位寻址
2,使用字节地址,位序号
8051中多字节数据是按大端格式存储的(低地址存放高字节,高地址存放低字节)
(5)DW
用来在ROM空间中定义一个16bit(每一位占用2个字节)的数据表格(与DB相似)
格式:
标号 : DW 数据1,数据2.......数据n
ORG 3000H
TAB2 : DW 1234H , 5678H
(6)BIT(bit)
可用来定义信号引脚,相当于C语言中的sbit
格式:
标识符 BIT 位地址
FLAG BIT 10H; 把位地址为10H的二进制位取名为FLAG
举例:定义LED驱动引脚
LED BIT P1.0;LED的引脚为P1.0
ASM51还支持伪指令:CODE(定义ROM单元) DATA(定义内部RAM单元)
PADTA(定义外部低256单元RAM) XDATA(定义外部RAM单元)
BDATA(定义位寻址中RAM单元) IDATA(定义间接寻址内部RAM单元)
注意:这些伪指令只能在8051中使用,且只能用来定义地址
(建议使用EQU伪指令,因为它是通用的)
说明:
可位寻址是指程序员可以直接对寄存器的每一位进行操作
不可位寻址是指程序员不可以对寄存器的某个位进行操作,如果要修改必须要将寄存器的整个进行修改