匯編語言偽指令
在編寫匯編語言程序時,會用到另一類指令,這類指令僅供匯編程序將源程序翻譯成目標程序時使用,本身并不形成機器碼,這類指令稱為偽指令。由此可知,指令有二類:(1)匯編指令:是編譯后產(chǎn)生機器碼的指令。
(2)偽指令:僅供匯編程序使用,編譯后不產(chǎn)生機器碼的指令。
下面簡單介紹5條偽指令。
1. 匯編起點指令 ORG(Origin)<?XML:NAMESPACE PREFIX = O />
指令格式 : ORG nn
作用:將ORG nn 后的程序機器碼或數(shù)據(jù)存放以nn為首地址的存儲單元中。如在下面的例4-1中,偽指令 ORG 2000H 將目標程序從地址2000H處開始存放。
2. 定義字節(jié)指令 DB (Define Byte)
指令格式 :[LABEL] DB N1,N2,…,Nm
作用:將DB后的8位字節(jié)數(shù)據(jù)N1,N2,…,Nm依次存入以標號LABEL為首地址的存儲單元中。若無標號,則N1,N2,…Nm依次存放在DB上一條指令之后的存儲單元中。如在例4-1中偽指令DB 將字節(jié)數(shù)據(jù)55,38依次存放到以標號LABEL3為首地址的存儲單元2100H~2101H中。
3. 定義字指令 DW (Define Word)
指令格式:[LABEL] DW NN1,NN2,…,NNm
作用:將DW后的16位字數(shù)據(jù)NN1,NN2,…,NNm依次存放到以標號LABEL為首地址的存儲單元中,若無標號,則NN1,NN2,…,NNm依次存放在DW上一條指令之后的存儲單元中。在例4-1中,偽指令DW 同樣可將字數(shù)據(jù)5538存放到以標號LABEL3為地址的存儲單元2100H~2101H中。
4. 等值指令 EQU (Equate)
指令格式:LABEL EQU nn
作用: 將16位地址nn賦給標號 LABEL,在例4-1中,偽指令 LABEL0 EQU 2100H將地址2100H賦給標號LABEL0。
5. 結束匯編指令 END
作用:匯編程序編譯源程序時,遇到偽指令END,不管END下面是否還有其它指令都將停止編譯。
例1 將地址為2100H存儲單元中內容55與地址為2101H存儲單元內容38進行十進制數(shù)相加,運算結果93存放在地址為2102H的存儲單元中。
即:(2100H)+(2101H)→(2102H)
閱讀十進數(shù)加法的源程序與目標程序,并解釋每一條偽指令的含義與作用。
解:
該程序完成(2100H)+(2101H)送(2102H)的工作。在程序中加入一些偽指令。現(xiàn)分析程序中偽指令的含義及作用,匯編程序編譯該程序時,將根據(jù)偽指令 ORG 0000H 將目標程序從地址0000H處開始存放。偽指令 LABEL0 EQU 2100H 將被加數(shù)地址2100H賦給標號LABEL0,偽指令 LABEL1 EQU 2101H 則將加數(shù)地址2101H賦給標號LABEL1,偽指令 LABEL2 EQU 2102H 將和的地址2102H賦給標號LABEL2。程序中可以用標號LABEL0~LABEL2去代替直接地址2100H~2102H,這樣做的好處是,如果用戶要進行如:(3100H)+(3101H)送(3102)的運算,只要在程序開始處修改等值指令EQU的標號地址,改為3100、3101H、3102H,而不必修改程序本身即可。偽指令DB 將字節(jié)數(shù)據(jù)55,38依次存放到以標號LABEL3為首地址的存儲單元2100H~2101H中。而偽指令DW 同樣可將字數(shù)據(jù)5538存放到以標號LABEL3為地址的存儲單元2100H~2101H中,如目標程序所示。最后,偽指令END告訴匯編程序,匯編工作到此結束。在所有偽指令后面均沒有產(chǎn)生機器碼。這說明偽指令是僅供匯編程序使用,編譯后不產(chǎn)生機器碼的指令。

編輯:admin 最后修改時間:2018-05-08