資源描述:
《匯編語言3偽指令》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第3章 匯編語言程序結(jié)構(gòu)一、匯編語言源程序的基本結(jié)構(gòu)二、匯編語言源程序中的語句三、常量、變量、標(biāo)號與表達(dá)式四、偽指令五、操作符六、匯編語言上機(jī)過程教學(xué)重點(diǎn):①指令語句格式和偽指令語句格式;②匯編語言程序格式;③匯編語言的上機(jī)過程教學(xué)難點(diǎn):①偽指令的應(yīng)用;②運(yùn)算符、操作符的應(yīng)用;③偽指令存儲器分配技術(shù)1DATASEGMENTSTRDB0DH,0AH,’Howareyou!$'DATAENDSSTACKSEGMENTSTACKDB100DUP(0)STACKENDSCODESEGMENTASSUMEDS:DATA,CS:CODE,SS:
2、STACKBEGIN:MOVAX,DATAMOVDS,AXLEADX,STRMOVAH,9INT21HMOVAH,4CHINT21HCODEENDSENDBEGIN匯編語言的一個(gè)實(shí)例P812一、匯編語言源程序的基本結(jié)構(gòu)完整的匯編語言源程序由段(代碼段、數(shù)據(jù)段、附加段或堆棧段)組成;一個(gè)匯編語言源程序必須包含一個(gè)代碼段,并指示程序執(zhí)行的起始點(diǎn),一個(gè)程序只有一個(gè)起始點(diǎn)。數(shù)據(jù)段、堆棧段和附加段視情況而定。每個(gè)段由若干語句行組成。語句行是匯編的編程基礎(chǔ)。所有的指令必須位于某一個(gè)代碼段內(nèi),偽指令可根據(jù)需要位于任一段內(nèi)。段以“SEGMENT”開始,以“
3、ENDS”結(jié)束。段由用戶定義。3二、匯編語言源程序中的語句1、語句的分類2、語句的格式41、匯編源程序中語句的分類指令性語句(指令/硬指令)指示性語句(偽指令)宏指令(第5章)使CPU產(chǎn)生動作、并在程序執(zhí)行時(shí)才處理的語句,就是第3章學(xué)習(xí)的處理器指令。不使CPU產(chǎn)生動作、在程序執(zhí)行前由匯編程序處理的說明性語句,例如,數(shù)據(jù)說明、變量定義等等。52、匯編源程序中語句的格式指令的格式:[標(biāo)號:]操作碼操作數(shù)[;注釋]偽指令的格式:[名字]偽指令操作數(shù)[;注釋]共同點(diǎn):每一語句行都由4部分組成,各部分之間至少要用一個(gè)空格作為間隔。不同點(diǎn):在形式上:帶
4、不帶冒號,是否可轉(zhuǎn)向它。在本質(zhì)上:匯編時(shí)能否形成對應(yīng)的機(jī)器碼。61、常量1)數(shù)值常量2)字符常量3)符號常量三、常量、變量、標(biāo)號與表達(dá)式(續(xù))數(shù)值常量7字符串常量是用單引號或雙引號引起來的一個(gè)或多個(gè)字符。字符串常量是以各字符的ASCⅡ碼表示的。如‘A’用41H表示,字符串‘A1B2’用41H,31H,42H,32H表示。字符串形式的常量對經(jīng)常使用的數(shù)值常量可以先為它定義一個(gè)名字,然后在語句中用名字來表示該常量。符號常量需要用等價(jià)偽指令EQU和等號偽指令“=”來定義。符號常量三、常量、變量、標(biāo)號與表達(dá)式(續(xù))8變量:變量是一個(gè)存放數(shù)據(jù)的存儲單
5、元的名字,用變量名來表示,變量名由用戶自定義。變量實(shí)際上表示數(shù)據(jù)初值表首元素的地址;用這個(gè)變量名表示,常稱為符號地址,在程序中作為存儲器操作數(shù)來使用。如例子中BLOCK、BUFF。一般在數(shù)據(jù)段中定義。由于匯編語言中存儲單元是分段使用的,所以變量具有三種屬性:①段值(SEGMENT)—變量定義所在段的段地址。②偏移量(OFFSET)—變量所指的單元地址與段起始地址之間的位移量。③類型(TYPE)—有字節(jié)(byte)、字(word)和雙字(doubleword)等。三、常量、變量、標(biāo)號與表達(dá)式(續(xù))提示:每一個(gè)變量定義后都具有此三種屬性,設(shè)置變
6、量名是為了方便存取它指示的存儲單元。9標(biāo)號是一條指令語句的符號地址。在匯編源程序中,只有在需要轉(zhuǎn)向一條指令語句時(shí),才為該指令語句設(shè)置標(biāo)號,以便在轉(zhuǎn)移類指令(含子程序調(diào)用指令)中直接引用這個(gè)標(biāo)號。因此,標(biāo)號可作為轉(zhuǎn)移類指令的操作數(shù),即轉(zhuǎn)移地址。標(biāo)號也有三種屬性:①段值:所在段的段地址,總是在CS段寄存器中;②偏移量:與變量相同,所在段的段內(nèi)偏移地址;③類型:分NEAR和FAR兩種。其中:NEAR—表示標(biāo)號所在語句與轉(zhuǎn)移指令或調(diào)用指令在同一碼段內(nèi),只需改變IP即可。FAR—標(biāo)號所在語句與轉(zhuǎn)移指令或調(diào)用指令不在同一碼段內(nèi)。若沒有對類型進(jìn)行說明,默
7、認(rèn)為NEAR。三、常量、變量、標(biāo)號與表達(dá)式(續(xù))10例:測試為0或1若要檢測AL中的最低位是否為1,若為1則轉(zhuǎn)移。testal,01h;測試AL的最低位D0jnzthere;標(biāo)志ZF=0,即D0=1;則程序轉(zhuǎn)移到there...;否則ZF=1,即D0=0,順序執(zhí)行there:...TEST11表達(dá)式是由運(yùn)算符(操作符)將常數(shù)、寄存器、標(biāo)號、變量組合起來的式子,分?jǐn)?shù)值表達(dá)式和地址表達(dá)式兩種。匯編時(shí)按一定的優(yōu)先規(guī)則對表達(dá)式進(jìn)行計(jì)算。表達(dá)式(1)算術(shù)運(yùn)算符(2)邏輯運(yùn)算符(3)關(guān)系運(yùn)算符三、常量、變量、標(biāo)號與表達(dá)式(續(xù))下面介紹三種運(yùn)算符:數(shù)值表
8、達(dá)式算術(shù)表達(dá)式(利用算術(shù)運(yùn)算符)邏輯表達(dá)式(利用邏輯運(yùn)算符)關(guān)系表達(dá)式(利用關(guān)系運(yùn)算符)12有+、-、*、/以及MOD(取余),其中MOD表示除法運(yùn)算后得到的余數(shù)。例:19/7的