68000处理器的特点是16位外部字长,因为处理器芯片具有16个数据引脚以连接到存储器。但是,数据在包含32位的寄存器中的处理器内部进行处理。该系列的其他型号是68020、68030和68040处理器。它们均采用大型芯片封装,并具有32位外部数据引脚。因此,它们可以在内部和外部以32位的数量处理数据。
68000寄存器结构:
68000寄存器结构具有8个数据寄存器和8个地址寄存器,每个寄存器长32位。数据寄存器用作计数器的通用累加器。以下是相同的结构。
68000指令处理三种不同长度的操作数。据说32位操作数是长字,16位操作数是一个字,而8位操作数是一个字节。当指令在寄存器中使用字节或字操作数时,操作数位于寄存器的低位位置。在大多数情况下,此类指令不会影响寄存器的其余高阶位,但是某些指令会将较短的操作数的符号扩展为高阶位。
地址寄存器保存用于确定存储操作数地址的信息。该信息可以长字或字长给出。当给定存储单元的地址为地址寄存器时,地址寄存器将用作该单元的指针。地址和数据寄存器都可以用作索引寄存器。一个地址寄存器A7具有作为处理器堆栈指针的特殊函数。地址寄存器和地址计算涉及32位。但是,在68000的情况下,仅地址的最低有效24位在外部用于访问内存。 68020、68030和68040处理器具有32条外部地址线和32条数据线。
寻址:
- 68000计算机的内存以16位字为单位,并且是字节可寻址的。两个连续的字可以解释为单个32位长字。如上图所示分配内存地址。单词必须在偶数边界上对齐(也就是说,其地址必须是偶数)。使用big-endian地址分配。一个单词的高位字节与该单词具有相同的地址,而一个低位的字节具有下一个较高的地址。
- 由于68000生成24位地址,因此其可寻址空间为2 24 (16,777,216或16M)个字节。可以认为此可寻址空间由每个32K(2 15 )字节的512(2 9 )页组成。因此,十六进制地址0到7FFF构成页面0,地址8000到FFFF组成页面2,依此类推。最后一页由FF8000到FFFFFF的地址组成。
- 68000有几种寻址模式。 68000的许多指令都适合16位字,但有些指令则需要附加字来获得更多寻址信息。指令的第一个字是OP代码字,它指定要执行的操作并提供一些寻址信息。其余信息以后续字词给出。
寻址的不同类型:
以下是可用的不同寻址模式,如下所示。
- 即时模式
- 绝对模式
- 注册模式
- 注册间接模式
- 自动递增模式
- 自动减量模式
- 基本索引模式
- 全索引模式
- 基本相对地址
- 完全相对模式
寻址模式的语法和函数:
让我们看一下寻址模式的评估部分,如下所示。
Name |
Assebler Syntax |
Addressing Function |
---|---|---|
Immediate |
#Value |
Operand = Value |
Absolute Short |
Value |
EA = Sign Extended WValue |
Absolute Long |
Value |
EA = Value |
Register |
Rn |
EA = Rn Operand = [Rn] |
Regsiter Indirect |
(An) |
EA = [An]; |
Autoincrement |
(An)+ |
EA = [An] Increment An |
Autodecrement |
-(An) |
Decrement An EA = [An] |
Indexed Basic |
WValue(An) |
EA = WValue + [An] |
Indexed Full |
BValue(An,Rk,S) |
EA = BValue + [An] + [Rk] |
Relative Basic |
WValue(PC) or Label |
EA = WValue + [PC] |
Relative Full |
BValue(PC,Rk,S) or Label (Rk) |
EA =BValue + [PC] + [Rk] |
在这里,您将看到术语的含义。
EA = effective address
Value = a number given either explicitly or represented by a label
BValue = an 8-bit value
WValue = an 16-bit value
An = an address register
Rk = an address or a data register
S = a size indicator: W for sign-extended 16-bit word and L stands for 32-bit long word
例子 –
让我们做一个简单的例子来理解它。考虑指令ADD 100(PC,A1),D0 。当以机器形式编码时,该指令由2个字组成。 OP代码字指定这是一条ADD指令,目标寄存器是数据寄存器D0,并且完整的相对寻址模式用于源操作数。第二个字(也称为扩展字)指定将寄存器A1用作索引寄存器,并且它包含8个位组成的偏移值100。
假定前一条指令存储在位置1000中,并且寄存器A1包含值6。当已提取该指令的OP码字并且在处理器对其进行解码时,程序将指向扩展字,该扩展字表示程序计数器包含值1002。因此,源操作数的有效地址如下。
EA = [PC] + [A1] + 100 = 1002 + 6 +100 = 1108