8051定址方式


在本節中,我們將瞭解8051微控制器的不同定址方式。在8051中,存在1位元組、2位元組指令,以及極少數的3位元組指令。操作碼長度為8位。由於操作碼是8位資料,因此共有256種可能性。在256種可能性中,實現了255個操作碼。

時鐘頻率為12MHz,因此僅需1 µs即可執行64種指令型別,其餘指令則需2 µs。乘法和除法運算需要4 µs才能執行。

8051共有六種定址方式。

  • 立即定址方式

  • 暫存器定址方式

  • 直接定址方式

  • 暫存器間接定址方式

  • 索引定址方式

  • 隱含定址方式

立即定址方式

在此立即定址方式中,資料直接包含在指令中。資料緊跟在操作碼之後。以下是一些立即定址方式的示例。

MOVA, #0AFH;
MOVR3, #45H;
MOVDPTR, #FE00H;

在這些指令中,#符號用於表示立即數。在最後一條指令中,使用了DPTR。DPTR代表資料指標。使用它可以指向外部資料儲存器位置。在第一條指令中,立即數為AFH,但在開頭添加了一個0。因此,當資料以A到F開頭時,資料前應加上0。

暫存器定址方式

在暫存器定址方式中,源或目標資料應位於暫存器(R0到R7)中。以下是一些暫存器定址方式的示例。

MOVA, R5;
MOVR2, #45H;
MOVR0, A;

在8051中,沒有像MOV R5, R7這樣的指令。但是,我們可以使用指令MOV R5, 07HMOV 05H, R7來獲得相同的結果。但是,這兩條指令只有在選擇的暫存器組為RB0時才有效。要使用其他暫存器組並獲得相同的效果,必須將該暫存器組的起始地址與暫存器編號相加。例如,如果選擇了RB2,並且想要訪問R5,則地址將為(10H + 05H = 15H),因此指令將如下所示:MOV 15H, R7。這裡10H是暫存器組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中的半位元組。

更新於:2023年10月31日

155K+ 次瀏覽

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.