單片機「4」51單片機指令集(1)

單片機「4」51單片機指令集(1)

51單片機的指令系統,在官方手冊上有詳細介紹,因為我也是第一次學習,所以如果在文章中出現錯誤,希望大家及時指出,俗話說得好,給別人糾錯的過程就是自己進步的過程。

1.尋址方式

尋址方式是每一種計算機的指令集中不可缺少的部分,尋址方式規定了數據的來源和目的地,對於不同的程序指令,來源和目的地的規定也會不同,在STC單片機中,尋址方式可分為下面幾種:

  • 立即尋址
  • 直接尋址
  • 間接尋址
  • 寄存器尋址
  • 相對尋址
  • 變址尋址
  • 位尋址

立即尋址:也稱為立即數尋址,在指令操作數中直接給出參加運算的操作數。如---MOV A, #70H 這條指令的功能是將立即數70H傳送到累加器A中

直接尋址:指令操作數域給出的參加運算操作數的地址, 直接尋址方式只能用來表示特殊功能寄存器、內部數據寄存器和位地址空間,其中特殊功能寄存器和位地址空間只能使用直接尋址方式訪問。如---ANL 70H, #48H 表示70H單片中的數與立即數48H相“與”,結果放在70H單元中,其中70H是直接地址,表示內部數據存儲器RAM中的一個單元。

間接尋址:採用R0或R1前添加“@”符號表示,例如,假設R1中的數據是40H,內部數據存儲器40H單元所包含的數據是55H,那麼如:MOV A @R1 把數據55H傳給累加器。

寄存器尋址:是對選定的工作寄存器R7--R0、累加器A、通用寄存器B、地址寄存器和進位C中的數進行操作。因此,寄存器尋址包含一種隱含的尋址方式,寄存器工作區的選擇由程序狀態寄存器PSW中的RS1、RS0來決定,指令操作數制定的寄存器均指當前工作區中的寄存器。如---INC R0 ; (R0+1-->R0)

相對尋址:是將程序計數器PC中的當前值與指令第二字節給出的數相加,其結果作為轉移指令的轉移地址。轉移地址也稱為轉移目的地址,PC中的當前值稱為基地址,指令第二字節給出的數稱為偏移量,由於目的地址是相對與PC中的基地址而言,所以這種尋址方式稱為相對尋址。偏移量是帶符號的數,所能表示的範圍是+127--128,這種尋址方式主要用於轉移指令。如JC 80H ; C=1 跳轉 表示若進位位C為0,則程序計數器PC內容不變,即不轉移,若進位位C為1,則以PC中的當前值為基地址,加上偏移量80H後所得到的結果作為該轉移指令的目的地址。相對尋址:是將程序計數器PC中的當前值與指令第二字節給出的數相加,其結果作為轉移指令的轉移地址。轉移地址也稱為轉移目的地址,PC中的當前值稱為基地址,指令第二字節給出的數稱為偏移量,由於目的地址是相對與PC中的基地址而言,所以這種尋址方式稱為相對尋址。偏移量是帶符號的數,所能表示的範圍是+127--128,這種尋址方式主要用於轉移指令。

變址尋址:指令操作數制定一個存放變址基址的變址寄存器。變址尋址時,偏移量與變址基值相加,其結果作為操作數的地址。變址寄存器有程序計數器PC和地址寄存器DPTR。如---MOVC A, @A+DPTR 表示累加器A為偏移量寄存器,其內容與地址寄存器DPTR的內容想家,其結果作為操作數的地址,取出帶單元的數送入累加器A中。

位尋址: 指對一些內部數據存儲器RAM和特殊功能寄存器進行位操作時的尋址。在進行位操作時,藉助於進位位C作為位操作累加器,指令操作數直接給出該位的地址,然後根據操作碼的性質對該位進行位操作。位地址與字節直接尋址中的字節地址形式完全一樣,主要由操作碼加以區分。如---MOV C, 20H; 片內位單元位操作型指令

以上就是51單片機涉及的7中寄存器尋址方式。指令集比較枯燥,所以耐下性子,方得始終。


分享到:


相關文章: