第二十八節(jié):偽指令分析
偽指令是告訴匯編程序,如何匯編源程序的指令。
偽指令既不控制機(jī)器的操作,也不能被匯編成機(jī)器代碼,故稱(chēng)為偽指令。
1、 設(shè)置起始地址ORG( 用于規(guī)定目標(biāo)程序段或數(shù)據(jù)塊的起始地址,設(shè)置在程序開(kāi)始處。)
格式: ORG nn ;nn是16位二進(jìn)制數(shù)
;nn給出了存放的超始地址值
給程序起始地直或數(shù)據(jù)塊的起始地址賦值。它總是出現(xiàn)在每段源程序或數(shù)據(jù)塊的開(kāi)始。在一個(gè)源程序中可以多次使用ORG命令,以規(guī)定不同程序段或數(shù)據(jù)塊的起始位置,所規(guī)定的地址從小到大,不允許重疊。
例如: ORG 0000H
MAIN:NOV SP,#6FH
。。。。。。。。。。。。
ORG 1000H
SUB1:MOV A,#74H
2、定義字節(jié)命令 DB
告訴匯編程序從指定的地址單元開(kāi)始,定義若干字節(jié)存儲(chǔ)單元并賦初值。
格式: 標(biāo)號(hào):DB <字節(jié)常數(shù)或字符>
例: ORG 1000H
TABLE1:DB 00,01,04,09,10H,19H
匯編后則(1000H)=00H
(1001H)=01H
(1002H)=04H
(1003)=09H
(1004)=10H
(1005)=19H
3、定義字命令 DW
從指定地址開(kāi)始,定義若干個(gè)16個(gè)位數(shù)據(jù),高八位存入低地址;低八位存入高地址。
例、 ORG 1000H
PIOI: DW 7654H,40H、12、‘AB’
例: ORG 2000H
ABC: DB 1234H,2468H,1357H,。。。。。。。
匯編后則(2000H)=12H
(2001H)=34H
(2002H)=24H
(2003H)=68H
(2004H)=13H
(2005H)=57H
4、賦值命令 EQU
告訴匯編程序,將匯編語(yǔ)句操作數(shù)的值賦予本語(yǔ)句的標(biāo)號(hào)。
格式: 標(biāo)號(hào)名稱(chēng) EQU 數(shù)值或匯編符號(hào)
“標(biāo)號(hào)名稱(chēng)”在源程序中可以作數(shù)值使用,也可以作數(shù)據(jù)地址、位地址使用。
先定義后使用,放在程序開(kāi)頭。
格式: 標(biāo)號(hào): EQU nn或匯編符號(hào)
例: BLCK EQU #1000H
TEST EQU 28H(直接地址單元)
TEST1 EQU #28H(立即數(shù))
NMB EQU #10
MOV A,TEST(=direct) 執(zhí)行后,A=(28H)
若28H中存放著56H,則A=56H
MOV A,TEST1(=#data) A=28H
MOV R2,NMB (R2)=10
MOV DPTR,BLOCK
5、源程序結(jié)束 END (告訴匯編程序,對(duì)源程序的匯編到此結(jié)束。一個(gè)程序中只出現(xiàn)一次,在末尾。)
格式: 標(biāo)號(hào): END
6、數(shù)據(jù)地址賦值偽指令 DATA
將表達(dá)式指定的數(shù)據(jù)地址賦予規(guī)定的字符名稱(chēng)
格式: 字符名稱(chēng) DATA 表達(dá)式
注:該指令與EQU 指令相似,只是,可先使用后定義,放于程序開(kāi)頭、結(jié)尾均可。
7、定義空間偽指令 DS
從指定地址開(kāi)始,保留由表達(dá)式指定的若干字節(jié)空間作為備用空間。
格式: [標(biāo)號(hào):] DS 表達(dá)式
例2、 ORG 1000H
DS 0AH
DB 71H,11H,11H ;從100BH開(kāi)始存放71H、11H、11H。
注:DB、DW、DS 只能用于程序存儲(chǔ)器;而不能用于數(shù)據(jù)存儲(chǔ)器。
8、位地址賦值偽指令 BIT
將位地址賦予規(guī)定的字符名稱(chēng)。
格式: 字符名稱(chēng) BIT 位地址
例3、 X1 BIT P12
相當(dāng)于 X1 EQU 92H
偽指令是告訴匯編程序,如何匯編源程序的指令。
偽指令既不控制機(jī)器的操作,也不能被匯編成機(jī)器代碼,故稱(chēng)為偽指令。
1、 設(shè)置起始地址ORG( 用于規(guī)定目標(biāo)程序段或數(shù)據(jù)塊的起始地址,設(shè)置在程序開(kāi)始處。)
格式: ORG nn ;nn是16位二進(jìn)制數(shù)
;nn給出了存放的超始地址值
給程序起始地直或數(shù)據(jù)塊的起始地址賦值。它總是出現(xiàn)在每段源程序或數(shù)據(jù)塊的開(kāi)始。在一個(gè)源程序中可以多次使用ORG命令,以規(guī)定不同程序段或數(shù)據(jù)塊的起始位置,所規(guī)定的地址從小到大,不允許重疊。
例如: ORG 0000H
MAIN:NOV SP,#6FH
。。。。。。。。。。。。
ORG 1000H
SUB1:MOV A,#74H
2、定義字節(jié)命令 DB
告訴匯編程序從指定的地址單元開(kāi)始,定義若干字節(jié)存儲(chǔ)單元并賦初值。
格式: 標(biāo)號(hào):DB <字節(jié)常數(shù)或字符>
例: ORG 1000H
TABLE1:DB 00,01,04,09,10H,19H
匯編后則(1000H)=00H
(1001H)=01H
(1002H)=04H
(1003)=09H
(1004)=10H
(1005)=19H
3、定義字命令 DW
從指定地址開(kāi)始,定義若干個(gè)16個(gè)位數(shù)據(jù),高八位存入低地址;低八位存入高地址。
例、 ORG 1000H
PIOI: DW 7654H,40H、12、‘AB’
例: ORG 2000H
ABC: DB 1234H,2468H,1357H,。。。。。。。
匯編后則(2000H)=12H
(2001H)=34H
(2002H)=24H
(2003H)=68H
(2004H)=13H
(2005H)=57H
4、賦值命令 EQU
告訴匯編程序,將匯編語(yǔ)句操作數(shù)的值賦予本語(yǔ)句的標(biāo)號(hào)。
格式: 標(biāo)號(hào)名稱(chēng) EQU 數(shù)值或匯編符號(hào)
“標(biāo)號(hào)名稱(chēng)”在源程序中可以作數(shù)值使用,也可以作數(shù)據(jù)地址、位地址使用。
先定義后使用,放在程序開(kāi)頭。
格式: 標(biāo)號(hào): EQU nn或匯編符號(hào)
例: BLCK EQU #1000H
TEST EQU 28H(直接地址單元)
TEST1 EQU #28H(立即數(shù))
NMB EQU #10
MOV A,TEST(=direct) 執(zhí)行后,A=(28H)
若28H中存放著56H,則A=56H
MOV A,TEST1(=#data) A=28H
MOV R2,NMB (R2)=10
MOV DPTR,BLOCK
5、源程序結(jié)束 END (告訴匯編程序,對(duì)源程序的匯編到此結(jié)束。一個(gè)程序中只出現(xiàn)一次,在末尾。)
格式: 標(biāo)號(hào): END
6、數(shù)據(jù)地址賦值偽指令 DATA
將表達(dá)式指定的數(shù)據(jù)地址賦予規(guī)定的字符名稱(chēng)
格式: 字符名稱(chēng) DATA 表達(dá)式
注:該指令與EQU 指令相似,只是,可先使用后定義,放于程序開(kāi)頭、結(jié)尾均可。
7、定義空間偽指令 DS
從指定地址開(kāi)始,保留由表達(dá)式指定的若干字節(jié)空間作為備用空間。
格式: [標(biāo)號(hào):] DS 表達(dá)式
例2、 ORG 1000H
DS 0AH
DB 71H,11H,11H ;從100BH開(kāi)始存放71H、11H、11H。
注:DB、DW、DS 只能用于程序存儲(chǔ)器;而不能用于數(shù)據(jù)存儲(chǔ)器。
8、位地址賦值偽指令 BIT
將位地址賦予規(guī)定的字符名稱(chēng)。
格式: 字符名稱(chēng) BIT 位地址
例3、 X1 BIT P12
相當(dāng)于 X1 EQU 92H