?8086 偽指令表
一、數據定義偽操作
偽 指 令 名 稱
語 句 格 式
功 能
定義字節類型的數據存儲區
[變量名] DB 表達式[,…]
定義一個以變量名為首址的字節類型數據存儲區,所含數據元素的個數由其后表達式的個數所決定,數據存儲單元的初值由對應表達式的值給出
定義字節類型的數據存儲區
[變量名] DW 表達式[,…]
同上,只是定義的為字類型的數據存儲區
定義雙字類型的數據存儲區
[變量名] DD 表達式[,…]
同上,只是定義的為雙字類型的數據存儲區
定義四字類型的數據存儲區
[變量名] DD 表達式[,…]
同上,只是定義的為四字類型的數據存儲區
定義十字類型的數據存儲區
[變量名]DT表達式[,。。。]
同上,只是定義的為十字節類型的數據存儲區
定義記錄類型數據存儲區
定義記錄
記錄名RECORD字段名:寬度[=表達示]{,…}
說明:每天個記錄可包含多個字段,字段的寬度指字段值所占的存儲位數(1-16),各字段
定義一個給定名字的記錄,但并不分配存儲單元
定義記錄存儲區
[變量名] 記錄名 <表達式[,表達式]>
定義一個以變量名為首地址的、類型為某記錄的數據存儲區,所含記錄的個數由其后表達式的個數所決定,各字段的值由對應表達式的值給出
定義結構類型數據存儲區
定義結構
結構名STRUC
<數據定義語句序列>
結構名 ENDS
說明:結構內數據定義語句中的變量名也稱為結構字段名
定義一個給定名字的結構,通過結構的定義說明了結構字段名的存在,但并不分配存儲單元
定義結構存儲區
結構變量名 結構名 <字段值表>
定義一個以結構變量名為首地址的、類型為某結構的數據存儲區,結構中各字段的值由字段值表按序給出
二、符號定義偽操作
偽指令名稱
語句格式
功能
等 價
符號名 EQU 表達式
用來為常量,表達式及其它各種符號定義一個等價的符號名,但并不分配存儲單元
等 號
符號名 = 表達式
同上,只是等號語句能對同一符號名再定義
定義符號名
變量名或符號LABEL類型
為當前存儲單元定義一個指定類型的變量或符號
三、定義段、組、過程的偽操作
段定義
段名SEGMENT [定位方式] [組合方式] ’類別’
…
定義了一個以SEGMENT偽指令開始,以ENDS偽指令為結束,給定段名的段
段結束
段名 ENDS
假定
ASSUME段寄存器:段名[,段寄存器:段名]或ASSUME NOTHING說明:其中的”段名”是程序中某一已定義段(或組)的名字,也可以是表達式”SEG變量或標號”
用來設定段寄存器與段之間的對應關系,也可以用來采取消段寄存器與段之間的對應關系(使用NOTHING時)
組定義
組名GROUP段名[,段名]說明:其中的”段名”也可以是表達式”SEG變量或標號”
將模塊中若干個段集合成一個組
(≤64KB),并賦予一個組名,這樣,組內各段之間的跳轉都可以看作是段內跳轉,組名也可以作為直接量或跨段前綴使用
附錄F 8086 偽指令表 ·304·
續表
偽 指 令 名 稱
語 句 格 式
功 能
過程定義
過程名PROC[NEAR]或FAR
定義了一個以PROC開始,以ENDP偽指令為結束的,給定過程名的過程
過程結束
過程名ENDP
四、程序模塊的定義與通信偽操作
偽 指 令 名 稱
語 句 格 式
功 能
定義模塊名
NAME模塊名
將本語句所在的,以END偽指令為結束的源程序定義成給定名字的模塊
源程序(模塊)結束
END[表達式]
該語句只能為源程序的最后一個語句,用以標志整個源程序(模塊)的結束,如果后面帶表達式,則為該程序的啟地址
說明公共符號
PUBLIC符號[,…]
用來說明其后的符號是公共符號,可以被其他模塊調用
說明外部符號
EXTRN符號:類型[,…]
用來說明其后的符號是外部符號,這些外部符號必須在他說定義的模塊中被說明成公共符號且類型必須與定義時的類型一致
五、宏定義偽操作
偽 指 令 名 稱
語 句 格 式
功 能
宏定義
宏指令名MACRO形式參數[,形式參數]
宏定義的開始語句,用來定義一個給定名字的宏指令
宏定義結束
ENDM
用來標志宏定義的結束或重復操作的結束
產生特殊符號
LOCAL 形式參數[,形式參數]
讓宏匯編程序自動為其后的形式參數順序生成特殊符號(范圍從??0000~??FFFFH)并用這些符號來取代宏體中的形參
取消宏定義
PURGE宏指令名[,宏指令名]
取消指定的宏定義
終止宏擴展
EXITM
終止MACRO調用或重復操作(REPT,IRP,IRPC
),立即退出擴展體,擴展體得剩余部分或重復就不執行了
六、重復匯編及條件匯編偽操作
偽 指 令 名 稱
語 句 格 式
功 能
給定次數的重復匯編
REPT表達式
重復塊的開始語句,表示要將重復塊重復匯編表達式所指定的次數
不定次數的
IRP形式參數,<實在參數1,…,實在參數N>
重復塊的開始語句,表示要將重復塊重復匯編由實參個數所給定的次數
重復匯編
IRPC形式參數,字符串
重復塊的開始語句,表示要將重復塊重復匯編由字符串長度所給定的次數
測試表達式的值
正條件:IF數值表達式,反條件:IFE數值表達式,說明:反條件指測試為真的條件與正條件正好相反,在功能說明欄中,圓括號中的內容為反條件
條件匯編塊的開始語句,表示如果表達式的值不為0為真,匯編其后的語句,否則為假,匯編[ELSE]后面的語句,如果[ELSE]不存在,則直接匯編ENDIF后面的語句
測試符號是否定義
正條件:IFDEF符號
反條件:IFNDEF符號
功能同上,只是測試條件為:如果其后符號以被定義(未定義)為真,否則為假
測試掃描次數
正條件:IF1
反條件:IF2
功能同上,只是測試條件為:如果是第一(或第二)遍掃描為真,否則為假
測試參數是否為空
正條件:IFB(參數)
反條件:IFNB(參數)
功能同上,只是測試條件為:如果該參數對應的實參存在(不存在)為真
測試字符串是否相等
正條件:IFIDN(參數1),(參數2)
反條件:IFIDN)(參數1),(參數2)
功能同上,只是測試條件為:如果字符串參數1與字符串參數2相等(不等)為真,否則為假
條件匯編結束
ENDIF
用來標志條件匯編塊的結束
七、換頁控制、列表控制偽操作
偽指令名稱
語句格式
功 能
輸出標題
TITLE正文
為源程序指定標題(≤60個字符)供列表文件輸出
輸出子標題
SUBTTL正文
用在標題之后指定一個小標題,其字符個數不限,但每行均要以SUBTTL開頭,如果SUBTTL不帶正文,則表示要取消前面的字標題
附錄 F 8086 偽指令表 ·305·
續表
偽指令名稱
語句格式
功 能
注釋
COMMENT定界符 文本定界符
為程序作注釋且不用加分號,其中文本字符個數不限,還可以是多行,只要在定界符之間即可,定界符是除空格以外的符號,必須在首尾同時出現
換頁
PAGE
使匯編列表文件輸出時換頁(每頁66行,每行80列)
PAGE頁長,頁寬
使匯編列表文件按指定的頁長(只每頁所含行數,可以是10~255),頁寬(指每行所含列數,可以是60~132)輸出
PAGE+
使匯編列表文件輸出時的章號加1
匯編列表文件輸出控制
.LIST
充許從該行開始的源文件及目標代碼全部在匯編列表文件中輸出(該偽質指令的功能為系統隱含狀態),直到遇到。XLIST偽指令為止用來指定從該行開始的源程序及目標代碼不在匯編列表文件中輸出,直到遇到,LIST偽指令為止。
.XLIST
宏展開列表輸出控制
.LALL
充許在匯編列表文件中列出所有宏擴展內容,包括不產生目標代碼的語句。
.XALL
用來指定在匯編列表文件中僅列出產生目標代碼的宏擴展內容(系統的隱含狀態)
.SALL
用來指定在匯編列表文件中不列出任何宏擴展的內容。
符號交叉引用文件輸出控制
.CREF
充許從該行起的內容在符號交叉引用文件中輸出,直到遇到。XCREF偽指令為止(系統隱含壯態)
.XCREF
用來指定從該行開始的內容不在符號叉引用文件中輸出,直到遇到。XCREF偽指令為止。
輸出正文
%OUT正文
在匯編期間,其后正文送顯示器顯示。
八、其它偽操作
偽 指 令 名 稱
語 句 格 式
功 能
置匯編地址計數器
ORG數值表達式
將匯編地址計數器置成數值表達式所給定的值
置偶地址邊界
EVEN
將匯編地址計數器的值調整成偶數
基數控制
RADIX數值表達式說明:該數值表達式的值要以十進制表示。
用來指定其后語句中所出現不帶數據類型后綴的數具有數值表達式所指定的基數(2~16),該偽指令對DD,DQ,DT數據定義偽指令不起作用。
將指定文本加入源文件
INCLUDE文本文件名
將指定的文本文件加入當前源文件中一起匯編
一、數據定義偽操作
偽 指 令 名 稱
語 句 格 式
功 能
定義字節類型的數據存儲區
[變量名] DB 表達式[,…]
定義一個以變量名為首址的字節類型數據存儲區,所含數據元素的個數由其后表達式的個數所決定,數據存儲單元的初值由對應表達式的值給出
定義字節類型的數據存儲區
[變量名] DW 表達式[,…]
同上,只是定義的為字類型的數據存儲區
定義雙字類型的數據存儲區
[變量名] DD 表達式[,…]
同上,只是定義的為雙字類型的數據存儲區
定義四字類型的數據存儲區
[變量名] DD 表達式[,…]
同上,只是定義的為四字類型的數據存儲區
定義十字類型的數據存儲區
[變量名]DT表達式[,。。。]
同上,只是定義的為十字節類型的數據存儲區
定義記錄類型數據存儲區
定義記錄
記錄名RECORD字段名:寬度[=表達示]{,…}
說明:每天個記錄可包含多個字段,字段的寬度指字段值所占的存儲位數(1-16),各字段
定義一個給定名字的記錄,但并不分配存儲單元
定義記錄存儲區
[變量名] 記錄名 <表達式[,表達式]>
定義一個以變量名為首地址的、類型為某記錄的數據存儲區,所含記錄的個數由其后表達式的個數所決定,各字段的值由對應表達式的值給出
定義結構類型數據存儲區
定義結構
結構名STRUC
<數據定義語句序列>
結構名 ENDS
說明:結構內數據定義語句中的變量名也稱為結構字段名
定義一個給定名字的結構,通過結構的定義說明了結構字段名的存在,但并不分配存儲單元
定義結構存儲區
結構變量名 結構名 <字段值表>
定義一個以結構變量名為首地址的、類型為某結構的數據存儲區,結構中各字段的值由字段值表按序給出
二、符號定義偽操作
偽指令名稱
語句格式
功能
等 價
符號名 EQU 表達式
用來為常量,表達式及其它各種符號定義一個等價的符號名,但并不分配存儲單元
等 號
符號名 = 表達式
同上,只是等號語句能對同一符號名再定義
定義符號名
變量名或符號LABEL類型
為當前存儲單元定義一個指定類型的變量或符號
三、定義段、組、過程的偽操作
段定義
段名SEGMENT [定位方式] [組合方式] ’類別’
…
定義了一個以SEGMENT偽指令開始,以ENDS偽指令為結束,給定段名的段
段結束
段名 ENDS
假定
ASSUME段寄存器:段名[,段寄存器:段名]或ASSUME NOTHING說明:其中的”段名”是程序中某一已定義段(或組)的名字,也可以是表達式”SEG變量或標號”
用來設定段寄存器與段之間的對應關系,也可以用來采取消段寄存器與段之間的對應關系(使用NOTHING時)
組定義
組名GROUP段名[,段名]說明:其中的”段名”也可以是表達式”SEG變量或標號”
將模塊中若干個段集合成一個組
(≤64KB),并賦予一個組名,這樣,組內各段之間的跳轉都可以看作是段內跳轉,組名也可以作為直接量或跨段前綴使用
附錄F 8086 偽指令表 ·304·
續表
偽 指 令 名 稱
語 句 格 式
功 能
過程定義
過程名PROC[NEAR]或FAR
定義了一個以PROC開始,以ENDP偽指令為結束的,給定過程名的過程
過程結束
過程名ENDP
四、程序模塊的定義與通信偽操作
偽 指 令 名 稱
語 句 格 式
功 能
定義模塊名
NAME模塊名
將本語句所在的,以END偽指令為結束的源程序定義成給定名字的模塊
源程序(模塊)結束
END[表達式]
該語句只能為源程序的最后一個語句,用以標志整個源程序(模塊)的結束,如果后面帶表達式,則為該程序的啟地址
說明公共符號
PUBLIC符號[,…]
用來說明其后的符號是公共符號,可以被其他模塊調用
說明外部符號
EXTRN符號:類型[,…]
用來說明其后的符號是外部符號,這些外部符號必須在他說定義的模塊中被說明成公共符號且類型必須與定義時的類型一致
五、宏定義偽操作
偽 指 令 名 稱
語 句 格 式
功 能
宏定義
宏指令名MACRO形式參數[,形式參數]
宏定義的開始語句,用來定義一個給定名字的宏指令
宏定義結束
ENDM
用來標志宏定義的結束或重復操作的結束
產生特殊符號
LOCAL 形式參數[,形式參數]
讓宏匯編程序自動為其后的形式參數順序生成特殊符號(范圍從??0000~??FFFFH)并用這些符號來取代宏體中的形參
取消宏定義
PURGE宏指令名[,宏指令名]
取消指定的宏定義
終止宏擴展
EXITM
終止MACRO調用或重復操作(REPT,IRP,IRPC
),立即退出擴展體,擴展體得剩余部分或重復就不執行了
六、重復匯編及條件匯編偽操作
偽 指 令 名 稱
語 句 格 式
功 能
給定次數的重復匯編
REPT表達式
重復塊的開始語句,表示要將重復塊重復匯編表達式所指定的次數
不定次數的
IRP形式參數,<實在參數1,…,實在參數N>
重復塊的開始語句,表示要將重復塊重復匯編由實參個數所給定的次數
重復匯編
IRPC形式參數,字符串
重復塊的開始語句,表示要將重復塊重復匯編由字符串長度所給定的次數
測試表達式的值
正條件:IF數值表達式,反條件:IFE數值表達式,說明:反條件指測試為真的條件與正條件正好相反,在功能說明欄中,圓括號中的內容為反條件
條件匯編塊的開始語句,表示如果表達式的值不為0為真,匯編其后的語句,否則為假,匯編[ELSE]后面的語句,如果[ELSE]不存在,則直接匯編ENDIF后面的語句
測試符號是否定義
正條件:IFDEF符號
反條件:IFNDEF符號
功能同上,只是測試條件為:如果其后符號以被定義(未定義)為真,否則為假
測試掃描次數
正條件:IF1
反條件:IF2
功能同上,只是測試條件為:如果是第一(或第二)遍掃描為真,否則為假
測試參數是否為空
正條件:IFB(參數)
反條件:IFNB(參數)
功能同上,只是測試條件為:如果該參數對應的實參存在(不存在)為真
測試字符串是否相等
正條件:IFIDN(參數1),(參數2)
反條件:IFIDN)(參數1),(參數2)
功能同上,只是測試條件為:如果字符串參數1與字符串參數2相等(不等)為真,否則為假
條件匯編結束
ENDIF
用來標志條件匯編塊的結束
七、換頁控制、列表控制偽操作
偽指令名稱
語句格式
功 能
輸出標題
TITLE正文
為源程序指定標題(≤60個字符)供列表文件輸出
輸出子標題
SUBTTL正文
用在標題之后指定一個小標題,其字符個數不限,但每行均要以SUBTTL開頭,如果SUBTTL不帶正文,則表示要取消前面的字標題
附錄 F 8086 偽指令表 ·305·
續表
偽指令名稱
語句格式
功 能
注釋
COMMENT定界符 文本定界符
為程序作注釋且不用加分號,其中文本字符個數不限,還可以是多行,只要在定界符之間即可,定界符是除空格以外的符號,必須在首尾同時出現
換頁
PAGE
使匯編列表文件輸出時換頁(每頁66行,每行80列)
PAGE頁長,頁寬
使匯編列表文件按指定的頁長(只每頁所含行數,可以是10~255),頁寬(指每行所含列數,可以是60~132)輸出
PAGE+
使匯編列表文件輸出時的章號加1
匯編列表文件輸出控制
.LIST
充許從該行開始的源文件及目標代碼全部在匯編列表文件中輸出(該偽質指令的功能為系統隱含狀態),直到遇到。XLIST偽指令為止用來指定從該行開始的源程序及目標代碼不在匯編列表文件中輸出,直到遇到,LIST偽指令為止。
.XLIST
宏展開列表輸出控制
.LALL
充許在匯編列表文件中列出所有宏擴展內容,包括不產生目標代碼的語句。
.XALL
用來指定在匯編列表文件中僅列出產生目標代碼的宏擴展內容(系統的隱含狀態)
.SALL
用來指定在匯編列表文件中不列出任何宏擴展的內容。
符號交叉引用文件輸出控制
.CREF
充許從該行起的內容在符號交叉引用文件中輸出,直到遇到。XCREF偽指令為止(系統隱含壯態)
.XCREF
用來指定從該行開始的內容不在符號叉引用文件中輸出,直到遇到。XCREF偽指令為止。
輸出正文
%OUT正文
在匯編期間,其后正文送顯示器顯示。
八、其它偽操作
偽 指 令 名 稱
語 句 格 式
功 能
置匯編地址計數器
ORG數值表達式
將匯編地址計數器置成數值表達式所給定的值
置偶地址邊界
EVEN
將匯編地址計數器的值調整成偶數
基數控制
RADIX數值表達式說明:該數值表達式的值要以十進制表示。
用來指定其后語句中所出現不帶數據類型后綴的數具有數值表達式所指定的基數(2~16),該偽指令對DD,DQ,DT數據定義偽指令不起作用。
將指定文本加入源文件
INCLUDE文本文件名
將指定的文本文件加入當前源文件中一起匯編