8051算术指令组
在8051微控制器中,算术指令组共有24条不同的指令,总共有64个操作码。进位标志(CY)、辅助进位标志(AC)和溢出标志(OV)会根据ADD、ADDC、SUBB等指令的结果而变化。乘法和除法指令会清除进位标志,并且不影响辅助进位标志。乘法执行后,如果结果大于FFH,则溢出标志为1,否则为0。类似地,除法执行后,如果除数B的内容在除法前为00H,则溢出标志为1,否则为0。DA A(十进制调整累加器)指令只影响进位标志。
在下表中,我们将看到指令助记符、字节数、执行时间(以机器周期为单位)、操作码数量等。
| 助记符 | 字节数 | 执行时间 | 操作码数量 |
|---|---|---|---|
| ADD A, Rn | 1 | 1 | 8 |
| ADD A, a8 | 2 | 1 | 1 |
| ADD A, @Ri | 1 | 1 | 2 |
| ADD A, #d8 | 2 | 1 | 1 |
| ADDC A, Rn | 1 | 1 | 8 |
| ADDC A, a8 | 2 | 1 | 1 |
| ADDC A, @Ri | 1 | 1 | 2 |
| ADDC A, #d8 | 2 | 1 | 1 |
| SUBB A, Rn | 1 | 1 | 8 |
| SUBB A, a8 | 2 | 1 | 1 |
| SUBB A, @Ri | 1 | 1 | 2 |
| SUBB A, #d8 | 2 | 1 | 1 |
| INC A | 1 | 1 | 1 |
| INC Rn | 1 | 1 | 8 |
| INC a8 | 2 | 1 | 1 |
| INC @Ri | 1 | 1 | 2 |
| DEC A | 1 | 1 | 1 |
| DEC Rn | 1 | 1 | 8 |
| DEC a8 | 2 | 1 | 1 |
| DEC @Ri | 1 | 1 | 2 |
| INC DPTR | 1 | 2 | 1 |
| MUL AB | 1 | 4 | 1 |
| DIV AB | 1 | 4 | 1 |
| DA A | 1 | 1 | 1 |
示例
| 序号 | 指令及说明 |
|---|---|
| 1 | ADD A, 32H 这是一个ADD A, #d8类型的指令。将立即数32H加到寄存器A中。结果也存储在A中。 |
| 2 | ADDC A, @R1 这是一个ADDC A, @Ri类型的指令。这意味着将寄存器R1指向的内部RAM位置上的内容加到A中。 |
| 3 | SUBB A, R5 这是一个SUBB A, Rn类型的指令。SUBB代表带借位的减法。因此,将R5的内容从A中减去。 |
| 4 | INC 40H 这是一个INC a8类型的指令。这里将地址为40H的局部RAM中的内容加1。 |
| 5 | INC DPTR 它可以将DPTR的内容加1。此指令需要两个机器周期来执行。 |
| 6 | MUL AB 此指令用于将寄存器A和B的内容相乘。16位结果将存储在B和A寄存器中。B将保存高位字节,A将保存低位字节。 |
| 7 | DIV AB 此指令用于将A寄存器的内容除以B寄存器的内容。8位商存储到A寄存器中,8位余数存储到B寄存器中。 |
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP