8051的寻址方式
在本节中,我们将看到 8051 微控制器的不同寻址模式。在 8051 中,有 1 字节、2 字节指令,很少有 3 字节指令。操作码是 8 位长。由于操作码是 8 位数据,因此有 256 种可能性。在 256 个中,实现了 255 个操作码。
时钟频率为12MHz,因此64种指令类型在1 µs内执行完毕,其余时间仅为2 µs。乘法和除法运算需要 4 µsto 来执行。
在8051中有六种寻址方式。
立即寻址模式
寄存器寻址方式
直接寻址方式
寄存器间接寻址模式
索引寻址模式
隐式寻址模式
立即寻址模式
在这种立即寻址模式中,数据在指令本身中提供。在操作码之后立即提供数据。这些是立即寻址模式的一些示例。
MOVA, #0AFH;MOVR3, #45H;
MOVDPTR, #FE00H;
在这些指令中,# 符号用于立即数。在最后一条指令中,有 DPTR。DPTR 代表数据指针。使用它,它指向外部数据存储器位置。在第一条指令中,立即数是AFH,只是在开头加了一个0。所以当数据以A到F开头时,数据前面要加0。
寄存器寻址方式
在寄存器寻址模式中,源或目标数据应存在于寄存器中(R0 到 R7)。这些是 RegisterAddressing 模式的一些示例。
MOVA, R5;MOVR2, #45H;
MOVR0, A;
在 8051 中,没有像MOVR5, R7这样的指令。但是我们可以通过使用这条指令MOV R5, 07H或使用MOV 05H, R7得到相同的结果。但是当所选的寄存器银行是RB0时,这两个指令将起作用。要使用另一个寄存器组并获得相同的效果,我们必须将寄存器组的起始地址与寄存器号相加。例如,如果选择了 RB2,而我们要访问 R5,那么地址将是 (10H + 05H = 15H),因此指令看起来像这样MOV 15H, R7。这里 10H 是 Register Bank 2 的起始地址。
直接寻址模式
在直接寻址模式下,源地址或目的地址通过指令中的 8 位数据指定。在这种模式下只能使用内部数据存储器。这里有一些直接寻址模式的例子。
MOV80H, R6;MOVR2, 45H;
MOVR0, 05H;
第一条指令将寄存器R6的内容发送到端口P0(端口0的地址为80H)。第二个是忘记从 45H 到 R2 的内容。第三个用于从寄存器R5(选择寄存器组RB0时)获取数据到寄存器R5。
寄存器间接寻址方式
在这种模式下,源地址或目标地址在寄存器中给出。通过使用寄存器间接寻址方式,可以访问内部或外部地址。R0 和 R1 用于 8 位地址,DPTR 用于 16 位地址,没有其他寄存器可用于寻址目的。让我们看看这种模式的一些例子。
MOV0E5H, @R0;MOV@R1, 80H
在指令中,@符号用于寄存器间接寻址。在第一条指令中,它显示使用了 R0 寄存器。如果 R0 的内容为 40H,则该指令将取内部 RAM 的 40H 位置的数据。在第二个中,如果R1的内容是30H,则表示P0端口的内容将存储在内部RAM的30H位置。
MOVXA, @R1;MOV@DPTR, A;
在这两条指令中,MOVX 中的 X 表示外部数据存储器。外部数据存储器只能以寄存器间接模式访问。在第一条指令中,如果 R0 持有 40H,那么 A 将获取外部 RAM 位置 40H 的内容。而在第二个中,A的内容在DPTR指向的位置被覆盖。
索引寻址方式
在变址寻址模式下,只能从程序存储器访问源存储器。目标操作数始终是寄存器 A。这些是变址寻址模式的一些示例。
MOVCA, @A+PC;MOVCA, @A+DPTR;
MOVC 指令中的 C 指的是代码字节。对于第一条指令,让我们考虑 A 持有 30H。而PC值为1125H。程序存储单元 1155H (30H + 1125H) 的内容被移动到寄存器 A。
隐式寻址模式
在隐式寻址模式下,将有一个操作数。这些类型的指令只能在特定的寄存器上工作。这些类型的指令也称为寄存器特定指令。以下是隐式寻址模式的一些示例。
RLA;SWAPA;
这些是 1 字节指令。第一个用于将 A 寄存器内容向左旋转。第二个用于交换 A 中的半字节。
以上是 8051的寻址方式 的全部内容, 来源链接: utcz.com/z/356675.html