8051 指令集

2024 年 8 月 29 日 | 4 分钟阅读

指令是给单片机的命令,用于对提供的数据执行指定的操作。 单片机的指令集是单片机设计用于执行的指令的集合。


数据移动或处理指令

助记符操作说明寻址方式使用周期数占用字节数
Mov a,#num此指令将立即数复制到 acc 中immediate12
Mov Rx,a此指令将数据从 acc 复制到 Rxregister11
Mov a,Rx此指令将数据从 Rx 复制到 accregister11
Mov Rx,#num此指令将立即数复制到 Rx 中immediate12
Mov a,add此指令将数据从直接地址位置 add 复制到 acc直接12
Mov add,a此指令将数据从 acc 复制到直接地址 add直接12
Mov add,#num此指令将立即数复制到直接地址直接23
Mov add1,add2此指令将数据从 add2 复制到 add1直接23
Mov Rx,add此指令从直接地址复制数据直接22
Mov add,Rx此指令将数据从 Rx 复制到直接地址 add直接22
Mov @Rp,a此指令将 acc 中的数据复制到 Rp 中的地址间接12
Mov a,@Rp此指令将 Rp 中地址处的数据复制到 acc间接11
Mov add,@Rp此指令将 Rp 中地址处的数据复制到 add间接22
Mov @Rp,add此指令将 add 中的数据复制到 Rp 中的地址间接22
Mov @Rp,#num此指令将立即字节 num 复制到 Rp 中的地址间接12
Movx a,@Rp此指令将 Rp 中的外部地址的内容复制到 acc间接21
Movx a,@DPTR此指令将 DPTR 中的外部地址的内容复制到 acc间接21
Movx @Rp,a此指令将 acc 的内容复制到 Rp 中的外部地址间接21
Movx @DPTR,a此指令将 acc 的内容复制到 DPTR 中的外部地址间接21
Movc a,@a+DPTR在此指令中,通过将 acc 和 DPTR 相加来形成指令的地址,并将其内容复制到 acc间接21
Movc a, @a+PC在此指令中,通过将 acc 和 PC 相加来形成指令的地址,并将其内容复制到 acc间接21
Push add在此指令中,增加堆栈指针 (SP) 并将数据从源地址复制到 SP 中包含的内部 RAM 地址直接22
Pop add此指令将数据从 SP 中包含的内部 RAM 地址复制到目标地址,并递减 SP直接22
Xch a, Rx此指令交换 acc 和 Rx 之间的数据寄存器11
Xch a, add此指令交换 acc 和给定地址之间的数据直接12
Xch a,@Rp此指令交换 acc 和 Rp 中地址之间的数据间接11
Xchd a, @Rp此指令仅交换 acc 的低半字节和 Rp 中的地址间接11

循环和跳转指令

8051 中的循环操作

重复执行一系列指令一定的次数将导致循环的形成。循环操作用于根据需要多次在程序中运行相同的子程序集。

考虑指令 DJNZ 寄存器; 标签用于执行循环操作。 在此指令中,寄存器递减 1; 如果不为零,则 8051 跳转到标签所指向的目标地址。

示例:使用重复相加的技术将 15 乘以 10

解决方案:可以通过重复添加被乘数来执行乘法运算,次数与乘数相同。

例如

ES 8085 MicroController ES 8085 MicroController

条件跳转指令

考虑下表列出了 8051 中使用的条件跳转指令

指令操作
JC如果 CY = 1 则跳转
JNC如果 CY ≠ 1 则跳转
JNB如果位 = 0 则跳转
JB如果位 = 1 则跳转
JZ如果 A = 0 则跳转
DJNZ递减并在寄存器 ≠ 0 时跳转
JNZ如果 A ≠ 0 则跳转
CJNE A, data如果 A ≠ data 则跳转
CJNE reg, #data如果字节 ≠ data 则跳转
JBC如果位 = 1 并且清除位则跳转
下一个主题汇编语言