匯編語(yǔ)言課件07MASM語(yǔ)法_第1頁(yè)
匯編語(yǔ)言課件07MASM語(yǔ)法_第2頁(yè)
匯編語(yǔ)言課件07MASM語(yǔ)法_第3頁(yè)
匯編語(yǔ)言課件07MASM語(yǔ)法_第4頁(yè)
匯編語(yǔ)言課件07MASM語(yǔ)法_第5頁(yè)
已閱讀5頁(yè),還剩33頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、匯編語(yǔ)言課件07MASM語(yǔ)法(1)匯編語(yǔ)言語(yǔ)句一般格式為: 語(yǔ)句標(biāo)號(hào): 指令名 操作數(shù)序列 ;注釋 標(biāo)識(shí)符: 用來(lái)為變量、段、標(biāo)號(hào)、過(guò)程等命名命名規(guī)則: 最長(zhǎng)31個(gè)字符第一個(gè)字符不能是數(shù)字? - $可出現(xiàn)在任意位置,但? $不能單獨(dú)使用匯編語(yǔ)言語(yǔ)句格式與分類(lèi) 語(yǔ)句標(biāo)號(hào): 指令名 操作數(shù)序列 ;注釋 語(yǔ)句標(biāo)號(hào)標(biāo)識(shí)符后加 : ,提供轉(zhuǎn)移地址,開(kāi)始地址 語(yǔ)句標(biāo)號(hào): 指令名 操作數(shù)序列 ;注釋 三類(lèi):機(jī)器指令、偽指令和宏指令。 機(jī)器指令:指令系統(tǒng)中的硬指令,程序運(yùn)行時(shí)由CPU執(zhí)行偽指令:匯編程序執(zhí)行的操作,規(guī)定匯編程序如何按要求進(jìn)行匯編及分配內(nèi)存宏指令:由一系列指令或偽指令構(gòu)成,匯編時(shí)展開(kāi)成若干條機(jī)器

2、指令,用于提高編程效率(偽指令和宏指令由匯編程序在匯編期間處理 ) 語(yǔ)句標(biāo)號(hào): 指令名 操作數(shù)序列 ;注釋 可以是常量、變量、表達(dá)式、寄存器名或標(biāo)號(hào)等,用逗號(hào)隔開(kāi)?!?;”后可給出語(yǔ)句注釋?zhuān)岣呖勺x性和可理解性。 語(yǔ)句標(biāo)號(hào): 指令名 操作數(shù)序列 ;注釋 常量、變量、標(biāo)號(hào)、運(yùn)算符和表達(dá)式常量表示一個(gè)固定的數(shù)值,又可分成多種形式。1. 常數(shù)這里指由10,16,2和8進(jìn)制形式表達(dá)的數(shù)值各種進(jìn)制的數(shù)據(jù)以后綴字母區(qū)分,默認(rèn)不加后綴字母的是十進(jìn)制數(shù)基數(shù)控制. RADIX偽指令可以改變默認(rèn)進(jìn)制:.RADIX n .RADIX 10 .model small .stack 1024 .data string d

3、b Hello, world ,0dh,0ah ,$ .code start: mov ax,data mov ds,ax mov dx,offset string mov ah,9 int 21h mov ah,4ch int 21h end start 常量其中,n為2-16范圍內(nèi)任何數(shù)值。例如指令“ .RADIX 16”,將缺省基數(shù)改為 16,即沒(méi)有后綴的數(shù)值表示16進(jìn)制數(shù),非16進(jìn)制數(shù)均應(yīng)使用后綴字母,包括10進(jìn)制數(shù)例如10101100B0a4h,56acH35D357Q實(shí)數(shù):整數(shù).小數(shù)E指數(shù)4字節(jié)、8字節(jié)或10字節(jié)例如: 21.42 -4.55E+2字符串字符串常量是用單引號(hào)或雙引號(hào)

4、括起來(lái)的單個(gè)字符或多個(gè)字符,其數(shù)值是每個(gè)字符對(duì)應(yīng)的ASCII碼值。例如d64HAB4142H,Hello, Assembly !符號(hào)常量符號(hào)常量是指使用標(biāo)識(shí)符表達(dá)一個(gè)數(shù)值。常量若使用有意義的符號(hào)名來(lái)表示,就可以提高程序的可讀性,同時(shí)更具有通用性。 MASM提供等價(jià)機(jī)制,用來(lái)為常量定義符號(hào)名,符號(hào)定義偽指令有“等價(jià)EQU”和“等號(hào)”偽指令。符號(hào)定義偽指令符號(hào)名 EQU 數(shù)值表達(dá)式符號(hào)名 EQU ;MASM 5.x不支持符號(hào)名 數(shù)值表達(dá)式等價(jià)偽指令EQU給符號(hào)名定義一個(gè)數(shù)值或定義成另一個(gè)字符串,這個(gè)字符串甚至可以是一條處理器指令。例如:DosWriteChar equ 2CarriageRetur

5、n = 13CallDOS equ 應(yīng)用上述符號(hào)定義,下列左邊的程序段可以寫(xiě)成右側(cè)的等價(jià)形式:mov ah,DosWriteChar ;mov ah,2mov dl,CarriageReturn;mov dl,13CallDOS ;int 21hEQU用于數(shù)值等價(jià)時(shí)不能重復(fù)定義符號(hào)名,但“”允許重復(fù)賦值,例如:X = 7 ;同樣 X EQU 7 是正確的X = X+5 ;但是 X EQU X+5 是錯(cuò)誤的數(shù)值表達(dá)式數(shù)值表達(dá)式一般是指由運(yùn)算符(MASM統(tǒng)稱(chēng)為操作符Operator)連接的各種常量所構(gòu)成的表達(dá)式。匯編程序在匯編過(guò)程中計(jì)算表達(dá)式,最終得到一個(gè)確定的數(shù)值,所以也是常量。由于表達(dá)式是在程

6、序運(yùn)行前的匯編階段計(jì)算,所以組成表達(dá)式的各部分必須在匯編時(shí)就能確定。匯編語(yǔ)言支持多種運(yùn)算符P46 表3-2mov ax,3*4+5 ;等價(jià)于 mov ax,17or al,03h AND 45h;等價(jià)于 or al,01Hmov al,0101b SHL (2*2);等價(jià)于 mov al,01010000b變量變量實(shí)質(zhì)上是指內(nèi)存單元的數(shù)據(jù),因而可以改變。變量需要事先定義才能使用。變量的三種屬性: 段值(SEG):變量所在段的段址 偏移量(OFFSET):變量所在段相對(duì)0的存儲(chǔ)位置(字節(jié)數(shù)) 類(lèi)型(TYPE):變量占用的字節(jié)數(shù)1. 變量的定義變量名 偽指令 初值表變量名為用戶(hù)自定義標(biāo)識(shí)符,表示初

7、值表首元素的邏輯地址。變量名也可以沒(méi)有,在這種情況下,匯編程序?qū)⒅苯訛槌踔当矸峙淇臻g,無(wú)符號(hào)地址。變量名 偽指令 初值表變量定義偽指令有DB,DW,DD,DF,DQ,DT,它們根據(jù)申請(qǐng)的主存空間單位分類(lèi)DB:字節(jié)DW:字(16位)DD:雙字(32位)DQ:4字節(jié) 存實(shí)型數(shù)DT:10字節(jié),BCD碼 除了 DB,DW ,DD等定義的簡(jiǎn)單變量,匯編語(yǔ)言還支持復(fù)雜的數(shù)據(jù)變量,如結(jié)構(gòu)(Structure)、記錄(Record)、聯(lián)合(Union)等變量名 偽指令 初值表初值表是用逗號(hào)分隔的參數(shù),主要由常量、數(shù)值表達(dá)式或“?”組成。其中“?”表示初值不確定,即未賦初值。另外,多個(gè)存儲(chǔ)單元如果初值相同,可以

8、用復(fù)制操作符 DUP進(jìn)行定義。DUP的格式為:重復(fù)次數(shù) DUP (重復(fù)參數(shù))例:stack1 db 100 dup(?)2. 變量的應(yīng)用變量具有邏輯地址。在程序代碼中,通過(guò)變量名引用其指向的第一個(gè)數(shù)據(jù),通過(guò)變量名加減位移量存取以第一個(gè)數(shù)據(jù)為基地址的前后數(shù)據(jù)。變量名后用“n”或“n ”作用相同,都表示后移n個(gè)字節(jié)存儲(chǔ)單元。例 變量的定義和應(yīng)用bvar1db 100,01100100b,64h,d;字節(jié)變量:不同進(jìn)制表達(dá)同一個(gè)數(shù)值,內(nèi)存中有4個(gè)64Hminint= 5;符號(hào)常量:minint數(shù)值為5,不占內(nèi)存空間bvar2 db -1,minint,minint+5;內(nèi)存中數(shù)值依次為0FFH ,

9、5 , 0AH db ?,2 dup(20h);預(yù)留一個(gè)字節(jié)空間,重復(fù)定義了2個(gè)數(shù)值20Hwvar1 dw 2010h,4*4;字變量:兩個(gè)數(shù)據(jù)是2010H、10H,共占4個(gè)字節(jié)64H64H64H64Hbvar1-1(0ffh)50ahbvar220h20h?20h10h00h10hwvar1wvar2dw ?;wvar2是沒(méi)有初值的字變量dvar dd 12347777h,87651111h;雙字變量:2個(gè)雙字?jǐn)?shù)據(jù)abc db a,b,c,?等效于abc db abc,?;定義字符,實(shí)際是字節(jié)變量77h77h12H34Hwvar211h11h65hdvarba87h?cabc?00habc+

10、2?stringdb ABCDEFGHIJ;定義字符串:使用字節(jié)定義DB偽指令crlfs db 13,10,$;回車(chē)符0D H、換行符0AH和字符$24Hmaxint equ 0aharray1 dw maxint dup(0); 10個(gè)初值為0的字量,可以認(rèn)為是數(shù)組array db 2 dup(2,3,2 dup(4); 8個(gè)字節(jié)內(nèi)容依次為:2 3 4 4 2 3 4 4stringABCDEFJIGH$131000h23442344crlfsarray1array共20字節(jié)mov dl,bvar1; bvar1表示它的第1個(gè)數(shù)據(jù),故DL100ddec bvar2+1; bvar2位移量為1

11、的字節(jié)數(shù)據(jù)(minint5)減1,故為4mov abc3,dl; abc位移量為3的字節(jié)單元賦值d,字符串成為 abcd64H64H64H64Hbvar1-1(0ffh)50ahbvar220h20h?20h10h00h10hwvar1mov dl,bvar1; bvar1表示它的第1個(gè)數(shù)據(jù),故DL100ddec bvar2+1; bvar2位移量為1的字節(jié)數(shù)據(jù)(minint5)減1,故為4mov abc3,dl; abc位移量為3的字節(jié)單元賦值d,字符串成為 abcd64H64H64H64Hbvar1-1(0ffh)50ahbvar220h20h?20h10h00h10hwvar1mov d

12、l,bvar1; bvar1表示它的第1個(gè)數(shù)據(jù),故DL100ddec bvar2+1; bvar2位移量為1的字節(jié)數(shù)據(jù)(minint5)減1,故為4mov abc3,dl; abc位移量為3的字節(jié)單元賦值d,字符串成為 abcd64H64H64H64Hbvar1-1(0ffh)50ahbvar220h20h?20h10h00h10hwvar1dDL:mov dl,bvar1; bvar1表示它的第1個(gè)數(shù)據(jù),故DL100ddec bvar2+1; bvar2位移量為1的字節(jié)數(shù)據(jù)(minint5)減1,故為4mov abc3,dl; abc位移量為3的字節(jié)單元賦值d,字符串成為 abcd64H64

13、H64H64Hbvar1-1(0ffh)50ahbvar220h20h?20h10h00h10hwvar1dDL:mov dl,bvar1; bvar1表示它的第1個(gè)數(shù)據(jù),故DL100ddec bvar2+1; bvar2位移量為1的字節(jié)數(shù)據(jù)(minint5)減1,故為4mov abc3,dl; abc位移量為3的字節(jié)單元賦值d,字符串成為 abcd64H64H64H64Hbvar1-1(0ffh)40ahbvar220h20h?20h10h00h10hwvar1dDL:mov dl,bvar1; bvar1表示它的第1個(gè)數(shù)據(jù),故DL100ddec bvar2+1; bvar2位移量為1的字節(jié)

14、數(shù)據(jù)(minint5)減1,故為4mov abc3,dl; abc位移量為3的字節(jié)單元賦值d,字符串成為 abcd64H64H64H64Hbvar1-1(0ffh)40ahbvar220h20h?20h10h00h10hwvar1dDL:mov dl,bvar1; bvar1表示它的第1個(gè)數(shù)據(jù),故DL100ddec bvar2+1; bvar2位移量為1的字節(jié)數(shù)據(jù)(minint5)減1,故為4mov abc3,dl; abc位移量為3的字節(jié)單元賦值d,字符串成為 abcddDL:77h77h12H34Hwvar211h11h65hdvarba87h?cabc?00hmov dl,bvar1;

15、bvar1表示它的第1個(gè)數(shù)據(jù),故DL100ddec bvar2+1; bvar2位移量為1的字節(jié)數(shù)據(jù)(minint5)減1,故為4mov abc3,dl; abc位移量為3的字節(jié)單元賦值d,字符串成為 abcddDL:77h77h12H34Hwvar211h11h65hdvarba87hdcabc?00hmov ax,word ptr dvar0mov dx,word ptr dvar2 ;取雙字到DX.AX77h77h12H34Hwvar211h11h65hdvarba87h?cabc?00h其它幾個(gè)可用于變量的運(yùn)算符SEG:取變量、標(biāo)號(hào)段地址TYPE:返回此變量類(lèi)型存儲(chǔ)的所需字節(jié)數(shù)。(對(duì)標(biāo)號(hào)為-1,-2)LENGTH:取數(shù)組元素個(gè)數(shù)SIZE:取數(shù)組字節(jié)數(shù)設(shè):DS=2000HXP DW ?X1 DB A,B,CARRAY DW 100 DUP(1,2,3, 20(0)MOV AL,TYPE XP; 等效于MOV AL,2MOV AL,TYPE X1 ;等效于MOV AL,1MOV AL,LENGTH X1;等效于MOV AL,1MOV AL,LENGTH ARRAY;等效于MOV AL,100MOV AX,SIZE ARRAY;等效于MOV AX,200(有嵌套,不對(duì))MO

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論