第四章 語言程序格式_第1頁
第四章 語言程序格式_第2頁
第四章 語言程序格式_第3頁
第四章 語言程序格式_第4頁
第四章 語言程序格式_第5頁
已閱讀5頁,還剩68頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第四章匯編語言程序格式§4.1匯編語言語句種類及格式§4.2偽操作§4.4匯編語言的上機(jī)過程§4.1匯編語言語句種類及格式指令語句偽指令語句宏指令一、指令語句使CPU產(chǎn)生動作、并在程序執(zhí)行時才處理的語句,就是第2章學(xué)習(xí)的處理器指令書寫格式

[標(biāo)號:]指令助記符[DEST[,SRC]][;注釋] 標(biāo)號:一條指令的符號地址??梢允÷裕缬斜仨氁浴埃骸弊鳛榻Y(jié)束標(biāo)志。在程序段或子程序段的第一條指令處可使用標(biāo)號,以在程序需要時轉(zhuǎn)移到該處時,以標(biāo)號的形式引用。指令語句—標(biāo)號的命名標(biāo)號的命名:根據(jù)用途,由字母、數(shù)字、專用符號?-$@ 約定:

最長31個字符

第一個字符不能是數(shù)字 ?-$@可出現(xiàn)在標(biāo)號的任意位置,但?$不能單獨使用 .只能出現(xiàn)在起始位置 一個程序中,每個標(biāo)識符的定義是唯一的,且不能與任何保留字相同二、偽指令語句(Directive)——不產(chǎn)生CPU動作、在程序執(zhí)行前由匯編程序處理的說明性語句,例如,數(shù)據(jù)說明、變量定義等等偽指令與具體的處理器類型無關(guān),但與匯編程序的版本有關(guān)[名字]偽指令[操作數(shù)][;注釋]偽指令語句—格式說明符號名字段:與標(biāo)號相區(qū)別,不帶“:”可以是常量名、變量名、過程名、結(jié)構(gòu)名、記錄名等可視為指令語句中的操作數(shù)(如符號名就表示一個常量或存儲地址命名規(guī)則與標(biāo)號相同偽指令字段:規(guī)定這條語句要求匯編程序完成的具體操作§4.2偽操作一、數(shù)據(jù)定義及存儲器分配偽操作二、表達(dá)式賦值偽操作三、段定義偽操作四、程序開始和結(jié)束偽操作五、地址計數(shù)器及對準(zhǔn)偽操作六、基數(shù)控制偽操作七、處理器選擇偽操作數(shù)據(jù)是語句中操作數(shù)的基本組成部分一般來講數(shù)據(jù)具有數(shù)值和屬性兩個特征匯編語言能識別的數(shù)據(jù)項包括:常數(shù)、變量和標(biāo)號一、數(shù)據(jù)定義及存儲器分配偽操作變量:代表存儲在某些存儲單元中的數(shù)據(jù),在程序運行期間可以修改;對變量的訪問以變量名的形式進(jìn)行;可認(rèn)為變量名為存儲單元的符號地址變量的定義與預(yù)置 由數(shù)據(jù)定義偽操作完成分配存儲單元起名字賦初值一、數(shù)據(jù)定義偽指令的格式變量名DBDWDDDQ表達(dá)式1,表達(dá)式2,…段屬性(SEG):表示變量存放在哪個邏輯段中,訪問時要使之成為當(dāng)前段偏移量屬性(OFFSET):表示變量在所屬邏輯段中距起始點的距離類型屬性(TYPE):表示變量所占字節(jié)數(shù)一、數(shù)據(jù)定義偽指令(表達(dá)式)數(shù)值表達(dá)式 D1DB12H,34H,56H(D1)=12H,(D1+1)=34H,(D1+2)=56HD2DW1234H,5678H(D2)=1234H,(D2+2)=5678H?表達(dá)式:表示該單元的內(nèi)容任意D3DB?,? ;表示分配2個字節(jié)D4DW?,? ;表示分配2個字一、數(shù)據(jù)定義偽指令(表達(dá)式)字符串表達(dá)式STR1DB‘ABCDE’ ;為每個字符分配1個單元 STR2DW‘AB’,’CD’ ;為由2個字符組成的字符串分配2個單元41H42H43H44H45HSTR142H41H44H43HSTR2一、數(shù)據(jù)定義偽指令(表達(dá)式)帶DUP的表達(dá)式變量名DBDWDDDQ表達(dá)式1DUP(表達(dá)式2) D1DB20HDUP(?) ;預(yù)留20H個字節(jié),內(nèi)容任意次數(shù)內(nèi)容 D2DB10HDUP(‘ABCD’) ;重復(fù)10H個‘ABCD’,共占40H字節(jié) D3DW10HDUP(4) ;重復(fù)10H個字單元,內(nèi)容0004H,共占20H字節(jié)一、數(shù)據(jù)定義偽指令(表達(dá)式)帶DUP的表達(dá)式—DUP操作符可重復(fù)使用 D4DB10HDUP(4DUP(2),7)

;重復(fù)10H個(2,2,2,2,7),共占50H字節(jié)1)變量的屬性:段屬性(SEG)、偏移量屬性(OFFSET)和類型屬性對數(shù)據(jù)定義偽指令前面的變量還要注意它的類型屬性問題。變量表示該偽指令中的第一個數(shù)據(jù)項的偏移地址,此外,它還具有一個類型屬性,用來表示該語句中的每一個數(shù)據(jù)項的長度(以字節(jié)為單位表示),因此DB偽指令的類型屬性為1,DW為2,DD為4,DQ為8,DT為10。變量表達(dá)式的屬性和變量是相同的。匯編程序可以用這種隱含的類型屬性來確定某些指令是字指令還是字節(jié)指令例:

OPER1DB?,?

OPER2DW?,?

.

.

.

MOVOPER1,0;字節(jié)指令

MOVOPER2,0;字指令

MOVAX,OPER1+1;錯誤指令:類型不匹配

MOVAL,OPER2;錯誤指令:類型不匹配

變量表達(dá)式OPER1+1為字節(jié)類型屬性

OPER2為字類型屬性5、變量和標(biāo)號的屬性:2)指定操作數(shù)的類型屬性:PTR屬性操作符:PTR指定操作數(shù)的類型屬性,它優(yōu)先于隱含的類型屬性。其格式為:

類型PTR變量[±常數(shù)表達(dá)式]其中類型可以是BYTE、WORD、DWORD、FWORD、QWORD或TBYTE,這樣變量的類型就可以指定了。

例:下例中的兩條MOV指令把OPER1+1的類型屬性指定為字,把OPER2的類型屬性指定為字節(jié),這樣指令中兩個操作數(shù)的屬性就一致了,匯編時就不會出錯了。

OPER1DB?,?

OPER2DW?,?

.

.

.

MOVAX,WORDPTROPER1+1

MOVAL,BYTEPTROPER2

LABEL偽指令

LABEL可以使同一個變量具有不同的類型屬性。其格式為:

變量名LABEL類型

或標(biāo)號LABEL類型

其中變量的數(shù)據(jù)類型可以是BYTE,WORD,DWORD,標(biāo)號的代碼類型可以是NEAR或FAR。例如:

BYTE_ARRAYLABELBYTE

WORD_ARRAYDW50DUP(?)

在50個字?jǐn)?shù)組中的第一個字節(jié)的地址賦予兩個不同類型的變量名:字節(jié)類型的變量BYTE_ARRAY和字類型變量WORD_ARRAY。

在程序中訪問數(shù)組單元時,要按指令類型來選擇變量,如下面兩條指令:

MOVWORD_ARRAY+2,0;字指令,

;把該數(shù)組的第3個和第4個字節(jié)置0

MOVBYTE_ARRAY+2,0;字節(jié)指令,

;把該數(shù)組的第3個字節(jié)置0BYTE_ARRAY

WORD_ARRAY

均為變量名,他們具有相同的SEG OFFSET 屬性,但TYPE屬性不同BYTE_A:BYTEWORD_A:WORD標(biāo)號指令的符號地址段屬性(SEG)偏移量屬性(OFFSET)距離屬性(Distance類型):表示標(biāo)號的轉(zhuǎn)移特性類型: NEAR:本標(biāo)號只能被標(biāo)號所在段的指令訪問(段內(nèi)轉(zhuǎn) 移、調(diào)用)

FAR:可被其他段的指令訪問(段間調(diào)用、轉(zhuǎn)移)標(biāo)號設(shè)置標(biāo)號距離屬性的方法

1)隱含方式:在指令語句中使用標(biāo)號后,其隱含為NEAR屬性

SUB1:MOVAL,30H ;SUB1具有NEAR屬性 ;該方式定義的標(biāo)號只能具備NEAR屬性標(biāo)號設(shè)置標(biāo)號距離屬性的方法

2)用LABEL偽指令賦予標(biāo)號距離屬性

名稱LABEL類型SEGOFFSETDistance 標(biāo)識符標(biāo)號NEAR/FAR

該偽指令一般與指令語句/數(shù)據(jù)定義偽指令連用,以補(bǔ)充或設(shè)置與值連用的標(biāo)號/變量的距離/類型屬性設(shè)置標(biāo)號距離屬性的方法(例1)

SUB1: MOVAL,30H標(biāo)識符SUB1_FAR SUB1 均為指令的符號地址,他們具有SEG OFFSET 相同的屬性,但Distance屬性不同SUB1_FAR:FARSUB1:NEAR

段內(nèi)轉(zhuǎn)移/調(diào)用:

SUB1

SUB1_FAR LABELFAR

段間轉(zhuǎn)移/調(diào)用:

SUB1_FAR變量的使用—在指令語句中對已經(jīng)定義的變量直接引用其符號名DATASEGMENT DA1 DB0FEHDA2 DW52ACHDA3DB10HDUP(?)DA4DW10HDUP(1) …… MOVAL,DA1;AL=FEH MOVBX,DA2;BX=52ACH MOVSI,2 MOVDA3[SI],AL MOVDA4[SI],BX 直接尋址相對變址尋址FEAC5200010001DA1DA2DA3DA3+1DA3+2DA4DA4+252AC變量的使用—在偽指令語句中DATASEGMENT DA1 DB12HNUM DB75HHARRAYDW20HDUP(0)ADR1DWNUMADR2DDNUM ……DS=21FDH127500210100FDDA1NUMARRAYADR1ADR2000100

DW:定義的存儲單元存放相應(yīng)變量的偏移量DD:定義的存儲單元存放相應(yīng)變量的偏移量和段基值二、地址計數(shù)器及對準(zhǔn)偽操作地址計數(shù)器$:匯編程序在為每條指令或變量分配內(nèi)存時,使用當(dāng)前位置計數(shù)器來指示下一指令或數(shù)據(jù)的偏移量,匯編語言允許用戶直接用$來引用地址計數(shù)器的值

◆地址計數(shù)器與對準(zhǔn)偽操作:地址計數(shù)器$:例如指令:

JMP$+6

它的轉(zhuǎn)向地址是JMP指令的首地址加上6。當(dāng)$用在指令中時,它表示本條指令的第一個字節(jié)的地址。在這里,$+6必須是另一條指令的首地址。否則,匯編程序?qū)⒅甘境鲥e信息。當(dāng)$用在偽指令的參數(shù)字段時,則和它用在指令中的情況不同,它所表示的是地址計數(shù)器的當(dāng)前值。例如指令:

ARRAYDW1,2,$+4,3,4,$+4

00H01H00H02H00H

7CH

00H03H00H04H00H

82H

ARRAY007E007800740078H+4=007CH定位偽指令: ORG表達(dá)式 將表達(dá)式的值賦給當(dāng)前位置計數(shù)器。即該偽指令后的指令或變量以表達(dá)式的值為偏移量例如:SEG1SEGMENTORG10HVAR1DW1234H;VAR1的偏移地址為10hORG20HVAR2DW5678HORG$+8VAR3DW1357HSEG1ENDS

EVEN

使下一指令或變量的偏移量為偶數(shù)例如:ADB‘morning’EVENBDW2DUP(?)五、地址計數(shù)器及對準(zhǔn)偽操作(例)DATA SEGMENT ORG30HDB1 DB12H,34H ORG$+20HSTR DB‘ABC’CNT EQU$-STR EVENDW1 DW20HDUP(0)DATA ENDS ……CODE SEGMENT ASSUMECS:CODE,DS:DATA ORG10HSTART:MOVAX,DATA MOVDS,AX ……CODE ENDS ENDSTARTDATA30HDB143HDD1STRDW142H41H00123440H20H30H00三、表達(dá)式賦值偽操作等值語句符號EQU表達(dá)式;將表達(dá)式的值賦給左邊的符號EQU是一個賦值偽操作(偽指令),它給一個數(shù)據(jù)標(biāo)號賦于一個常數(shù)值,但這個常數(shù)不占用存儲單元。當(dāng)這個數(shù)據(jù)標(biāo)號出現(xiàn)在程序中時,匯編程序即用它的常數(shù)值代替數(shù)據(jù)標(biāo)號。EQU可以在數(shù)據(jù)段之外使用,甚至可用在代碼段中間。在同一程序中,同一符號不能用EQU重復(fù)定義。表達(dá)式的形式1)常數(shù)或數(shù)值表達(dá)式

CNTEQU5 NUMEQU13+5+4 2)址表達(dá)式

ADR1EQUDS:[BP+14] 3)變量、標(biāo)號或指令助記符

W0EQUWORDPTRDA_BYTE假定在數(shù)據(jù)段和代碼段中要多次使用一個數(shù)據(jù)(如5),那么在編程時凡是用到5的地方都可用數(shù)據(jù)標(biāo)號CNT來表示。如果程序想修改這個數(shù)據(jù),那么只需修改EQU的賦值,而無須修改程序中其它部分。

等值語句符號=表達(dá)式;功能與EQU相同,但可重復(fù)定義

CNT=5 NUM=4 …… NUM=NUM+10H CBD=DDA …… CBD=ADD例如,TMPEQU5

TMPEQUTMP+1則是錯誤語句,因為TMP已賦值為5,就不能再把它定義為其它數(shù)值。

而TMP=5

TMP=TMP+1則是允許使用的,因為=偽操作允許重復(fù)定義。第一個語句TMP的值為5,第二個語句TMP的值就為6了。賦值偽操作"="的作用與EQU類似。它們之間的區(qū)別是,EQU偽操作中的標(biāo)號名是不允許重復(fù)定義的,而=偽操作是允許重復(fù)定義的。表達(dá)式與運算符指令中的操作數(shù)可以以表達(dá)式的形式出現(xiàn)常數(shù)變量標(biāo)號 通過操作運算符連接而成表達(dá)式匯編程序在匯編過程中計算表達(dá)式,最終得到一個數(shù)值程序運行之前,就已經(jīng)計算出了表達(dá)式;所以,程序運行速度沒有變慢,但增強(qiáng)程序的可讀性MASM對除偽指令外各種匯編時處理的指令統(tǒng)稱為操作符(Operator)運算符算術(shù)操作(運算)符邏輯操作(運算)符關(guān)系操作(運算)符數(shù)值返回操作(運算)符屬性修改操作(運算)符 運算符運算符—算術(shù)運算符+-*/MOD實現(xiàn)加、減、乘、除、取模、移位的運算

MOVAX,3*4+5 ;等價于MOVAX,17其中MOD也稱為取模,它產(chǎn)生除法之后的余數(shù),如19mod7=5加+和減-運算符還可以用于地址表達(dá)式除加、減外,其他運算符的參數(shù)必須是整數(shù)算術(shù)運算符—例NUM =11011011B MOVAL,NUMSHL3 MOVAL,11011000B MOVBL,NUMSHR2 MOVAL,00110110B ADDDL,NUMSHR6 ADDDL,00000011B MOVAL,ARRAY[BX][SI] MOVAL,ARRAY[BX+SI]運算符—邏輯運算符ANDORXORNOT實現(xiàn)按位相與、相或、異或、求反的邏輯運算

ORAL,03HAND45H 0RAL,01H

MOVAX,NOT0F0H MOVAX,0FF0FH

MOVBL,55HAND0F0H MOVBL,50H運算符—關(guān)系運算符EQNEGTLTGELE用于比較和測試符號數(shù)值表達(dá)式1 關(guān)系運算符表達(dá)式2表達(dá)式為常數(shù)時,按無符號數(shù)進(jìn)行比較表達(dá)式為變量(同段內(nèi))時,比較其偏移量MASM用0FFH/0FFFFH(補(bǔ)碼-1)表示條件為真MASM用0000H表示條件為假運算符—關(guān)系運算符(舉例)MOVAX,0FHEQ1111B ←→MOVAX,0FFFFHMOVBX,0FHNE1111B ←→ MOVBX,0VARDWNUMLT0ABH;當(dāng)已定義的常數(shù)NUM小于ABH時,則VAR←0FFH運算符—數(shù)值返回運算符操作對象:存儲器操作數(shù)(變量/標(biāo)號)格式: 運算符變量名/標(biāo)號名SEG名字/標(biāo)號返回名字或標(biāo)號的段基值MOVAX,SEGK1OFFSET名字/標(biāo)號返回名字或標(biāo)號的段內(nèi)偏移地址MOVSI,OFFSETVAR運算符—數(shù)值返回運算符TYPE名字/標(biāo)號返回名字或標(biāo)號的類型屬性,以數(shù)字形式表示類型屬性數(shù)字形式變量BYTE1WORD2DWORD4標(biāo)號NEAR-1FAR-2運算符—數(shù)值返回運算符(例)V1 DB‘ABCD’V2 DW1234H,5678HV3 DDV2 …… MOVAL,TYPEV1 ;AL=1 MOVCL,TYPEV2 ;CL=2 MOVCH,TYPEV3 ;CH=4

運算符—數(shù)值返回運算符LENGTH名字/標(biāo)號只用于變量,且為DUP所定義

如未用DUP定義則返回值為1如使用DUP定義則返回最外層之值運算符—數(shù)值返回運算符(例)K1 DB10HDUP(0)K2 DB10H,20H,30HK3 DW20HDUP(0,1,2DUP(2))K4 DB‘ABCD’

…… MOVAL,LENGTHK1 ;AL=10HMOVBL,LENGTHK2 ;BL=1MOVCX,LENGTHK3 ;CX=20HMOVDX,LENGTHK4 ;DX=1運算符—數(shù)值返回運算符SIZE名字 只用于變量,得到重復(fù)定義的變量的數(shù)組元素所占字節(jié)數(shù)=LENGTH*TYPEK1 DB10HDUP(0)K2 DB10H,20H,30HK3 DW20HDUP(0,1,2DUP(2))K4 DB‘ABCD’

…… MOVAL,LENGTHK1 ;AL=10HMOVBL,LENGTHK2 ;BL=1MOVCX,LENGTHK3 ;CX=20HMOVDX,LENGTHK4 ;DX=1MOVAL,SIZEK1 ;AL=10HMOVBL,SIZEK2 ;BL=1MOVCL,SIZEK3 ;CL=40HMOVDL,SIZEK4 ;DL=1 運算符—屬性修改運算符對存儲器操作數(shù)(名字/標(biāo)號)的屬性進(jìn)行修改PTR運算符 類型PTR地址表達(dá)式

該修改是臨時的,只在當(dāng)前語句有效標(biāo)號:NEAR/FAR變量:BYTE/WORD/DWORD 標(biāo)號名作為地址指針的R變量名

運算符—屬性修改運算符(例)DA_BYTE DB20HDUP(0)DA_WORDDW30HDUP(0) …… LEABXDA_WORD LEASI,DA_BYTE

MOVAX,WORDPTRBA_BYTE[10H] ADDBYTEPTRDA_WORD[20H],BL INCBYTEPTR[BX] SUBWORDPTR[SI],30H ANDAX,WORDPTR[BX][SI] JMPFARPTRSUB1運算符—THIS運算符THIS類型名利用THIS說明的操作數(shù)具有匯編時的當(dāng)前邏輯地址,但具有指定的類型LABEL偽指令的功能等同于“EQUTHIS”D_BYTE EQUTHISBYTEW_WORD DW20HDUP(0);定義20H字單元,該區(qū)域可按字節(jié)訪問,也可以按字訪問JMP_FAR EQUTHISFARJMP_NEAR:MOVAL,30H運算符—HIGH/LOW運算符操作對象:常數(shù)/地址表達(dá)式功能:取其高/低8位

CONSTEQU0ABCDH MOVAH,HIGHCONST ;AH=0ABH 運算符的優(yōu)先級1 ()<>[]·LENGTHSIZEWIDTHMASK2 PTROFFSETSEGTPYETHIS:3 HIGELOW4 */MODSHLSHR5 +-6 EQNEGTLTGELE7 NOT8 AND9 ORXOR10 SHORT建議采用圓括號“()”顯式表達(dá),它可以極大地提高程序的可閱讀性四、段定義偽操作程序的段結(jié)構(gòu)段定義段尋址(指定當(dāng)前段)段寄存器的裝入◆段定義偽操作:完整的段定義格式datasegment;定義數(shù)據(jù)段…dataends;extrasegment;定義附加段…extraends;codesegment;定義代碼段

assumecs:code,ds:data,es:extrastart:movax,datamovds,ax;段地址段寄存器…codeendsendstartPSPDSESSSCSEXE程序的內(nèi)存映象圖裝入模塊文件頭四、段定義偽操作—完整段定義偽指令段名 SEGMENT定位組合段字'類別'

…… ;語句序列段名 ENDS段定義由SEGMENT和ENDS這一對偽指令實現(xiàn),SEGMENT偽指令定義一個邏輯段的開始,ENDS偽指令表示一個段的結(jié)束段定義指令后的4個關(guān)鍵字用于確定段的各種屬性,堆棧段要采用stack組合類型如果不指定,則采用默認(rèn)參數(shù);但如果指定,注意要按照上列次序四、段定義偽操作

—段定位(align)屬性表示對邏輯段起始邊界的選擇,可為:PAGE 段從一個頁邊界開始 (XXX00H,256Bytes/Page)

PARA 段節(jié)邊界開始(XXXX0H)DWORD 段從一個4倍數(shù)地址開始WORD 段從一個偶地址開始BYTE 段可以從任意單元開始完整段定義偽指令的默認(rèn)定位屬性是PARA四、段定義偽操作

—段組合(combine)屬性指定多個邏輯段之間如何連接與定位,可為: PRIVATE

本段與其他段沒有連接關(guān)系,這是完整段定義偽指令默認(rèn)的段組合方式 PUBLIC

在滿足定位關(guān)系的前提下,連接程序把本段與所有同名段相鄰地連接在一起,形成新的邏輯段。(可在程序的不同位置及不同的文件中使用段定義語句定義一個邏輯段) COMMON

產(chǎn)生一覆蓋段,兩個同名段起始地址相同,用較長的段覆蓋較短的段四、段定義偽操作

—段組合(combine)屬性STACK

把所有的同類別段連接在一起,段基值→SS,且自動為SP初始化。在一個程序中一般應(yīng)該有一個堆棧段。AT表達(dá)式表示本段定位在表達(dá)式所指示的節(jié)的邊界上

AT0930H表示本段的物理地址從09300H開始MEMORY

表示本段定位在所有其它段的最高地址四、段定義偽操作

—段類別(class)屬性當(dāng)連接程序組織段時,將所有的同類別段相鄰分配段類別可以是任意名稱,但必須位于單引號中大多數(shù)MASM程序使用'code'、'data'和'stack’來分別指名代碼段、數(shù)據(jù)段和堆棧段,以保持所有代碼和數(shù)據(jù)的連續(xù)DA1 SEGMENTPARA‘DATA’DD1 DB10DUP(12H)DA1 ENDSSTA1 SEGMENTSTACK‘STACK0’ DW20HDUP(?)STA1 ENDSDA2 SEGMENTPARA‘DATA’DD2 DB20HDUP(13H)DA2 ENDSSTA2 SEGMENTSTACK‘STACK0’ DW30HDUP(?)STA2 ENDSCODE SEGMENT ……CODE ENDSDA11213DA2CODEDD1DD260HSTA1131212STA240H20H10四、段定義偽操作—段尋址指明當(dāng)前段

ASSUME段寄存器名:段名,段寄存器名:段名,……CSDSSSES

已經(jīng)定義的段

在程序運行過程中,可重新設(shè)置當(dāng)前段,也可以刪除原有的設(shè)置

ASSUMEES:NOTHING ;刪除對ES的設(shè)置 ASSUMENOTHING ;刪除對所有段的設(shè)置四、段定義偽操作

—段寄存器的裝入ASSUME只說明了已哪些段為當(dāng)前段,具體的段基值并沒有裝入DS與ES的裝入 用ASSUME將DS/ES與相應(yīng)的段建立聯(lián)系后,用數(shù)據(jù)傳送指令

MOV AX,段名

MOV DS/ES,AX四、段定義偽操作

—段寄存器的裝入SS的裝入 在定義段時,用組合類型STACK說明

STACK1 SEGMENTPARASTACK DW20HDUP(0) STACK1 ENDS CODE SEGEMNT ASSUMECS:CODE,SS:STACK1 ……

SS獲得STACK1的段基值,且SP=40H四、段定義偽操作

—段寄存器的裝入SS的裝入(類似于DS/ES的方法)

STACK1 SEGMENT DW40HDUP(0) TOP LABELWORD STACK1 ENDS …… CODE SEGEMNT ASSUMECS:CODE …… MOVAX,STACK1 MOVSS,AX MOVSP,OFFSETTOP ;SP=80H ……

中間不得插入其他指令四、段定義偽操作

—段寄存器的裝入CS的裝入 用結(jié)束偽指令:每個源程序都必須以END偽指令結(jié)束

END起始地址

功能:標(biāo)志源程序的結(jié)束 指定程序運行的起始地址標(biāo)號表達(dá)式不一定是指令語句四、段定義偽操作

—段寄存器的裝入CS的裝入

CODE SEGEMNT ASSUMECS:CODE,SS:STACK1 START: …… …… ENDSTART

將后面的語句全部略去 將START所對應(yīng)的程序在內(nèi) 存中的位置裝入CS和IP五、程序開始和結(jié)束偽操作開始:

NAMEmodul_name

TITLEtext

程序終止和匯編結(jié)束是兩碼事結(jié)束:

END

起始地址六、基數(shù)控制偽操作匯編語言源程序默認(rèn)使用十進(jìn)制,其他用標(biāo)注表示(B,O,H)格式: RADIX表達(dá)式功能:把默認(rèn)的基數(shù)改為2、8、16等 除指定進(jìn)制外,其他加標(biāo)注MOVBX,0FFHMOVBX,178RADIX16MOVBX,0FFMOVBX,178D例:設(shè)x,y,sum均為內(nèi)存單元的符號地址,編寫一源程序?qū)崿F(xiàn)x+y的運算,并把結(jié)果存入sum單元。(x,y均為16位數(shù)據(jù))。datasegmentxdw?ydw?sumdw?dataend

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論