51單片機是對所有兼容Intel 8031指令系統的單片機的統稱。該系列單片機的始祖是Intel 8031單片機,后來隨著Flash rom 技術的發展,8031單片機取得了長足的發展,成為了應用最廣泛的8位單片機之一。51單片機是基礎入門的一個單片機,并且還是應用最廣泛的一種。今天我們主要講講51單片機的尋址方式。
【指令】
指令是人們向計算機發的一種命令,一條指令對應著一種操作。
【指令系統】
CPU所能執行的全部指令的集合。CPU能夠執行多少條指令是由CPU的內部結構所決定的。不同的CPU,其指令系統不同。
【指令的表示方法】
指令在機器中必須以機器碼(二進制碼)的形式出現。在書寫指令時,通常有兩種方法:
1. 在計算機發展的初期,人們用機器碼書寫指令,這一階段成為機器語言階段。
優點:用機器碼書寫的程序,計算機可以直接識別和運行。
缺點:書寫時容易出錯,不容易記憶。
2. 為了克服機器語言的缺點,人們用符號書寫指令:指令由操作碼和操作數組成。
優點:容易理解和記憶。
缺點:計算機不能直接識別和運行。
匯編語言程序必須轉換成機器語言程序,轉換方法有兩種:
手工轉換:查表 符號指令——機器碼指令——MEM
匯編程序:符號指令——機器——機器碼指令——MEM
【尋址方式】
尋址方式由操作碼和操作數組成。
操作碼:決定CPU執行何種操作
操作數:就是操作對象,無論何種指令其操作的對象都是數據。
數據:數據在指令中有2種表示方法:1.數本身;2.數所在的地方
指出操作數所在的方式就是尋址方式。
【51單片機尋址的方式】
每一種計算機都具有多種尋址方式,尋址方式的多少是反映指令系統優劣的主要指標之一。
51單片機有7種尋址方式:
1. 立即尋址
2. 直接尋址
3. 寄存器間址
4. 寄存器尋址
5. 變址尋址(基址寄存器+變址寄存器間接尋址)
6. 相對尋址
7. 位尋址
【立即尋址】
指令的操作數存放在程序存儲器中,操作數緊跟在操作碼后面。
尋址空間:程序存儲器
指令形式:操作碼——OP 立即數——#data
注意:#表明其后跟的是立即數,立即數就是數字量本身
【直接尋址】
在指令中直接給出操作數的真實地址,操作碼后面緊跟一個實際操作數地址
尋址空間:內RAM的低128字節,特殊功能寄存器SFR區
指令的三種形式:
【寄存器尋址】
當前選定的寄存器內容就是實際操作數
尋址空間:R0~R7,由RS0、RS1確定寄存器區
指令的三種形式:
【寄存器直接尋址】
寄存器中的內容是一個地址,由該地址單元尋址到所需的操作數
尋址空間:內部RAM
指令的三種形式:
注意:“間接”表示某寄存器中的“內容”只是一個“單元地址”,這個地址單元中存放的數據才是要找的“操作數”。
符號“@”表示“在....”,其含義與讀音皆同“at”。
規定工作寄存器只有R0和R1采用與間接尋址。
規定用MOV指令訪問片內RAM,用MOVX訪問外部RAM。
【基址寄存器加變址寄存器間接尋址】
以DPTR或PC作基址寄存器,A作變址寄存器兩者相加形成操作數地址。
尋址空間:程序存儲器
指令形式:操作碼
【相對尋址】
以當前PC值為基準地址,加上指令的偏移量“rel”,結果為目標地址。
Rel為有符號補碼數,范圍:-128~+127
尋址空間:程序存儲器
指令的三種形式:一般為雙字節或三字節指令
注意:“當前PC值”值程序中下一條指令所在的首地址,是一個16位數;符號“rel”在實際編程中通常用標號代替。
【位尋址】
以訪問觸發器的方式,對內部RAM、SFR的位地址空間進行訪問,稱為位尋址,位尋址用于布爾指令。
尋址空間:片內RAM的20H~2FH字節地址
注意:位地址里的數據只可能是一個0或1