6800 指令集
在本节中,我们将了解 Motorola M6800 微处理器的不同类型的指令。共有 72 种不同类型的指令和 197 个不同的操作码。因此,有 51 条 1 字节指令、103 条 2 字节指令和 43 条 3 字节指令。
众所周知,Intel 8085 有 246 个操作码,尽管 6800 比 8085 更强大。Z-80 有 700 条指令,但 M6800 有一些更高级的分支指令。
不同的指令组如下所示:
数据传输组
算术组
逻辑组
分支组
杂项指令
数据传输组
此组包含 14 条指令。我们可以为这 14 条指令找到 38 个操作码。这些指令如下所示。
助记符 | 操作码数量 |
---|---|
LDA A/B, d8/a16/a8/IX+a8 | 8 |
STA A/B, a16/a8/IX+a8 | 6 |
LDS/LDX, d16/a16/a8/IX+a8 | 8 |
STS/STX a16/a8/IX+a8 | 6 |
PSH/PUL A/B | 4 |
TAB/TBA/TSX/TXS/TAP/TPA | 6 |
算术组
此组包含 15 条指令。我们可以为这 15 条指令找到 55 个操作码。这些指令如下所示。
助记符 | 操作码数量 |
---|---|
ABA/SBA | 2 |
SBC/SUB/ADC/ADD A/B d8/a8/a16/IX+ a8 | 32 |
INS/INX/DES/DEX | 4 |
NEG/CLR/INC/DEC A/B/a16/IX + a8 | 16 |
DAA | 1 |
逻辑组
此组包含 14 条指令。我们可以为这 14 条指令找到 73 个操作码。这些指令如下所示。
助记符 | 操作码数量 |
---|---|
BIT/CMP/EOR/ORA/AND A/B, d8/a8/a16/IX + a8 | 40 |
ROR/ROL/LSR/ASR/ASL/COM/TSTA/B/a16/IX + a8 | 28 |
CPX d16/a8/a16/IX + a8 | 4 |
CBA | 1 |
这里的旋转指令(ROR 和 ROL)仅适用于 8 位数据。与 8085 一样,没有通过进位进行旋转指令。
ASR 和 ASL 是算术移位操作,LSR 是逻辑右移指令。
分支组
此组包含 21 条指令。我们可以为这 21 条指令找到 23 个操作码。在 Zilog Z-80 中,我们看到它们的跳转指令适用于除 V 之外的所有片段。这里也存在 V 标志的指令。
这些与 V 相关的指令是 BVS(当 V 标志设置为 1 时分支)和 BVC(当 V 标志复位时分支)
在 6800 中,条件分支指令可以检查多个标志。它有助于比较两个有符号/无符号数。这里 higher 和 lower 关键字用于无符号数,greater 和 fewer 关键字用于有符号数。因此,对于这些关键字,存在诸如 BHI(如果更高则分支)、BLS(如果更低或相同则分支)之类的指令。BGT(如果大于则分支)和 BGE(如果大于或等于则分支)、BLT(如果小于则分支)和 BLE(如果小于或等于则分支)
这些指令如下所示。
助记符 | 操作码数量 |
---|---|
BCC/BCS/BEQ/BNE/BMI/BPL/BVC/BVSr8 | 8 |
BHI/BLS r8 | 2 |
BGT/BGE/BLT/BLE r8 | 4 |
BRA/BSR r8 | 2 |
JMP/JSR a16/IX + a8 | 4 |
RTS/RTI | 2 |
SWI | 1 |
杂项组
现在我们将了解一些未分类到特殊组中的特殊指令。有 8 个不同类型的 8 个操作码。这些指令如 WAI(等待中断)、NOP 等。
这些指令如下所示。
助记符 | 操作码数量 |
---|---|
WAI | 1 |
NOP | 1 |
CLC/SEC/CLI/SEI/CLV/SEV | 6 |
WAI 指令的功能与 8085 的 HLT 指令相同。