複製鏈接
請複製以下鏈接發送給好友

偽指令

鎖定
偽指令(Pseudo Instruction)是用於對彙編過程進行控制的指令,該類指令並不是可執行指令,沒有機器代碼,只用於彙編過程中為彙編程序提供彙編信息。例如,提供如下信息:哪些是指令、哪些是數據及數據的字長、程序的起始地址和結束地址等。偽指令有2個特點:
(1)由於是偽“指令”,因而它只存在於彙編語言中。高級語言中不叫指令,叫語句;
(2)由於是“偽”指令,也即“假”指令,因而不是可執行指令,不會產生機器代碼,不會佔用ROM空間,只用於彙編過程中為彙編程序提供彙編信息。
中文名
偽指令
外文名
Pseudo instruction
功    能
告訴彙編程序如何進行彙編的指令
特    點
僅存在於彙編程序;不產生機器碼

偽指令區別

指令是在執行階段發揮作用的,由CPU(Intel、AMD等)來執行。
偽指令是在編譯階段發揮作用的,由彙編器(MASM、TASM等)來解釋。
下面以51單片機彙編偽指令為例:

偽指令指令語法

偽指令符 (常數或表達式)
其中:
1、偽指令符是偽指令的名稱
2、常數或表達式是偽指令的參數,括號表示可有可無

偽指令指令詳解

51單片機最常用的偽指令如下:
(1)起始(Origin)偽指令
標號:ORG nn
功能: 定義程序或數據塊的起始地址。 指示此語句後面的程序或數據塊以 nn 為起始地址連續存放在程序存儲器中。
例如:
ORG 2000H
MOV A, 20H
ORG 偽指令規定了程序的起始地址從 2000H 開始,即該程序的第一條指令“MOVA, 20H”從地址 2000H 開始存放。)
(2)字節定義(Define Byte)偽指令
標號: DB (字節常數或字符或表達式)
功能:指示在程序存儲器中以標號為起始地址的單元裏存放的數為字節數據(8 位二進制數)。
例如:
OGR 100H
TAB1: DB 0FFH, 'C', 16, −1
從 TAB1 開始的地址單元依次存放 0FFH、 43H、 10H、 0FFH
其中,TAB1=100H(ORG指定);C的ASCII碼為43H;十進制16的十六進制為10H,-1的補碼為FFH
(3)字定義(Define Word)偽指令
標號: DW (字常數或表達式)
功能:指示在程序存儲器中以標號為起始地址的單元裏存放的數為字數據(16 位的二進制數)。
例如:
OGR 100H
TAB3 : DW 5678H, 10
其中,TAB3=100H(ORG指定);ROM中的存放情況為:(100H)=56H、(101H)=78H、(102H)=00H、(103H)=0AH
(4)保留字節(Define Storage)偽指令
標號: DS (數值表達式)
功能:指示在程序存儲器中保留以標號為起始地址
的若干字節單元,其單元個數由數值表達式指定。
例如:
TAB2: DS 16 ; 從 TAB2 地址開始保留 16 個存儲單元
(5)等值(Equate)偽指令
標號: EQU(數值表達式)
功能:表示 EQU 兩邊的量等值,用於為標號或標識符賦值。
例如:
X1 EQU 2000H
X2 EQU 0FH
MAIN:
MOV DPTR, #X1 ; DPTR=2000H
ADD A, #X2 ; A=A+0FH
(6)位定義偽指令
標號: BIT (位地址)
功能:同 EQU 指令,不過定義的是位操作地址
例如:
ENA BIT P2.2
(7)彙編結束偽指令
標號:END
功能:指示源程序段結束。 END 指令放在程序的最後。若將 END 放在程序中間,那麼對於 END 後面的指令,彙編程序將不對其進行彙編。一個彙編語言源程序僅允許使用一個END 偽指令。