8085 微处理器中的 CMP R 指令
在 8085 指令集中,CMP 是一个助记符,代表“比较累加器”,而这里的 R 代表以下任何一个寄存器,或者由 HL 寄存器对指向的内存位置 M。
R = A, B, C, D, E, H, L, or M
此指令用于比较累加器的内容与给定寄存器 R 的内容。比较操作的结果将存储在 Temp 寄存器中。Temp 不是 GPR(通用寄存器),而是一个程序员无法访问的内部寄存器。实际上,R 寄存器的内容将从累加器的内容中减去,差值将存储在 Temp 寄存器中。由于 R 可以具有八个值中的任何一个,因此此类指令有八个操作码。它在内存中只占用 1 个字节。
| 助记符,操作数 | 操作码(十六进制) | 字节 |
|---|---|---|
| CMP A | BF | 1 |
| CMP B | B8 | 1 |
| CMP C | B9 | 1 |
| CMP D | BA | 1 |
| CMP E | BB | 1 |
| CMP H | BC | 1 |
| CMP L | BD | 1 |
| CMP M | BD | 1 |
让我们考虑一个属于此类别的示例指令 CMP E。由于它是一个 1 字节指令,因此在执行此指令期间,它在内存中只占用一个字节。此指令执行的结果已用以下示例集进行了描述:
示例 1
| 之前 | 之后 | |
|---|---|---|
(A) |
50H | 50H |
(E) |
70H | 70H |
(Temp) |
任意值 | E0H |
(F) |
任意值 | Cy=1,AC=0,S=1,P=0,Z=0 |
示例 2
| 之前 | 之后 | |
|---|---|---|
(A) |
70H | 70H |
(E) |
50H | 50H |
(Temp) |
任意值 | 20H |
(F) |
任意值 | Cy=0,AC=0,S=0,P=0,Z=0 |
示例 3
| 之前 | 之后 | |
|---|---|---|
(A) |
50H | 50H |
(E) |
50H | 50H |
(Temp) |
任意值 | 00H |
(F) |
任意值 | Cy=0,AC=0,S=0,P=1,Z=1 |
| 地址 | 十六进制代码 | 助记符 | 注释 |
|---|---|---|---|
| 2004 | BB | CMP E | Temp = 寄存器 A - 寄存器 E |
针对此指令 CMP E 执行的时序图如下:

总结 - 因此,此指令 CMP E 需要 1 个字节、1 个机器周期(操作码获取)和 4 个 T 状态才能执行,如时序图所示。
广告
数据结构
网络
关系型数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP