1 语言
1.1 汇编语言
汇编语言是能够利用单片机所有特性直接控制硬件的唯一程序,直接使用CPU的指令系统和寻址方式,从而得到占用空间小,执行速度快的高质量程序。对于一些直接控制硬件的场合,汇编语言是必不可少的。
汇编语言不是一种结构化的程序设计语言,对于复杂的单片机应用系统,编写效率很低
1.2 机器语言
机器语言是计算机唯一能识别的语言,用汇编语言或高级语言编写的程序(源程序)最终都必须翻译成机器语言的程序(目标程序),计算机才能够识别
2 指令
2.1 指令的概念
指令是指挥计算机执行某种操作的命令
一条指令可以用两种语言形式表达,即机器语言指令和汇编语言指令
-
机器语言指令用二进制代码表示,称指令码,又称机器码,计算机能够直接识别并加以分析和执行
-
汇编语言指令用助记符表示,便于程序员编写和阅读,但不能为计算机识别和执行,必须翻译成机器语言指令
把汇编语言编写的源程序翻译成机器语言指令的过程称为汇编
2.2 80C51常见指令助记符
2.2.1 数据传送类
-
MOV:move;对内部RAM和特殊功能寄存器SFR的数据进行传送
-
MOVC:move code;读取程序存储器数据表格的数据传送
-
MOVX:move external RAM;对外部RAM的数据传送
-
XCH:exchange;字节交换
-
XCHD:exchange low-order digit;低半字节交换
-
PUSH:push into stack;入栈
-
POP:pop from stack;出栈
2.2.2 算数运算类
-
ADD:addition;加法
-
ADDC:add with carry;带进位加法
-
SUBB:subtract with borrow;带借位减法
-
DA:decimal adjust;十进制调整
-
INC:increment;加1
-
DEC:decrement;减1
-
MUL:multiplication;乘法
-
DIV:division;除法
2.2.3 逻辑运算类
-
ANL:and logic:与
-
ORL:or logic;或
-
XRL:exclusive-or logic;异或
-
CLR:clear;清零
-
CPL:complement;取反
-
RL:rotate left;循环左移
-
RLC:rotate left through the carry flag;带进位循环左移
-
RR:rotate right;循环右移
-
RRC:rotate right through the carry flag;带进位循环右移
-
SWAP:swap;低四位与高四位交换
2.2.4 控制转移类
-
ACALL:absolute subroutine call;子程序绝对调用
-
LCALL:long subroutine call;子程序长调用
-
RET:return from subroutine;子程序返回
-
RETI:return from interruption;中断返回
-
AJMP:absolute jump;绝对转移
-
LJMP:long jump;长转移
-
SJMP:short jump;短转移
-
JMP:jump;转移
-
CJNE:compare jump if not equal;比较不相等则转移
-
DJNZ:decrement jump if not zero;减1后不为0则转移
-
JZ:jump if zero;结果为0则转移
-
JNZ:jump if not zero;结果不为0则转移
-
JC:jump if the carry flag is set;有进位则转移
-
JNC:jump if not carry;无进位则位移
-
JB:jump if the bit is set;位为1则位移
-
JNB:jump if the bit is not set;位为0则位移
-
JBC:jump if the bit is set and clear the bit;位为1则位移,且清除该位
-
NOP:no operation;空操作
2.2.5 位操作指令
-
SETB:set bit;位置1
2.3 指令系统中的特殊符号
-
Rn:当前选中的寄存器区的8个工作寄存器R0~R7
-
Ri:当前选中的寄存器区中可作为地址寄存器的两个寄存器R0或R1
-
Direct:内部数据存储单元的8位地址,包含0~127内部存储单元地址和128~255部分存储单元特殊功能寄存器地址
-
#data:指令中的8位常数
-
#data16:指令中的16位常数
-
@:间接寄存器寻址或基址寄存器的前缀
-
/:位操作的前缀,声明对该为取反
-
DPTR:数据指针
-
Bit:内部RAM和特殊功能寄存器的直接寻址位
-
A:累加器
-
B:特殊功能寄存器B,用于乘法和除法指令中
-
C:进位标志位
-
(X):某地址单元的内容
-
((X)):由(X)寻址的单元的内容