目录
一、指令系统
(〇)寻址方式(7种)
(一)数据传输类指令
(二)算数运算类指令
(三)逻辑操作类指令
(四)控制转移类指令
(五)位操作类指令
二、汇编语言程序设计
(一)汇编语言格式
(二)伪指令
(三)设计步骤
一、指令系统
- 单片机能够执行的各种指令的合集称为指令系统,80C51的指令系统共有111条指令
- 80C51汇编语言指令格式
操作码 操作数1,操作数2 ;注释
MOV A,5BH ;(5BH)→A 表示将内部存储器5BH存储单元的内容送到累加器A中
操作码:规定了指令的操作功能
操作数:参加操作的数据或者数据的地址
传送类指令最多有2个操作数
左操作数:目的操作数(操作结果存放的单元地址)
右操作数:源操作数(操作数的来源)
(〇)寻址方式(7种)
- 指出参与操作的数或数所在的地址
符号约定 | ||
---|---|---|
符号 | 含义 | 备注 |
Rn | 工作寄存器组R0~R7 由PSW中RS1、RS0确定 | 从0~3共4组 |
Ri | i = 0,1;数据指针R0或R1 由PSW中RS1、RS0确定 | 第0组:00H、01H 第1组:08H、09H 第3组:18H、19H |
#data | 8位立即数,常数 | |
#data16 | 16位立即数,常数 | |
direct | 直接地址单元(包括RAM、SFR、I/O) | |
addr11 | 11位目的地址 | PC当前地址位基地址, 跳转到目的地址, 是相对于PC的基地址而言的 |
addr16 | 16位目的地址 | |
rel | 相对偏移量,8位有符号数(补码形式) | 范围 +127~-128 |
bit | 位地址 | |
@ | 间接寻址方式中,表示间接寄存器的前缀符号 | |
X | 片内RAM的直接地址(包含位地址)或寄存器 | |
(X) | 表示X中的内容 | |
((X)) | 间接寻址方式中,表示间址寄存器X指出的地址单元中的内容 | |
→ | 数据传送方向 |
寻址方式 | |||
---|---|---|---|
寻址方式 | 功能说明 | 举例 | 功能说明 |
1. 寄存器寻址 | 操作数存放在所选定的寄存器中 | MOV A,R6 | (R6) → A |
2. 直接寻址 | 直接给出参加运算的操作数地址 | MOV A,50H | (50H) → A |
3. 立即寻址 | 直接给出参加运算的操作数 | MOV A,#50H | 50H → A |
4. 寄存器间接寻址 访问片外RAM必用 | 间接寻址寄存器中存放操作数地址 R0、R1、SP、DPTR要加前缀@ | MOV A,@Ri MOVX A,@DPTR | ((Ri)) → A ((DPTR)) → A |
5. 变址寻址 | 基址寄存器:DPTR / PC 变址寄存器:累加器A “基址寄存器+变址寄存器”间接寻址 | MOVC A,@A+DPTR | ((A+DPTR)) → A |
6. 相对寻址 相对转移指令必用 | 转移到目的地址 汇编语言可以自动算出目的地址 | JNZ 30H | 30H是rel(偏移量) |
7. 位寻址 | 对可位寻址的SFR中任一个二进制位进行位操作 | SETB 6AH | 将片内RAM中2DH单元中第2位 即6AH这一位置1 |
(一)数据传输类指令
- 数据传送指令是把源操作数传送到目的操作数,指令执行后,源操作数不改变,目的操作数修改为源操作数。
1. 内部RAM数据传送指令
2. 外部数据传送指令(只能用寄存器间接寻址)
3. 查表指令
4. 堆栈操作指令(PUSH/POP)
5. 交换指令(都需要借助A)
(二)算数运算类指令
1. 加法指令
2. 带进位加法指令
3. 带借位减法指令
4. 乘法指令(低A高B)
5. 除法指令(商A余B)
6. 加1/减1指令
7. 十进制调整指令(对非法BCD码进行修正,不是进制转换指令)
(三)逻辑操作类指令
1. 逻辑与指令
2. 逻辑或指令
3. 逻辑异或指令
4. 循环位移指令(只能对A操作)
5. 取反指令
6. 清零指令(只能对A操作)
(四)控制转移类指令
1. 无条件转移指令
2. 条件转移指令
3. 调用子程序及返回指令
4. 空操作指令
(五)位操作类指令
1. 位数据传送指令
2. 位修正指令
3. 位逻辑运算指令
4. 判位转移指令
二、汇编语言程序设计
(一)汇编语言格式
标号: 操作码 操作数 ;注释
P2: MOV A,#60H ;60H→A
(二)伪指令
- 这些指令不属于指令系统,不产生机器代码,只是告诉汇编程序如何进行汇编
伪指令 | ||
---|---|---|
ORG | 汇编起始指令 | |
END | 汇编结束指令 | |
EQU | 赋值指令(等值伪指令) | |
(三)设计步骤
(四)程序结构
1. 顺序
2. 循环
3. 分支
4. 查表
5. 子程序