




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
匯編語(yǔ)言課件07
MASM語(yǔ)法(1)匯編語(yǔ)言課件07
MASM語(yǔ)法(1)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ǔ)句格式與分類匯編語(yǔ)言語(yǔ)句一般格式為:標(biāo)識(shí)符:用來(lái)為變量、段、標(biāo)號(hào)、過(guò)程2[語(yǔ)句標(biāo)號(hào):]指令名[操作數(shù)序列][;注釋]語(yǔ)句標(biāo)號(hào)——標(biāo)識(shí)符后加:,提供轉(zhuǎn)移地址,開始地址[語(yǔ)句標(biāo)號(hào):]指令名[操作數(shù)序列3[語(yǔ)句標(biāo)號(hào):]指令名
[操作數(shù)序列][;注釋]三類:機(jī)器指令、偽指令和宏指令。
機(jī)器指令:指令系統(tǒng)中的硬指令,程序運(yùn)行時(shí)由CPU執(zhí)行偽指令:匯編程序執(zhí)行的操作,規(guī)定匯編程序如何按要求進(jìn)行匯編及分配內(nèi)存宏指令:由一系列指令或偽指令構(gòu)成,匯編時(shí)展開成若干條機(jī)器指令,用于提高編程效率(偽指令和宏指令由匯編程序在匯編期間處理)[語(yǔ)句標(biāo)號(hào):]指令名[操作數(shù)序列4[語(yǔ)句標(biāo)號(hào):]指令名
[操作數(shù)序列][;注釋]可以是常量、變量、表達(dá)式、寄存器名或標(biāo)號(hào)等,用逗號(hào)隔開。[語(yǔ)句標(biāo)號(hào):]指令名[操作數(shù)序列5“;”后可給出語(yǔ)句注釋,提高可讀性和可理解性。[語(yǔ)句標(biāo)號(hào):]指令名
[操作數(shù)序列][;注釋]“;”后可給出語(yǔ)句注釋,提高可讀性和可理解性。6常量、變量、標(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)制:.RADIXn常量、變量、標(biāo)號(hào)、運(yùn)算符和表達(dá)式常量表示一個(gè)固定的數(shù)值,又可7
.RADIX10.modelsmall
.stack1024.data
string
db‘Hello,world’,0dh,0ah,‘$’
.code
start:
movax,@data
movds,axmovdx,offset
string
movah,9int21h movah,4ch
int21h
end
start
.RADIX108常量其中,n為2-16范圍內(nèi)任何數(shù)值。例如指令“.RADIX16”,將缺省基數(shù)改為16,即沒有后綴的數(shù)值表示16進(jìn)制數(shù),非16進(jìn)制數(shù)均應(yīng)使用后綴字母,包括10進(jìn)制數(shù)例如10101100B0a4h,56acH35D357Q常量其中,n為2-16范圍內(nèi)任何數(shù)值。例如指令“.RADI9實(shí)數(shù):±整數(shù).小數(shù)E±指數(shù)4字節(jié)、8字節(jié)或10字節(jié)例如:21.42-4.55E+2實(shí)數(shù):10字符串字符串常量是用單引號(hào)或雙引號(hào)括起來(lái)的單個(gè)字符或多個(gè)字符,其數(shù)值是每個(gè)字符對(duì)應(yīng)的ASCII碼值。例如‘d’=64H‘AB’=4142H,‘Hello,Assembly!’字符串11符號(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)常量是指使用標(biāo)識(shí)符表達(dá)一個(gè)數(shù)值。常量若使用有意義12符號(hào)定義偽指令符號(hào)名EQU數(shù)值表達(dá)式符號(hào)名EQU<字符串>
;MASM5.x不支持符號(hào)名=數(shù)值表達(dá)式等價(jià)偽指令EQU給符號(hào)名定義一個(gè)數(shù)值或定義成另一個(gè)字符串,這個(gè)字符串甚至可以是一條處理器指令。符號(hào)定義偽指令符號(hào)名EQU數(shù)值表達(dá)式13例如:DosWriteCharequ2CarriageReturn=13CallDOSequ<int21h>應(yīng)用上述符號(hào)定義,下列左邊的程序段可以寫成右側(cè)的等價(jià)形式:movah,DosWriteChar;movah,2movdl,CarriageReturn ;movdl,13CallDOS ;int21h例如:14EQU用于數(shù)值等價(jià)時(shí)不能重復(fù)定義符號(hào)名,但“=”允許重復(fù)賦值,例如:X=7 ;同樣XEQU7是正確的X=X+5;但是XEQUX+5是錯(cuò)誤的EQU用于數(shù)值等價(jià)時(shí)不能重復(fù)定義符號(hào)名,但“=”允許重復(fù)賦值15數(shù)值表達(dá)式數(shù)值表達(dá)式一般是指由運(yùn)算符(MASM統(tǒng)稱為操作符Operator)連接的各種常量所構(gòu)成的表達(dá)式。匯編程序在匯編過(guò)程中計(jì)算表達(dá)式,最終得到一個(gè)確定的數(shù)值,所以也是常量。由于表達(dá)式是在程序運(yùn)行前的匯編階段計(jì)算,所以組成表達(dá)式的各部分必須在匯編時(shí)就能確定。數(shù)值表達(dá)式數(shù)值表達(dá)式一般是指由運(yùn)算符(MASM統(tǒng)稱為操作符O16匯編語(yǔ)言支持多種運(yùn)算符P46表3-2匯編語(yǔ)言支持多種運(yùn)算符17movax,3*4+5
;等價(jià)于movax,17oral,03hAND45h ;等價(jià)于oral,01Hmoval,0101bSHL(2*2) ;等價(jià)于moval,01010000bmovax,3*4+518變量變量實(shí)質(zhì)上是指內(nèi)存單元的數(shù)據(jù),因而可以改變。變量需要事先定義才能使用。變量的三種屬性:
段值(SEG):變量所在段的段址
偏移量(OFFSET):變量所在段相對(duì)0的存儲(chǔ)位置(字節(jié)數(shù))類型(TYPE):變量占用的字節(jié)數(shù)變量變量實(shí)質(zhì)上是指內(nèi)存單元的數(shù)據(jù),因而可以改變。變量需要事先191.變量的定義變量名偽指令初值表變量名為用戶自定義標(biāo)識(shí)符,表示初值表首元素的邏輯地址。變量名也可以沒有,在這種情況下,匯編程序?qū)⒅苯訛槌踔当矸峙淇臻g,無(wú)符號(hào)地址。1.變量的定義20變量名偽指令初值表變量定義偽指令有DB,DW,DD,DF,DQ,DT,它們根據(jù)申請(qǐng)的主存空間單位分類DB:字節(jié)DW:字(16位)DD:雙字(32位)DQ:4字節(jié)存實(shí)型數(shù)DT:10字節(jié),BCD碼變量名偽指令初值表21除了DB,DW,DD等定義的簡(jiǎn)單變量,匯編語(yǔ)言還支持復(fù)雜的數(shù)據(jù)變量,如結(jié)構(gòu)(Structure)、記錄(Record)、聯(lián)合(Union)等除了DB,DW,DD等定義的簡(jiǎn)單變量,匯編語(yǔ)言還22變量名偽指令初值表初值表是用逗號(hào)分隔的參數(shù),主要由常量、數(shù)值表達(dá)式或“?”組成。其中“?”表示初值不確定,即未賦初值。另外,多個(gè)存儲(chǔ)單元如果初值相同,可以用復(fù)制操作符DUP進(jìn)行定義。DUP的格式為:重復(fù)次數(shù)DUP(重復(fù)參數(shù))例:stack1db100dup(?)變量名偽指令初值表232.變量的應(yīng)用變量具有邏輯地址。在程序代碼中,通過(guò)變量名引用其指向的第一個(gè)數(shù)據(jù),通過(guò)變量名加減位移量存取以第一個(gè)數(shù)據(jù)為基地址的前后數(shù)據(jù)。變量名后用“+n”或“[n]”作用相同,都表示后移n個(gè)字節(jié)存儲(chǔ)單元。2.變量的應(yīng)用24例變量的定義和應(yīng)用bvar1 db100,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,5,0AH
db?,2dup(20h)
;預(yù)留一個(gè)字節(jié)空間,重復(fù)定義了2個(gè)數(shù)值20Hwvar1dw2010h,4*4
;字變量:兩個(gè)數(shù)據(jù)是2010H、10H,共占4個(gè)字節(jié)64H64H64H64Hbvar1-1(0ffh)50ahbvar220h20h?20h10h00h10hwvar1例變量的定義和應(yīng)用bvar1 db100,011001025wvar2 dw?
;wvar2是沒有初值的字變量dvardd12347777h,87651111h ;雙字變量:2個(gè)雙字?jǐn)?shù)據(jù)abcdb'a','b','c',? 等效于abcdb‘a(chǎn)bc’,?;定義字符,實(shí)際是字節(jié)變量77h77h12H34Hwvar211h11h65hdvar‘b’‘a(chǎn)’87h?‘c’abc?00habc+2?wvar2 dw? 77h77h12H34Hwvar21126string db‘ABCDEFGHIJ’
;定義字符串:使用字節(jié)定義DB偽指令crlfs db13,10,'$'
;回車符0DH、換行符0AH和字符'$'=24Hmaxint equ0aharray1dwmaxintdup(0) ;10個(gè)初值為0的字量,可以認(rèn)為是數(shù)組arraydb2dup(2,3,2dup(4))
;8個(gè)字節(jié)內(nèi)容依次為:23442344stringABCDEFJIGH‘$’131000h23442344crlfsarray1array共20字節(jié)string db‘ABCDEFGHIJ’ stringA27movdl,bvar1
;bvar1表示它的第1個(gè)數(shù)據(jù),故DL←100=’d’decbvar2+1
;bvar2位移量為1的字節(jié)數(shù)據(jù)(minint=5)減1,故為4movabc[3],dl ;abc位移量為3的字節(jié)單元賦值‘d’,字符串成為‘a(chǎn)bcd’64H64H64H64Hbvar1-1(0ffh)50ahbvar220h20h?20h10h00h10hwvar1movdl,bvar1 64H64H64H64Hbvar128movdl,bvar1
;bvar1表示它的第1個(gè)數(shù)據(jù),故DL←100=’d’decbvar2+1
;bvar2位移量為1的字節(jié)數(shù)據(jù)(minint=5)減1,故為4movabc[3],dl ;abc位移量為3的字節(jié)單元賦值‘d’,字符串成為‘a(chǎn)bcd’64H64H64H64Hbvar1-1(0ffh)50ahbvar220h20h?20h10h00h10hwvar1movdl,bvar1 64H64H64H64Hbvar129movdl,bvar1
;bvar1表示它的第1個(gè)數(shù)據(jù),故DL←100=’d’decbvar2+1
;bvar2位移量為1的字節(jié)數(shù)據(jù)(minint=5)減1,故為4movabc[3],dl ;abc位移量為3的字節(jié)單元賦值‘d’,字符串成為‘a(chǎn)bcd’64H64H64H64Hbvar1-1(0ffh)50ahbvar220h20h?20h10h00h10hwvar1‘d’DL:movdl,bvar1 64H64H64H64Hbvar130movdl,bvar1
;bvar1表示它的第1個(gè)數(shù)據(jù),故DL←100=’d’decbvar2+1
;bvar2位移量為1的字節(jié)數(shù)據(jù)(minint=5)減1,故為4movabc[3],dl ;abc位移量為3的字節(jié)單元賦值‘d’,字符串成為‘a(chǎn)bcd’64H64H64H64Hbvar1-1(0ffh)50ahbvar220h20h?20h10h00h10hwvar1‘d’DL:movdl,bvar1 64H64H64H64Hbvar131movdl,bvar1
;bvar1表示它的第1個(gè)數(shù)據(jù),故DL←100=’d’decbvar2+1
;bvar2位移量為1的字節(jié)數(shù)據(jù)(minint=5)減1,故為4movabc[3],dl ;abc位移量為3的字節(jié)單元賦值‘d’,字符串成為‘a(chǎn)bcd’64H64H64H64Hbvar1-1(0ffh)40ahbvar220h20h?20h10h00h10hwvar1‘d’DL:movdl,bvar1 64H64H64H64Hbvar132movdl,bvar1 ;bvar1表示它的第1個(gè)數(shù)據(jù),故DL←100=’d’decbvar2+1
;bvar2位移量為1的字節(jié)數(shù)據(jù)(minint=5)減1,故為4movabc[3],dl
;abc位移量為3的字節(jié)單元賦值‘d’,字符串成為‘a(chǎn)bcd’64H64H64H64Hbvar1-1(0ffh)40ahbvar220h20h?20h10h00h10hwvar1‘d’DL:movdl,bvar1 64H64H64H64Hbvar133movdl,bvar1
;bvar1表示它的第1個(gè)數(shù)據(jù),故DL←100=’d’decbvar2+1
;bvar2位移量為1的字節(jié)數(shù)據(jù)(minint=5)減1,故為4movabc[3],dl ;abc位移量為3的字節(jié)單元賦值‘d’,字符串成為‘a(chǎn)bcd’‘d’DL:77h77h12H34Hwvar211h11h65hdvar‘b’‘a(chǎn)’87h?‘c’abc?00hmovdl,bvar1 ‘d’DL:77h77h12H3434movdl,bvar1
;bvar1表示它的第1個(gè)數(shù)據(jù),故DL←100=’d’decbvar2+1
;bvar2位移量為1的字節(jié)數(shù)據(jù)(minint=5)減1,故為4movabc[3],dl ;abc位移量為3的字節(jié)單元賦值‘d’,字符串成為‘a(chǎn)bcd’‘d’DL:77h77h12H34Hwvar211h11h65hdvar‘b’‘a(chǎn)’87h‘d’‘c’abc?00hmovdl,bvar1 ‘d’DL:77h77h12H3435movax,wordptrdvar[0] movdx,wordptrdvar[2];取雙字到DX.AX77h77h12H34Hwvar211h11h65hdvar‘b’‘a(chǎn)’87h?‘c’abc?00hmovax,wordptrdvar[0] 77h77h36其它幾個(gè)可用于變量的運(yùn)算符SEG:取變量、標(biāo)號(hào)段地址TYPE:返回此變量類型存儲(chǔ)的所需字節(jié)數(shù)。(對(duì)標(biāo)號(hào)為-1,-2)LENGTH:取數(shù)組元素個(gè)數(shù)SIZE:取數(shù)組字節(jié)數(shù)設(shè):DS=2000HXPDW?X1DB‘A’,’B’,’C’ARRAYDW100DUP(1,2,3,20(0))MOVAL,TYPEXP;等效于MOVAL,2MOVAL,TYPEX1;等效于MOVAL,1MOVAL,LENGTHX1;等效于MOVAL,1MOVAL,LENGTHARRAY;等效于MOVAL,100MOVAX,SIZEARRAY;等效于MOVAX,200(有嵌套,不對(duì))MOVAX,SEGXP;AX=2000h其它幾個(gè)可用于變量的運(yùn)算符設(shè):DS=2000H37datasegmentabcdb‘a(chǎn)’,’b’,’c’string db‘ABCDEFGHIJ’ crlfs db13,10,'$' dataendscodesegment………. movcx,10movbx,0again:addstring[bx],3 incbx
loopagain
;循環(huán),每次cx減1,不為0到指定標(biāo)號(hào),否則,退出
leadx,abc ;movoffsetdxmovah,9int21h ………..;顯示結(jié)果:abcDEFGHIJKLMdatasegment38匯編語(yǔ)言課件07
MASM語(yǔ)法(1)匯編語(yǔ)言課件07
MASM語(yǔ)法(1)39匯編語(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ǔ)句格式與分類匯編語(yǔ)言語(yǔ)句一般格式為:標(biāo)識(shí)符:用來(lái)為變量、段、標(biāo)號(hào)、過(guò)程40[語(yǔ)句標(biāo)號(hào):]指令名[操作數(shù)序列][;注釋]語(yǔ)句標(biāo)號(hào)——標(biāo)識(shí)符后加:,提供轉(zhuǎn)移地址,開始地址[語(yǔ)句標(biāo)號(hào):]指令名[操作數(shù)序列41[語(yǔ)句標(biāo)號(hào):]指令名
[操作數(shù)序列][;注釋]三類:機(jī)器指令、偽指令和宏指令。
機(jī)器指令:指令系統(tǒng)中的硬指令,程序運(yùn)行時(shí)由CPU執(zhí)行偽指令:匯編程序執(zhí)行的操作,規(guī)定匯編程序如何按要求進(jìn)行匯編及分配內(nèi)存宏指令:由一系列指令或偽指令構(gòu)成,匯編時(shí)展開成若干條機(jī)器指令,用于提高編程效率(偽指令和宏指令由匯編程序在匯編期間處理)[語(yǔ)句標(biāo)號(hào):]指令名[操作數(shù)序列42[語(yǔ)句標(biāo)號(hào):]指令名
[操作數(shù)序列][;注釋]可以是常量、變量、表達(dá)式、寄存器名或標(biāo)號(hào)等,用逗號(hào)隔開。[語(yǔ)句標(biāo)號(hào):]指令名[操作數(shù)序列43“;”后可給出語(yǔ)句注釋,提高可讀性和可理解性。[語(yǔ)句標(biāo)號(hào):]指令名
[操作數(shù)序列][;注釋]“;”后可給出語(yǔ)句注釋,提高可讀性和可理解性。44常量、變量、標(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)制:.RADIXn常量、變量、標(biāo)號(hào)、運(yùn)算符和表達(dá)式常量表示一個(gè)固定的數(shù)值,又可45
.RADIX10.modelsmall
.stack1024.data
string
db‘Hello,world’,0dh,0ah,‘$’
.code
start:
movax,@data
movds,axmovdx,offset
string
movah,9int21h movah,4ch
int21h
end
start
.RADIX1046常量其中,n為2-16范圍內(nèi)任何數(shù)值。例如指令“.RADIX16”,將缺省基數(shù)改為16,即沒有后綴的數(shù)值表示16進(jìn)制數(shù),非16進(jìn)制數(shù)均應(yīng)使用后綴字母,包括10進(jìn)制數(shù)例如10101100B0a4h,56acH35D357Q常量其中,n為2-16范圍內(nèi)任何數(shù)值。例如指令“.RADI47實(shí)數(shù):±整數(shù).小數(shù)E±指數(shù)4字節(jié)、8字節(jié)或10字節(jié)例如:21.42-4.55E+2實(shí)數(shù):48字符串字符串常量是用單引號(hào)或雙引號(hào)括起來(lái)的單個(gè)字符或多個(gè)字符,其數(shù)值是每個(gè)字符對(duì)應(yīng)的ASCII碼值。例如‘d’=64H‘AB’=4142H,‘Hello,Assembly!’字符串49符號(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)常量是指使用標(biāo)識(shí)符表達(dá)一個(gè)數(shù)值。常量若使用有意義50符號(hào)定義偽指令符號(hào)名EQU數(shù)值表達(dá)式符號(hào)名EQU<字符串>
;MASM5.x不支持符號(hào)名=數(shù)值表達(dá)式等價(jià)偽指令EQU給符號(hào)名定義一個(gè)數(shù)值或定義成另一個(gè)字符串,這個(gè)字符串甚至可以是一條處理器指令。符號(hào)定義偽指令符號(hào)名EQU數(shù)值表達(dá)式51例如:DosWriteCharequ2CarriageReturn=13CallDOSequ<int21h>應(yīng)用上述符號(hào)定義,下列左邊的程序段可以寫成右側(cè)的等價(jià)形式:movah,DosWriteChar;movah,2movdl,CarriageReturn ;movdl,13CallDOS ;int21h例如:52EQU用于數(shù)值等價(jià)時(shí)不能重復(fù)定義符號(hào)名,但“=”允許重復(fù)賦值,例如:X=7 ;同樣XEQU7是正確的X=X+5;但是XEQUX+5是錯(cuò)誤的EQU用于數(shù)值等價(jià)時(shí)不能重復(fù)定義符號(hào)名,但“=”允許重復(fù)賦值53數(shù)值表達(dá)式數(shù)值表達(dá)式一般是指由運(yùn)算符(MASM統(tǒng)稱為操作符Operator)連接的各種常量所構(gòu)成的表達(dá)式。匯編程序在匯編過(guò)程中計(jì)算表達(dá)式,最終得到一個(gè)確定的數(shù)值,所以也是常量。由于表達(dá)式是在程序運(yùn)行前的匯編階段計(jì)算,所以組成表達(dá)式的各部分必須在匯編時(shí)就能確定。數(shù)值表達(dá)式數(shù)值表達(dá)式一般是指由運(yùn)算符(MASM統(tǒng)稱為操作符O54匯編語(yǔ)言支持多種運(yùn)算符P46表3-2匯編語(yǔ)言支持多種運(yùn)算符55movax,3*4+5
;等價(jià)于movax,17oral,03hAND45h ;等價(jià)于oral,01Hmoval,0101bSHL(2*2) ;等價(jià)于moval,01010000bmovax,3*4+556變量變量實(shí)質(zhì)上是指內(nèi)存單元的數(shù)據(jù),因而可以改變。變量需要事先定義才能使用。變量的三種屬性:
段值(SEG):變量所在段的段址
偏移量(OFFSET):變量所在段相對(duì)0的存儲(chǔ)位置(字節(jié)數(shù))類型(TYPE):變量占用的字節(jié)數(shù)變量變量實(shí)質(zhì)上是指內(nèi)存單元的數(shù)據(jù),因而可以改變。變量需要事先571.變量的定義變量名偽指令初值表變量名為用戶自定義標(biāo)識(shí)符,表示初值表首元素的邏輯地址。變量名也可以沒有,在這種情況下,匯編程序?qū)⒅苯訛槌踔当矸峙淇臻g,無(wú)符號(hào)地址。1.變量的定義58變量名偽指令初值表變量定義偽指令有DB,DW,DD,DF,DQ,DT,它們根據(jù)申請(qǐng)的主存空間單位分類DB:字節(jié)DW:字(16位)DD:雙字(32位)DQ:4字節(jié)存實(shí)型數(shù)DT:10字節(jié),BCD碼變量名偽指令初值表59除了DB,DW,DD等定義的簡(jiǎn)單變量,匯編語(yǔ)言還支持復(fù)雜的數(shù)據(jù)變量,如結(jié)構(gòu)(Structure)、記錄(Record)、聯(lián)合(Union)等除了DB,DW,DD等定義的簡(jiǎn)單變量,匯編語(yǔ)言還60變量名偽指令初值表初值表是用逗號(hào)分隔的參數(shù),主要由常量、數(shù)值表達(dá)式或“?”組成。其中“?”表示初值不確定,即未賦初值。另外,多個(gè)存儲(chǔ)單元如果初值相同,可以用復(fù)制操作符DUP進(jìn)行定義。DUP的格式為:重復(fù)次數(shù)DUP(重復(fù)參數(shù))例:stack1db100dup(?)變量名偽指令初值表612.變量的應(yīng)用變量具有邏輯地址。在程序代碼中,通過(guò)變量名引用其指向的第一個(gè)數(shù)據(jù),通過(guò)變量名加減位移量存取以第一個(gè)數(shù)據(jù)為基地址的前后數(shù)據(jù)。變量名后用“+n”或“[n]”作用相同,都表示后移n個(gè)字節(jié)存儲(chǔ)單元。2.變量的應(yīng)用62例變量的定義和應(yīng)用bvar1 db100,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,5,0AH
db?,2dup(20h)
;預(yù)留一個(gè)字節(jié)空間,重復(fù)定義了2個(gè)數(shù)值20Hwvar1dw2010h,4*4
;字變量:兩個(gè)數(shù)據(jù)是2010H、10H,共占4個(gè)字節(jié)64H64H64H64Hbvar1-1(0ffh)50ahbvar220h20h?20h10h00h10hwvar1例變量的定義和應(yīng)用bvar1 db100,011001063wvar2 dw?
;wvar2是沒有初值的字變量dvardd12347777h,87651111h ;雙字變量:2個(gè)雙字?jǐn)?shù)據(jù)abcdb'a','b','c',? 等效于abcdb‘a(chǎn)bc’,?;定義字符,實(shí)際是字節(jié)變量77h77h12H34Hwvar211h11h65hdvar‘b’‘a(chǎn)’87h?‘c’abc?00habc+2?wvar2 dw? 77h77h12H34Hwvar21164string db‘ABCDEFGHIJ’
;定義字符串:使用字節(jié)定義DB偽指令crlfs db13,10,'$'
;回車符0DH、換行符0AH和字符'$'=24Hmaxint equ0aharray1dwmaxintdup(0) ;10個(gè)初值為0的字量,可以認(rèn)為是數(shù)組arraydb2dup(2,3,2dup(4))
;8個(gè)字節(jié)內(nèi)容依次為:23442344stringABCDEFJIGH‘$’131000h23442344crlfsarray1array共20字節(jié)string db‘ABCDEFGHIJ’ stringA65movdl,bvar1
;bvar1表示它的第1個(gè)數(shù)據(jù),故DL←100=’d’decbvar2+1
;bvar2位移量為1的字節(jié)數(shù)據(jù)(minint=5)減1,故為4movabc[3],dl ;abc位移量為3的字節(jié)單元賦值‘d’,字符串成為‘a(chǎn)bcd’64H64H64H64Hbvar1-1(0ffh)50ahbvar220h20h?20h10h00h10hwvar1movdl,bvar1 64H64H64H64Hbvar166movdl,bvar1
;bvar1表示它的第1個(gè)數(shù)據(jù),故DL←100=’d’decbvar2+1
;bvar2位移量為1的字節(jié)數(shù)據(jù)(minint=5)減1,故為4movabc[3],dl ;abc位移量為3的字節(jié)單元賦值‘d’,字符串成為‘a(chǎn)bcd’64H64H64H64Hbvar1-1(0ffh)50ahbvar220h20h?20h10h00h10hwvar1movdl,bvar1 64H64H64H64Hbvar167movdl,bvar1
;bvar1表示它的第1個(gè)數(shù)據(jù),故DL←100=’d’decbvar2+1
;bvar2位移量為1的字節(jié)數(shù)據(jù)(minint=5)減1,故為4movabc[3],dl ;abc位移量為3的字節(jié)單元賦值‘d’,字符串成為‘a(chǎn)bcd’64H64H64H64Hbvar1-1(0ffh)50ahbvar220h20h?20h10h00h10hwvar1‘d’DL:movdl,bvar1 64H64H64H64Hbvar168movdl,bvar1
;bvar1表示它的第1個(gè)數(shù)據(jù),故DL←100=’d’decbvar2+1
;bvar2位移量為1的字節(jié)數(shù)據(jù)(minint=5)減1,故為4movabc[3],dl ;abc位移量為3的字節(jié)單元賦值‘d’,字符串成為‘a(chǎn)bcd’64H64H64H64Hbvar1-1(0ffh)50ahbvar220h20h?20h10h00h10hwvar1‘d’DL:movdl,bvar1 64H64H64H64Hbvar169movdl,bvar1
;bvar1表示它的第1個(gè)數(shù)據(jù),故DL←100=’d’decbvar2+1
;bvar2位移量為1的字節(jié)數(shù)據(jù)(minint=5)減1,故為4movabc[3],dl ;abc位移量為3的字節(jié)單元賦值‘d’,字符串成為‘a(chǎn)bcd’64H64H64H64Hbvar1-1(0ffh)40ahbvar220h20h?20h10h00h10hwvar1‘d’DL:movdl,bvar1 64H64H64H64Hbvar170movdl,bvar1 ;bvar1表示它的第1個(gè)數(shù)據(jù),故DL←100=’d’decbvar2+1
;bvar2位移量為1的字節(jié)數(shù)據(jù)(minint=5)減1,故為4movabc[3],dl
;abc位移量為3的字節(jié)單元賦值‘d’,字符串成為‘a(chǎn)bcd’64H64H64H64Hbvar1-1(0ffh)40ahbvar220h20h?20h10h
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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àng)目可行性研究報(bào)告
- 中國(guó)內(nèi)鏡診療器械行業(yè)投資研究分析及發(fā)展前景預(yù)測(cè)報(bào)告
- 2024-2025學(xué)年高中地理課時(shí)分層作業(yè)6含解析湘教版必修3
- 2024-2025學(xué)年高中歷史專題420世紀(jì)以來(lái)中國(guó)重大思想理論成果1孫中山的三民主義即學(xué)即練隨堂鞏固含解析人民版必修3
- 2024-2025學(xué)年高中英語(yǔ)Unit5Thepowerofnature單元加餐練含解析新人教版選修6
- 2023年普通高等學(xué)校招生全國(guó)統(tǒng)一考試(全國(guó)甲卷)物理試題含答案
- 2025年米果成套設(shè)備行業(yè)深度研究分析報(bào)告
- 2025年風(fēng)扇用接線柱項(xiàng)目投資可行性研究分析報(bào)告
- 中國(guó)水力發(fā)電行業(yè)分析報(bào)告
- 中國(guó)塑膠無(wú)塵噴漆生產(chǎn)線項(xiàng)目投資可行性研究報(bào)告
- 干部選拔任用程序
- 部編人教版五年級(jí)下冊(cè)道德與法治簡(jiǎn)答題歸納總結(jié)
- 保障性住房資格申請(qǐng)表
- 2023高二開學(xué)第一課《蛻變》-主題班會(huì)
- 口服降糖藥物分類詳解課件
- 二級(jí)生物安全實(shí)驗(yàn)室設(shè)計(jì)建造與運(yùn)行管理指南
- 圍手術(shù)期疼痛護(hù)理課件
- 外國(guó)新聞傳播史-張昆課件
- 圓圈正義:作為自由前提的信念
- 一次性纖維環(huán)縫合器
- 中華民族的形成與發(fā)展
評(píng)論
0/150
提交評(píng)論