- 單片機原理
- 張志霞 張楠楠 王永剛 楊萍主編
- 1424字
- 2021-10-22 23:53:55
第一節 指令系統概述
一、指令類型
MCS-51匯編語言有42種操作碼助記符用來描述33種操作功能。一種操作可以使用一種以上數據類型,又由于助記符也定義所訪問的存儲器空間,所以一種功能可能有幾個
助記符(如MOV、MOVX、MOVC)。功能助記符與尋址方式組合,得到111種指令。
如果按字節數分類,則有49條單字節指令、45條雙字節指令和17條3字節指令。若按指令執行時間分類,就有64條單周期指令、45條雙周期指令、兩條(乘、除)4周期指令。可見MCS-51指令系統具有存儲效率高、執行速度快的特點。
按功能分類,MCS-51指令系統可分為數據傳送指令、算術運算指令、邏輯運算指令、位操作指令、控制轉移指令。
二、指令格式
MCS51匯編指令由操作碼助記符字段和操作數字段所組成。指令格式如下:操作碼[操作數1],[操作數2],[操作數3]
第一部分為指令操作碼助記符,表示指令進行何種操作。它由2~5個英文字母所組
成,如JB、MOV、CJNE、LCALL等。
第二部分為操作數,指出了參加操作的數據或數據存放的地址。它以一個或幾個空格和操作碼隔開,根據指令功能的不同,數可以有1、2、3個或者沒有(如空操作指令)。操作數之間以逗號“,”分開。
三、偽指令
標準的MCS-51匯編程序(如Intel公司的ASM51)還定義許多偽指令供用戶使用,偽指令也稱為匯編命令,大多數偽指令匯編時不產生機器語言指令,僅提供匯編控制信息。以下介紹幾條最常用的偽指令。
1.定位偽指令
ORG m 40
m為十進制或十六進制數。m指出在該偽指令后的指令的匯編地址,即生成的機器指令起始存儲器地址。在一個匯編語言源程序中允許使用多條定位偽指令,但其值應和前面生成的機器指令存放地址不重疊。
2.定義字節偽指令
DB X1,X2,…,Xn
Xi為單字節數據,它為十進制或十六進制數,也可以為一個表達式。Xi也可以為由兩個單引號“ˊ”所括起來的一個字符串,這時Xi定義的字節長度等于字符串的長度,每一個字符為一個ASCII碼。
該偽指令把X1,X2,…,Xn送目標程序存儲器,通常用于定義一個常數表。3.字定義偽指令
DW Y1,Y2,…,Yn
Yi為雙字節數據,它可以為十進制或十六進制的數,也可以為一個表達式。該偽指令把Y1,Y2,…,Yn送目標程序存儲器,經常用于定義一個地址表。
4.匯編結束偽指令
END
該偽指令指出結束匯編,即使后面還有指令,匯編程序也不作處理。5.標號和注釋
匯編程序允許用戶在源程序中使用標號和注釋。
標號加在指令之前,標號必須以字母開始,后跟1~8個字母或數字,并以冒號“:”結尾,用戶定義的標號不能和匯編保留符號(包括指令操作碼助記符以及寄存器名等)重復。標號的值是它后面的指令存儲地址。
注釋是用戶對某一條指令或某一段程序的功能說明,它必須以分號“;”開始,如果一行寫不下,可以另起一行,但都必須以分號“;”開始。下面為含有標號和注釋的程序行:
標號:操作碼[操作數1],[操作數2],[操作數3];注釋四、常用的縮寫符號
在描述MCS-51指令系統的功能時,經常使用下面的縮寫符號,其意義如下:
A
累加器ACC
AB
累加器ACC和寄存器B組成的寄存器對
C
進位標志位CY,也是位操作指令中的位累加器
Rn
表示當前選中的通用寄存器R0~R7(n=0~7)
Ri
表示通用寄存器中可用作8位地址指針的R0和R1(i=0,1)
direct
直接地址,取值為00~0FFH
#data 立即數,表示一個常數
@
間接尋址
addr
表示外部數據存儲器的地址
bit
表示內部RAM或特殊功能寄存器中的直接位地址
×
寄存器
(×)
寄存器內容
((×))由X寄存器尋址的存儲器單元內容
(×)
寄存器的內容取反
rrr
指令編碼中rrr三位值由工作寄存器Rn確定,R0~R7對應rrr為000~111
$
指本條指令起始地址
rel
相對偏移量,其值為-128~+127