本文概述
- 数据移动或处理说明
- 循环和跳转指令
数据移动或处理说明
助记符 | 操作说明 | 寻址方式 | 使用的循环数 | 占用字节数 |
---|---|---|---|---|
乐章啊, 是否# | 该指令将立即数复制到acc | immediate | 1 | 2 |
Mov Rx, a | 该指令将数据从acc复制到Rx | register | 1 | 1 |
Mov a, Rx | 该指令将数据从Rx复制到acc | register | 1 | 1 |
乐章的Rx, 是否# | 该指令将立即数num复制到Rx中 | immediate | 1 | 2 |
移动a, 添加 | 该指令将数据从直接地址位置复制到acc | direct | 1 | 2 |
Mov add, a | 该指令将数据从acc复制到直接地址添加 | direct | 1 | 2 |
Mov add, #num | 该指令将立即数num复制到直接地址 | direct | 2 | 3 |
Mov add1, add2 | 该指令将数据从add2复制到add1 | direct | 2 | 3 |
Mov Rx, 添加 | 该指令从直接复制数据 | direct | 2 | 2 |
Mov add, Rx | 该指令将数据从Rx复制到直接地址添加 | direct | 2 | 2 |
Mov @ Rp, a | 该指令将acc中的数据复制到Rp中的地址 | Indirect | 1 | 2 |
Mov a, @ Rp | 该指令将Rp中地址处的数据复制到acc | Indirect | 1 | 1 |
Mov添加, @ Rp | 该指令复制Rp地址中的数据以添加 | Indirect | 2 | 2 |
Mov @ Rp, 添加 | 该指令将添加数据复制到Rp中的地址 | Indirect | 2 | 2 |
Mov @ Rp。#Num | 该指令将立即数num复制到Rp中的地址 | Indirect | 1 | 2 |
Movx A, @ Rp | 该指令将Rp中外部add的内容复制到acc | Indirect | 2 | 1 |
Movx a, @ DPTR | 该指令将DPTR中外部add的内容复制到acc | Indirect | 2 | 1 |
Movx @ Rp | 该指令将acc的内容复制到Rp中的外部add | Indirect | 2 | 1 |
Movx @ DPTR, a | 该指令将acc的内容复制到DPTR中的外部add | Indirect | 2 | 1 |
Movc a, @ a + DPTR | 通过添加acc和DPTR形成指令的地址, 并将其内容复制到acc | indirect | 2 | 1 |
Movc a, @ a + PC | 通过添加acc和PC形成指令的地址, 并将其内容复制到acc | indirect | 2 | 1 |
推送添加 | In this instruction Increment Stack Pointer (SP) and copy the data from source add to internal RAM address contained in SP | Direct | 2 | 2 |
弹出添加 | 该指令将数据从SP中包含的内部RAM地址复制到目标添加和减少SP | direct | 2 | 2 |
Xch A, Rx | 该指令在acc和Rx之间交换数据 | Register | 1 | 1 |
Xch a, 添加 | 该指令在acc和给定的add之间交换数据 | Direct | 1 | 2 |
Xch A, @ Rp | 该指令在acc和Rp中的地址之间交换数据 | Indirect | 1 | 1 |
Xchd A, @ Rp | 该指令仅交换Rp中的acc和地址的低半字节 | indirect | 1 | 1 |
在重复执行一系列指令时, 将导致循环的形成。根据需要, 循环操作用于在程序内运行同一组子例程多次。
考虑指令DJNZ寄存器;标签用于执行循环操作。在该指令中, 寄存器减1;否则, 寄存器减1。如果它不为零, 则8051跳转到标签所引用的目标地址。
示例:使用重复加法的技术将15乘以10
解决方案:可以通过重复乘以被乘数(与乘数一样多)来执行乘法。
例如:
文章图片
文章图片
MOV A, #0;
A = 0, clean ACC
MOV R1, #10;
the multiplier is replaced in R1
Add A, #15;
add the multiplicand to the ACC
AGAIN: DJNZ R1, AGAIN: repeatuntil R1 = 0 (10 times) MOV R5 , A;
save A in R5 ;
R5 (96H)
条件跳转指令:
考虑下表列出了8051中使用的条件跳转指令
使用说明 | 行动 |
---|---|
JC | 如果CY = 1则跳转 |
JNC | 如果CY≠1则跳转 |
JNB | 如果位= 0则跳转 |
JB | 如果位= 1则跳转 |
JZ | 如果A = 0则跳转 |
DJNZ | 如果寄存器≠0, 则递减并跳转 |
JNZ | 如果A≠0则跳转 |
CJNE A, 数据 | 如果A≠数据则跳转 |
CJNE reg, #data | 如果字节≠数据则跳转 |
JBC | 如果位= 1则跳转并清除位 |
推荐阅读
- 8051单片机
- 使用8051单片机在7段显示器上显示数字
- 嵌入式系统设计
- 嵌入式系统的特点
- 这里的姿态控制系统和电源的自动控制系统就属于嵌入式系统
- 课程笔记|uCos中的邮箱和消息队列
- 课程笔记|嵌入式系统复习题
- STM32的串口空闲中断
- 【嵌入式系统】工作模式与任务特权级