(三)偽指令語句的增強(qiáng)與擴(kuò)充
1.簡(jiǎn)化段定義偽指令
(1)簡(jiǎn)化段定義偽指令:完整段定義偽指令和簡(jiǎn)化段定義偽指令。在MASM5.0以上的匯編語言版本中,既可以使用完整段定義偽指令,又可使用簡(jiǎn)化段定義偽指令;在低于MASM5.0的版本中,只能使用完整段定義偽指。
簡(jiǎn)化段定義偽指令如下表所示。
簡(jiǎn)化段定義偽指令
段語句名 偽指令格式 功 能
代碼段語句 .CODE[名字] 定義一個(gè)代碼段,如果有多個(gè)代碼段,要用名字加以區(qū)分
堆棧段語句 .STACK[長度] 定義一個(gè)堆棧段,并形成堆棧段寄存器SS和堆棧指針SP的初值。(SP)=長度,如果省略長度,則(SP)=1024
初始化近程數(shù)據(jù)段語句 .DATA 定義一個(gè)近程數(shù)據(jù)段,當(dāng)用來與高級(jí)語言程序連接時(shí),其數(shù)據(jù)空間要賦初值
非初始化近程數(shù)據(jù)段句 .DATA? 定義一個(gè)近程數(shù)據(jù)段,當(dāng)用來與高級(jí)語言程序連接時(shí),其數(shù)據(jù)空間只能用“?”定義,表示不賦初值
常數(shù)段語句 .CONST 定義一個(gè)常數(shù)段,該段是近程的,用來與高級(jí)語言程序連接, 段中數(shù)據(jù)不能改變
初始化遠(yuǎn)程數(shù)據(jù)段語句 .FARDARA?[名字] 定義一個(gè)遠(yuǎn)程數(shù)據(jù)段,且其數(shù)據(jù)語句的數(shù)據(jù)應(yīng)賦初值,用來與高級(jí)語言程序連接
非初始化遠(yuǎn)程數(shù)據(jù)段句 .FARDARA[名字] 定義一個(gè)遠(yuǎn)程數(shù)據(jù)段,但其數(shù)據(jù)空間不賦初值,只能用“?”定義數(shù)據(jù),用來與高級(jí)語言程序連接
(2)定義內(nèi)存模式偽指令(MODEL)
在使用簡(jiǎn)化段定義偽指令時(shí),必須事先說明用戶使用的內(nèi)存模式。格式:MODEL 模式類型[,高級(jí)語言]功能:指定數(shù)據(jù)和代碼允許使用的長度。
●程序中凡數(shù)據(jù)或代碼的長度不大于64KB時(shí)為近程,否則為遠(yuǎn)程。近程的數(shù)據(jù)通常定義在一個(gè)段中,對(duì)應(yīng)于物理存儲(chǔ)器中的一個(gè)段,只要程序一開始將其段值設(shè)置在DS中,以后數(shù)據(jù)的訪問只改變偏移值,而不必改變其段值。
通?偸菍⒍x內(nèi)存模式偽指令語句放在用戶程序中其他簡(jiǎn)化定義偽指令語句之前?晒┻x擇的內(nèi)存模式有5類,如下表所示。當(dāng)獨(dú)立的匯編語言源程序不與高級(jí)語言程序連接時(shí),多數(shù)情況下只用小模式。
內(nèi)存模式的類型
內(nèi)存模式 說 明
Small 小模式,程序中的數(shù)據(jù)放在64KB的數(shù)據(jù)段內(nèi),代碼放在64KB的代碼段中,為近程
Medium 中模式,數(shù)據(jù)為近程,允許代碼為遠(yuǎn)程
Compact 壓縮模式,代碼為近程,允許數(shù)據(jù)為遠(yuǎn)程
Large 大模式,允許數(shù)據(jù)和代碼為遠(yuǎn)程,但一個(gè)數(shù)據(jù)段不能大于64KB
Huge 巨型模式,允許數(shù)據(jù)和代碼為遠(yuǎn)程,且數(shù)據(jù)語句所用存儲(chǔ)空間可以大于64KB
2.方式選擇偽指令
80x86匯編語言是在8086/8088匯編語言的基礎(chǔ)上逐步發(fā)展并向上兼容的,因此在對(duì)源程序進(jìn)行匯編時(shí),匯編程序首先要區(qū)分當(dāng)前的源程序是針對(duì)80x86系列的哪種微處理器而執(zhí)行的,為此提供了微處理器方式選擇偽指令。又因?yàn)镸ASM5.0中對(duì)應(yīng)每種微處理機(jī)的指令系統(tǒng)都有一個(gè)匯編執(zhí)行語句集合,簡(jiǎn)稱指令集,因此微處理器方式選擇偽指令,實(shí)質(zhì)上也就是指令集選擇偽指令。方式選擇偽指令的格式和功能下表所示。
方式選擇偽指令的格式和功能
偽指令格式
功 能
.8086
這是一種默認(rèn)方式,它告訴匯編程序只接受8086/8088指令
.286/.286C 它告訴匯編程序只接受8086/8088指令以及80286非保護(hù)方式下的指令,用.8086可以刪除該偽指令
.286P 靠訴匯編程序接受8086/8088以及80286的所有指令(不僅包括保護(hù)方式下的指令,也包括非保護(hù)方式下的指令),通常只有系統(tǒng)設(shè)計(jì)人員才使用該偽指令,可以使用.8086偽指令刪除
.386/.386C 告訴匯編程序接受8086/8088指令,以及80286/80386非保護(hù)方式下的指令。在這種方式下,將禁止所有保護(hù)方式下的指令出現(xiàn),否則將出錯(cuò)
.386P 除具有.386/.386C功能外,還允許匯編保護(hù)方式下的80286/80386指令,通常只有系統(tǒng)設(shè)計(jì)人員才使用該偽指令?梢允褂.8086偽指令刪除
.8087 選用8087指令集,并指定實(shí)數(shù)的二進(jìn)制碼為IEEE格式
.287 選用80287指令集,并指定實(shí)數(shù)的二進(jìn)制碼為IEEE格式
.387 選用80387指令集,并指定實(shí)數(shù)的二進(jìn)制碼為IEEE格式
.486/.486C 允許匯編非保護(hù)方式下的80486指令。MASM6.0可以使用
.486P 允許匯編80486的全部指令。MASM6.0可以使用
上述偽指令語句一般放在源程序的開頭
相關(guān)推薦:
2014年計(jì)算機(jī)等級(jí)考試過關(guān)技巧
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |