6800 的寻址方式


我们已经了解了摩托罗拉 M6800 微处理器的内部结构和寄存器。在本节中,我们将了解 M6800 的寻址方式。

M6800 MPU 有六种寻址方式。这些模式是:

  • 立即寻址方式
  • 隐含寻址方式
  • 直接寻址方式
  • 扩展寻址方式
  • 索引寻址方式
  • 相对寻址方式

现在让我们了解一些 M6800 汇编语言编程的基本语法。

如果一个数字在十六进制中是 8CH,那么我们必须在它前面使用 $ 符号。所以它将是 $8C。没有 $ 的数字被视为十进制数字。类似地,立即数据由 # 符号表示。#50FF 是一个数据,但没有 #,它是一个内存位置。

在 8085 或 Z-80 中,对于一条指令,指令中的两个操作数类似于 (目标,源)。但在这种情况下,它是反向的,所以首先将给出源地址。(源,目标)。

对于 16 位数据或地址,在 8085 或 Z-80 中,第一个字节是最不重要的字节。但对于 M6800,第一个字节是最重要的字节。例如,如果指令是 STA A $AFC4,则十六进制代码将是 B7 AF C4。

现在让我们了解摩托罗拉 M6800 的寻址方式。

立即寻址

在这种立即寻址模式下,数据直接提供在指令本身中。数据直接提供在操作码之后。

LDA B, #$26 在此指令中,十六进制数据 26 加载到累加器 B 中。因此,这里的数据直接提供在操作码之后。

隐含寻址

这种隐含寻址模式也称为固有寻址模式。在这种模式下,操作数不在内存中。例如,我们可以说 CLC。此指令用于清除进位标志,并将其设置为 0。因此,它不使用任何操作数。类似地,ASL B 指令执行 B 的算术左移。因此,这里操作数也不在内存中。

直接寻址

在直接寻址模式下,操作数位于内存中。在这种情况下,地址空间为 00H 到 FFH,因此也称为页面 0 寻址模式。指令 SUB B, $FE 用于从 B 中减去位置 FEH 的内容并将其存储到 B 中。直接寻址模式占用两个字节的内存空间。因此,它执行速度更快。

在 M6800 中,经常访问的数据存储在内存范围 0000H 到 00FFH 中。因此,为了快速访问这些位置的数据,RAM 通常从 0000H 开始。并且使用 ROM 或 EPROM 提供内存的最后部分,该部分以 FFFFH 结尾。

扩展寻址

在 8085 中,存在绝对寻址模式,它类似于 M6800 的扩展寻址模式。因此,我们必须在操作码之后提供 16 位地址以从内存中的任何位置获取数据。

指令 NEG $FE00 将对位置 FE00H 的内容取反。

索引寻址

在这种索引寻址模式下,操作数存储在内存中。一部分内存由索引寄存器 (IX) 提供。指令中提供了另一部分 8 位数据。将该数据与索引寄存器内容相加后,指令可以获得访问内存位置的有效地址。

因此,如果索引寄存器内容为 A5CEH,则指令 ADC B $10, X 将在进位的情况下将寄存器 B 的内容和 A5DEH 相加。

相对寻址

相对寻址用于分支指令。这些指令长度为两个字节。它采用带符号的 8 位数字。因此,在执行正确的指令后,它使用此带符号的数据向后或向前跳转。

例如,有一个指令 BEQ $F0。因此,这意味着当零标志启用时,它将从下一条指令位置向后跳转 10H 个位置(因为 -10H 的 2 的补码是 F0H)。

更新于: 2020 年 6 月 27 日

1K+ 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告