




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
本文格式為Word版,下載可任意編輯——匯編語(yǔ)言程序格式匯編語(yǔ)言程序格式
(1)建立并運(yùn)行一個(gè)匯編語(yǔ)言程序有幾個(gè)操作步驟?(2)指令和偽指令的區(qū)別是什么?
(3)在匯編語(yǔ)言程序中,段定義偽指令和數(shù)據(jù)定義偽指令起什么作用?(4)變量和標(biāo)號(hào)的類型屬性分別有哪幾種?
(5)什么是表達(dá)式?表達(dá)式的優(yōu)先級(jí)順序是如何排列的?(6)匯編語(yǔ)言的上機(jī)過(guò)程是什么?
(7)匯編語(yǔ)言源程序一般由幾個(gè)段組成?
(8)匯編程序和連接程序的輸入、輸出文件有哪些?它們的作用是什么?
了解編輯程序、匯編程序、連接程序的功能及其輸入、輸出文件的類型;了解匯編語(yǔ)言源程序的格式;
熟練把握并運(yùn)用段定義偽指令和數(shù)據(jù)定義及存儲(chǔ)器分派偽指令;
熟悉數(shù)值表達(dá)式的書寫規(guī)范;上機(jī)編程時(shí)學(xué)會(huì)使用DEBUG調(diào)試程序。
介紹了匯編語(yǔ)言程序的完整段和簡(jiǎn)化段格式。在學(xué)習(xí)本內(nèi)容時(shí),可利用匯編語(yǔ)言程序的框架,通過(guò)上機(jī)來(lái)驗(yàn)證和理解各種指令和偽指令的格式、功能及作用。
段定義偽指令、數(shù)據(jù)定義及存儲(chǔ)器分派偽指令及其它偽指令;數(shù)據(jù)類型屬性和代碼屬性及其在編程中的應(yīng)用;數(shù)值表達(dá)式的表示及其應(yīng)用。
1匯編程序功能2偽指令
2.1段定義偽指令
2.1.1完整的段定義偽指令
2.2.2存儲(chǔ)模型與簡(jiǎn)化段定義偽指令2.2.3段組定義偽指令
2.3程序開(kāi)始和終止偽指令
2.4數(shù)據(jù)定義及存儲(chǔ)器分派偽指令2.5表達(dá)式賦值偽指令
2.6地址計(jì)數(shù)器與對(duì)準(zhǔn)偽指令2.7基數(shù)控制偽指令3匯編語(yǔ)言程序格式
3.1.匯編語(yǔ)言源程序語(yǔ)句的格式3.2表達(dá)式
3.3匯編語(yǔ)言源程序格式舉例
4匯編語(yǔ)言程序的上機(jī)過(guò)程1建立匯編語(yǔ)言的工作環(huán)境2匯編語(yǔ)言程序上機(jī)運(yùn)行過(guò)程3COM文件
第1頁(yè)共21頁(yè)
第一節(jié)匯編程序功能建立,運(yùn)行匯編語(yǔ)言程序
匯編程序的主要功能:
1.檢查源程序,給出出錯(cuò)信息。
2.產(chǎn)生目標(biāo)文件(.obj)和列表文件(.lst)。3.展開(kāi)宏指令。
其次節(jié)偽指令
匯編語(yǔ)言程序中的語(yǔ)句可以由指令、偽指令和宏指令組成。上一章我們介紹了8086指令系統(tǒng)中的6類指令,每一條指令都對(duì)應(yīng)一種CPU操作。
偽指令又稱為偽操作,它是在對(duì)源程序匯編期間由匯編程序處理的操作,它們可以完成如處理器選擇、定義程序模式、定義數(shù)據(jù)、分派存儲(chǔ)區(qū)、指示程序終止等功能。
宏指令是由用戶依照宏定義格式編寫的一段程序,其中語(yǔ)句可以是指令、偽指令,甚至是已定義的宏指令。宏指令將在第七章中介紹。
偽指令和指令的區(qū)別在于,每一條指令必需生成機(jī)器代碼,然后在程序運(yùn)行期間由CPU來(lái)執(zhí)行其操作;而偽指令是在匯編期間由匯編程序執(zhí)行的操作命令,除了數(shù)據(jù)定義及存儲(chǔ)器分派偽指令分派存儲(chǔ)器空間外,其它偽指令不生成目標(biāo)碼。和各種指令一樣,偽指令也是程序設(shè)計(jì)不可缺少的工具。下面介紹一些常用的偽指令。
第2頁(yè)共21頁(yè)
2.1處理器選擇偽操作
.8086選擇8086指令系統(tǒng).286選擇80286指令系統(tǒng)
.286P選擇保護(hù)模式下的80286指令系統(tǒng).386選擇80386指令系統(tǒng)
.386P選擇保護(hù)模式下的80386指令系統(tǒng).486選擇80486指令系統(tǒng)
.486P選擇保護(hù)模式下的80486指令系統(tǒng).586選擇Pentium指令系統(tǒng)
.586P選擇保護(hù)模式下的Pentium指令系統(tǒng)
2.2段定義偽指令
段定義偽指令是表示一個(gè)段開(kāi)始和終止的命令,80x86有兩種段定義的方式:完整段定義和簡(jiǎn)化段定義,分別使用不同的段定義偽指令來(lái)表示各種段。
1.完整段定義偽指令的格式如下:
由于ASSUME偽指令只是指定某個(gè)段分派給哪一個(gè)段寄放器,它并不能把段地址裝入段寄放器中,所以在代碼段中,還必需把段地址裝入相應(yīng)的段寄放器中:MOVAX,DATA_SEG1;數(shù)據(jù)段地址MOVDS,AX;存入DS寄放器MOVAX,DATA_SEG2;附加段地址MOVES,AX;存入ES寄放器
假使程序中還定義了堆棧段STACK_SEG,也需要把段地址裝入SS中:MOVAX,STACK_SEG;堆棧段地址MOVSS,AX;存入ES寄放器
第3頁(yè)共21頁(yè)
注意,在程序中不需要用指令裝入代碼段的段地址,由于在程序初始化時(shí),裝入程序已將代碼段的段地址裝入CS寄放器了。而DS和ES是指向一個(gè)稱為“PSP〞(程序段前綴)的一塊區(qū)域的首地址。
為了對(duì)段定義作進(jìn)一步地控制,SEGMENT偽指令還可以增加類型及屬性的說(shuō)明,其格式如下:
段名SEGMENT[定位類型][組合類型]['類別']…段名ENDS
[]中的內(nèi)容是可選的,一般狀況下,這些說(shuō)明可以不用。但是,假使需要用連接程序把本程序與其他程序模塊相連接時(shí),就需要提供類型和屬性的說(shuō)明。
第4頁(yè)共21頁(yè)
·定位類型:說(shuō)明段的起始邊界值(物理地址)。
定位類型BYTEWORDDWORDPARAPAGE說(shuō)明段可以從任何地址邊界開(kāi)始段從字邊界開(kāi)始,即段的起始邊界值為偶數(shù)段從雙字的邊界開(kāi)始,即段的起始邊界值為4的倍數(shù)段從小段邊界開(kāi)始,即段的起始邊界值為16(或10H)的倍數(shù)段從頁(yè)邊界開(kāi)始,即段的起始邊界值為256(或100H)的倍數(shù)注意:定位類型的缺省項(xiàng)是PARA,即在未指定定位類型的狀況下,則連接程序默認(rèn)為PARA。BYTE和WORD用于把其它段(尋常是數(shù)據(jù)段)連入一個(gè)段時(shí)使用;DWORD一般用于運(yùn)行在80386及后繼機(jī)型上的程序。
·組合類型:說(shuō)明程序連接時(shí)的段組合方法。組合類型PRIVATEPUBLICCOMMONAT表達(dá)式MEMORYSTACK說(shuō)明該段為私有段,連接時(shí)將不與其它模塊中的同名段合并該段連接時(shí)將與其它同名段連接在一起,連接次序由連接命令指定該段在連接時(shí)與其它同名段有一致的起始地址,所以會(huì)產(chǎn)生覆蓋段地址=表達(dá)式的值,其值必為16位但AT不能用來(lái)指定代碼段與PUBLIC同義將多個(gè)同名堆棧段連接在一起,SP設(shè)置在第一個(gè)堆棧段的開(kāi)始注意:組合類型的缺省項(xiàng)是PRIVATE。
例:在連接之前已定義兩個(gè)目標(biāo)模塊如下:
模塊1SSEGSEGMENTPARASTACK
DSEG1SEGMENTPARAPUBLIC'Data'DSEG2SEGMENTPARA
CSEGSEGMENTPARA'Code'
模塊2DSEG1SEGMENTPARAPUBLIC'Data'DSEG2SEGMENTPARA
CSEGSEGMENTPARA'Code'
以上兩個(gè)模塊分別匯編后產(chǎn)生.OBJ文件,經(jīng)連接程序連接后產(chǎn)生的.EXE模塊如下:
模塊1CSEGSEGMENTPARA'Code'模塊2CSEGSEGMENTPARA'Code'
模塊1+2DSEG1SEGMENTPARAPUBLIC'Data'
第5頁(yè)共21頁(yè)
DUP(duplicate)
DUP偽指令可以依照給定的次數(shù)來(lái)復(fù)制某個(gè)(某些)操作數(shù),它可以避免屢屢鍵入同樣一個(gè)數(shù)據(jù)。例如,把6個(gè)FFH存入相繼字節(jié)中,可以用下面兩種方法,顯然用DUP的方法更簡(jiǎn)便些。
存入6字節(jié)的FFH
DATA20DB0FFH0FFH0FFH0FFH0FFH0FFH;DATA21DB6DUP(0FFH)
PTR屬性操作符
PTR指定操作數(shù)的類型屬性,它優(yōu)先于隱含的類型屬性。其格式為:
類型PTR變量[±常數(shù)表達(dá)式]
其中類型可以是BYTE、WORD、DWORD、FWORD、QWORD或TBYTE,這樣變量的類型就可以指定了。如下例:(P131例14)
LABEL偽指令
LABEL可以使同一個(gè)變量具有不同的類型屬性。其格式為:
其中變量的數(shù)據(jù)類型可以是BYTE,WORD,DWORD。
第11頁(yè)共21頁(yè)
2.5表達(dá)式賦值偽操作EQU
EQU是一個(gè)賦值偽操作(偽指令),它給一個(gè)數(shù)據(jù)標(biāo)號(hào)賦于一個(gè)常數(shù)值,但這個(gè)常數(shù)不占用存儲(chǔ)單元。當(dāng)這個(gè)數(shù)據(jù)標(biāo)號(hào)出現(xiàn)在程序中時(shí),匯編程序即用它的常數(shù)值代替數(shù)據(jù)標(biāo)號(hào)。EQU可以在數(shù)據(jù)段之外使用,甚至可用在代碼段中間。
使用EQU操作的優(yōu)點(diǎn)可從下面的例子中看出:COUNTEQU25
COUNTERDBCOUNTMOVAL,COUNT
=偽操作
賦值偽操作\的作用與EQU類似。它們之間的區(qū)別是,EQU偽操作中的標(biāo)號(hào)名是不允許重復(fù)定義的,而=偽操作是允許重復(fù)定義的。
注意:在EQU語(yǔ)句的表達(dá)式中,假使有變量或標(biāo)號(hào)的表達(dá)式,則在該語(yǔ)句前應(yīng)率先給出它們的定義。如上例,ALPHA必需在BETA之前定義,否則匯編程序?qū)⒅甘境鲥e(cuò)。例如,TMPEQU5
TMPEQUTMP+1則是錯(cuò)誤語(yǔ)句,由于TMP已賦值為5,就不能再把它定義為其它數(shù)值。
而TMP=5
TMP=TMP+1則是允許使用的,由于=偽操作允許重復(fù)定義。第一個(gè)語(yǔ)句TMP的值為5,其次個(gè)語(yǔ)句TMP的值就為6了。
2.6地址計(jì)數(shù)器與對(duì)準(zhǔn)偽指令1.
第12頁(yè)共21頁(yè)
ORG偽操作:
生成COM程序:
2.EVEN偽指令
EVEN偽指令使下一個(gè)變量或指令開(kāi)始于偶數(shù)字節(jié)地址。
3.ALIGN偽指令
ALIGN偽指令使它后面的數(shù)據(jù)或指令從2的整數(shù)倍地址開(kāi)始。其格式為:ALIGN2n(n為任意整數(shù))
2.7基數(shù)控制偽指令.RADIX偽指令
.RADIX可以把默認(rèn)的基數(shù)改變?yōu)?~16范圍內(nèi)的任何基數(shù)。其格式如下:
.RADIX基數(shù)值
其中基數(shù)值用十進(jìn)制數(shù)來(lái)表示。
應(yīng)當(dāng)注意,在用.RADIX16把基數(shù)定為十六進(jìn)制后,十進(jìn)制數(shù)后面都應(yīng)跟字母D。在這種狀況下,假使某個(gè)十
六進(jìn)制數(shù)的末字符為D,則應(yīng)在其后跟字母H,以免與十進(jìn)制數(shù)發(fā)生混淆。
第13頁(yè)共21頁(yè)
4.3匯編語(yǔ)言程序格式
3.1.匯編語(yǔ)言源程序語(yǔ)句的格式
(1)名字項(xiàng)
源程序中用以下字符來(lái)表示名字:字母A~Z數(shù)字0~9
專用字符?、·、@、-、$
除數(shù)字外,所有字符都可以放在源語(yǔ)句的第一個(gè)位置。名字中假使用到·則必需是第一個(gè)字符??梢杂煤枚嘧址麃?lái)說(shuō)明名字,但只有前面的31個(gè)字符能被匯編程序所識(shí)別。一般說(shuō)來(lái),名字項(xiàng)可以是標(biāo)號(hào)或變量。它們都用來(lái)表示本語(yǔ)句的符號(hào)地址,都是可有可無(wú)的,只有當(dāng)需要用符號(hào)地址來(lái)訪問(wèn)該語(yǔ)句時(shí)它才需要出現(xiàn)?!?biāo)號(hào):標(biāo)號(hào)在代碼段中定義,后面跟著冒號(hào):,它也可以用LABEL或EQU偽操作來(lái)定義。此外,它還可以作為過(guò)程名定義,這將在以后的章節(jié)中加以說(shuō)明。·變量:變量在數(shù)據(jù)段或附加數(shù)據(jù)段中定義,后面不跟冒號(hào)。它也可以用LABEL或EQU偽操作來(lái)定義。變量經(jīng)常在操作數(shù)字段出現(xiàn)。(2)操作項(xiàng)
操作項(xiàng)可以是指令、偽指令或宏指令的助記符。對(duì)于指令,匯編程序?qū)⑵浞g為機(jī)器語(yǔ)言指令。對(duì)于偽指令,匯編程序?qū)⒏鶕?jù)其所要求的功能進(jìn)行處理。對(duì)于宏指令,則將根據(jù)其定義展開(kāi)。宏指令在第七章中將會(huì)專門論述。(3)操作數(shù)項(xiàng)
操作數(shù)項(xiàng)由一個(gè)或多個(gè)表達(dá)式組成,多個(gè)操作數(shù)項(xiàng)之間一般用逗號(hào)分開(kāi)。對(duì)于指令,操作數(shù)項(xiàng)一般給出操作數(shù)地址,它們可能有一個(gè),或二個(gè),或三個(gè),或一個(gè)也沒(méi)有。對(duì)于偽操作或宏指令,則給出它們所要求的參數(shù)。
操作數(shù)項(xiàng)可以是常數(shù)、寄放器、標(biāo)號(hào)、變量或由表達(dá)式組成。(4)解釋項(xiàng)
解釋項(xiàng)用來(lái)說(shuō)明一段程序、一條或幾條指令的功能。對(duì)于匯編語(yǔ)言程序來(lái)說(shuō),解釋項(xiàng)的作用是很明顯的,它可以使程序簡(jiǎn)單被讀懂,因此匯編語(yǔ)言程序必需寫好解釋。解釋應(yīng)當(dāng)寫出本條(或本段)指令在程序中的功能和作用,而不應(yīng)當(dāng)只寫指令的動(dòng)作。
第14頁(yè)共21頁(yè)
3.2表達(dá)式
(1)算術(shù)操作符
算術(shù)操作符有+、-、*、/和MOD。
MOD是指除法運(yùn)算后得到的余數(shù),如19/7的商是2,而19MOD7則為5(余數(shù))。
(2)規(guī)律操作符AND、OR、XOR、NOT、SHL、SHR
(3)關(guān)系操作符
關(guān)系操作符有:EQ(相等)、NE(不等)、LT(小于)、GT(大于)、LE(小于或等于)、GE(大于或等于)。
第15頁(yè)共21頁(yè)
(4)數(shù)值回送操作符
TYPE、LENGTH、SIZE、OFFSET、SEG
例:
(5)屬性操作符
屬性操作符主要有:PTR、段操作符、SHORT、THIS、HIGH、LOW等。
第16頁(yè)共21頁(yè)
·操作符的優(yōu)先級(jí)(p143)
操作符的優(yōu)先級(jí)別從高到低排列如下:1.在圓括號(hào)中的項(xiàng),方括號(hào)中的項(xiàng),結(jié)構(gòu)變量(變量,字段。),然后是LENGTH、SIZE、WIDTH和MASK。2.名:(段取代)。
3.PTR,OFFSET,SEG,TYPE,THIS及段操作符。HIGH和LOW。
5.乘法和除法:*,/,MOD。6.加法和減法:+,-。
7.關(guān)系操作:EQ,NE,LT,LE,GT,GE。8.規(guī)律:NOT。9.規(guī)律:AND。
10.規(guī)律:OR,XOR。11.SHORT。
3.3匯編語(yǔ)言源程序格式舉例(p144)例1.完整段定義格式
;TITLE文件名-程序主要功能描述;EQU語(yǔ)句
;**************************datareasegment;定義數(shù)據(jù)段;數(shù)據(jù)定義語(yǔ)句
datareaends
;**************************prognamsegment;定義代碼段
;mainprocfar;主程序assumecs:prognam,ds:datarea
start:;程序起始執(zhí)行地址;為程序返回DOS設(shè)置堆棧值pushds;入棧保存原DS段址subax,ax;設(shè)置偏移地址為0pushax;入棧保存偏移地址
;置DS寄放器為當(dāng)前數(shù)據(jù)段
movax,datarea;datarea段地址movds,ax;存入DS寄放器
;主程序部分
ret;返回DOSmainendp;主程序終止
第17頁(yè)共21頁(yè)
;sub1procnear;定義子程序
;子程序部分
sub1endp;子程序終止
;
prognamends;代碼段終止
;***********************************endstart;匯編終止
例2.簡(jiǎn)化段定義格式
.modelsmall;定義存儲(chǔ)器模型.stack100h;定義堆棧段.data;定義數(shù)據(jù)段
;數(shù)據(jù)定義語(yǔ)句
.code;定義代碼段mainprocfarstart:
movax,@data;數(shù)據(jù)段地址
movds,ax;存入DS寄放器
;主程序部分
movax,4c00h
int21h;返回DOSmainendp;主程序終止endstart;匯編終止
4匯編語(yǔ)言程序的上機(jī)過(guò)程1建立匯編語(yǔ)言的工作環(huán)境
為運(yùn)行匯編語(yǔ)言程序至少要在磁盤上建立以下文件:1.編輯程序,如EDIT.EXE2.匯編程序,如MASM.EXE3.連接程序,如LINK.EXE調(diào)試程序,如DEBUG.COM
必要時(shí),還可建立如CREF.EXE,EXE2BIN.EXE等文件。
第18頁(yè)共21頁(yè)
2匯編語(yǔ)言程序上機(jī)運(yùn)行過(guò)程
C>EDITMYFILE.ASM
C>MASMMYFILE.ASM
Microsoft(R)MacroAssemblerVersion5.00
Copyright(C)MicrosoftCorp1981-1985,1987.Allrightsreserved.Objectfilename[MYFILE.OBJ]:Sourcelisting[NUL.LST]:MYFILE.LSTCross-reference[NUL.CRF]:
51646+44778Bytessymbolspacefree0WarningErrors0SevereErrors
C>LINKMYFILE.OBJ
Microsoft(R)OverlayLinkerVersion3.60Copyright(C)MicrosoftCorp1983-1987.Allrightsreserved.RunFile[MYFILE.EXE]:ListFile[NUL.MAP]:Libraries[.LIB]:
LINK:warningL4021:nostacksegment
C>MYFILE
上述內(nèi)容是建立并運(yùn)行一個(gè)匯編語(yǔ)言程序的操作,紅色字表示程序員鍵入的命令,黑色字是計(jì)算機(jī)的回復(fù),為回車符。假設(shè)EDIT、MASM、LINK和匯編語(yǔ)言程序都在C盤中。
LINK程序的輸出文件有.EXE可執(zhí)行文件和.MAP連接映象文件。.EXE文件是CPU能識(shí)別并執(zhí)行的代碼,.M
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年天津市家居裝修施工合同模板
- 借款合同樣本手寫管用
- 二零二五豪華精裝房裝修合同
- 二零二五土地租賃協(xié)議合同模板-@-1
- 二零二五版?zhèn)€人借款三方擔(dān)保合同
- 2025年電子脈沖治療儀項(xiàng)目發(fā)展計(jì)劃
- 有關(guān)孩子共同撫養(yǎng)的離婚協(xié)議二零二五年
- 依托資源招商合同范例
- 與公司簽訂保密協(xié)議二零二五年
- 殘疾人用工協(xié)議二零二五年
- (3月省質(zhì)檢)福建省2025屆高三畢業(yè)班適應(yīng)性練習(xí)卷英語(yǔ)試卷(含答案)
- 專業(yè)網(wǎng)格員測(cè)試題及答案
- 2025年上半年貴州黔東南州各縣(市)事業(yè)單位招聘工作人員1691人筆試易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 湖南省長(zhǎng)沙市雅禮教育集團(tuán)2024-2025學(xué)年高一上學(xué)期期末考試英語(yǔ)試卷含答案
- 2025年廣東深圳高三一模英語(yǔ)試題及詞匯解析
- 釹鐵硼項(xiàng)目可行性分析報(bào)告(模板參考范文)
- 儲(chǔ)能項(xiàng)目竣工報(bào)告
- 甘肅開(kāi)放大學(xué)2024年《信息技術(shù)與信息管理》形考作業(yè)1-4答案
- 倉(cāng)庫(kù)主管每周工作總結(jié)范文
- 《阻燃材料與技術(shù)》課件 第7講 阻燃橡膠材料
- DB13-T 5996-2024 公路基層病害聚合物注漿處治技術(shù)規(guī)程
評(píng)論
0/150
提交評(píng)論