匯編語言的各條指令_第1頁
匯編語言的各條指令_第2頁
匯編語言的各條指令_第3頁
匯編語言的各條指令_第4頁
匯編語言的各條指令_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

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

文檔簡(jiǎn)介

1/1匯編語言的各條指令常用命令

數(shù)據(jù)傳送指令

一通用數(shù)據(jù)傳送指令

MOV指令為雙操作數(shù)指令,兩個(gè)操作數(shù)中不能全為內(nèi)存操作數(shù)

格式:MOVDST,SRC

執(zhí)行操作:dst=src

注:1.目的數(shù)可以是通用寄存器,存儲(chǔ)單元和段寄存器(但不允許用CS段寄存器).

2.立即數(shù)不能直接送段寄存器

3.不允許在兩個(gè)存儲(chǔ)單元直接傳送數(shù)據(jù)

4.不允許在兩個(gè)段寄存器間直接傳送信息

PUSH入棧指令及POP出棧指令:

堆棧操作是以“后進(jìn)先出”的方式進(jìn)行數(shù)據(jù)操作。

格式:PUSHSRC//Word

執(zhí)行操作:(SP)(OPR2)

注:1.必須有一個(gè)操作數(shù)是在寄存器中

2.不能與段寄存器交換數(shù)據(jù)

存儲(chǔ)器與存儲(chǔ)器之間不能交換數(shù)據(jù)。

二累加器專用傳送指令

IN輸入指令

長(zhǎng)格式為:INAL,PORT(字節(jié))

INAX,PORT(字)

執(zhí)行的操作:(AL)<-(PORT)(字節(jié))

(AX)<-(PORT+1,PORT)(字)

短格式為:INAL,DX(字節(jié))

INAX,DX(字)

OUT輸出指令

長(zhǎng)格式為:OUTPORT,AL(字節(jié))

OUTPORT,AX(字)

執(zhí)行的操作:(PORT)<-(AL)(字節(jié))

(PORT+1,PORT)<-(AX)(字)

短格式為:OUTDX,AL(字節(jié))

OUTDX,AX(字)

執(zhí)行的操作:((DX))<-(AL)(字節(jié))

((DX)+1,(DX))<-AX(字)

XLAT(TRANSLATE)換碼指令:

把一種代碼轉(zhuǎn)換為另一種代碼。

格式:XLAT(OPR可選)//Byte

執(zhí)行操作:(AL)<-((BX)+(AL))

注:指令執(zhí)行時(shí)只使用預(yù)先已存入BX中的表格首地址,執(zhí)行后,AL中內(nèi)容則是所要轉(zhuǎn)換的代碼。

三有效地址送寄存器指令

LEA(LoadEffectiveAddress):

有效地址傳送寄存器指令

格式:LEAREG,SRC//指令把源操作數(shù)SRC的有效地址送到指定的寄存器中。

執(zhí)行操作:(REG)<-SRC

注:1.SRC只能是各種尋址方式的存儲(chǔ)器操作數(shù),REG只能是16位寄存器

2.MOVBX,OFFSETOPER_ONE等價(jià)于LEABX,OPER_ONE

3.MOVSP,[BX]//將BX間接尋址的相繼的二個(gè)存儲(chǔ)單元的內(nèi)容送入SP中

4.LEASP,[BX]//將BX的內(nèi)容作為存儲(chǔ)器有效地址送入SP中

LDS(LoadDSwithpointer):

指針?biāo)图拇嫫骱虳S指令

格式:LDSREG,SRC//常指定SI寄存器。

執(zhí)行的操作:(REG)<-(SRC)

(DS)<-(SRC+2)

注:把源操作數(shù)指定的4個(gè)相繼字節(jié)送到由指令指定的寄存器及DS寄存器中。該指令常指定SI寄存器。

LES(LoadESwithpointer)指針?biāo)图拇嫫骱虴S指令

格式:LESREG,SRC//常指定DI寄存器

執(zhí)行的操作:(REG)<-(SRC)

(ES)<-(SRC+2)//與LDS大致相同,不同之處是將ES代替DS而已。

字節(jié)送到由指令指定的寄存器及ES寄

存器中。該指令常指定DI寄存器。

四標(biāo)志寄存器傳送指令

LAHF(LoadAHwithFlags

)

標(biāo)志位送AH指令

格式:LAHF

執(zhí)行操作:(AH)<-(PWS的低字節(jié))

注:將PSW寄存器中的低8位的狀態(tài)標(biāo)志(條件碼)送入AH的相應(yīng)位,SF送D7位,ZF送D6位

SAHF(StoreAHintoFlags)

AH送標(biāo)志寄存器指令

格式:SAHF

執(zhí)行操作:(PWS的低字節(jié))<-(AH)

注:將AH寄存器的相應(yīng)位送到PSW寄存器的低8位的相應(yīng)位,AH的D7位送SF,D6位送ZF。

PUSHF(PUSHtheFlags)

標(biāo)志進(jìn)棧指令

格式:PUSHF

執(zhí)行操作:(SP)<-(SP)-2

SP=SP-1,(SP)=PSW的高8位,SP=SP-1,(SP)=PSW的低8位

注:將標(biāo)志寄存器的值壓入堆棧頂部,同時(shí)棧指針SP值減2

POPF(POPtheFlags)

標(biāo)志出棧指令

格式:POPF

執(zhí)行操作:(PWS)<-((SP)+1,(SP))

(SP)<-(SP+2)

PSW低8位=(SP),SP=SP+1,PSW高8位=(SP),SP=SP+1

注:與PUSHF相反,從堆棧的頂部彈出兩個(gè)字節(jié)送到PSW寄存器中,同時(shí)堆棧指針值加2

算術(shù)指令

一加法指令

ADD(ADD)加法指令

格式:ADDDST,SRC//Byte/Word

執(zhí)行操作:(DST)<-(SRC)+(DST)

注:1.兩個(gè)存儲(chǔ)器操作數(shù)不能通過ADD指令直接相加,即DST和SRC必須有一個(gè)是通用寄存器操作數(shù)。

2.段寄存器不能作為SRC和DST.

3.影響標(biāo)志位

AuxiliaryCrrayFlag,CarryFlag,OverflowFlag,ParityFlag,SignFlag和ZeroFlag,如下所示:

CF根據(jù)最高有效位是否有進(jìn)(借)位設(shè)置的:有進(jìn)(借)位時(shí)CF=1,無進(jìn)(借)位時(shí)

CF=0.

OF根據(jù)操作數(shù)的符號(hào)及其變化來設(shè)置的:若兩個(gè)操作數(shù)的符號(hào)相同,而結(jié)果的符號(hào)與之相反時(shí)OF=1,否則為0.

ZF根據(jù)結(jié)果來設(shè)置:不等于0時(shí)ZF=0,等于0時(shí)ZF=1

SF根據(jù)結(jié)果的最高位來設(shè)置:最高位為0,則SF=0.

AF根據(jù)相加時(shí)D3是否向D4進(jìn)(借)位來設(shè)置:有進(jìn)(借)位時(shí)AF=1,無進(jìn)(借)位時(shí)

AF=0

PF根據(jù)結(jié)果的1的個(gè)數(shù)時(shí)否為奇數(shù)來設(shè)置:1的個(gè)數(shù)為奇數(shù)時(shí)PF=0,為偶數(shù)時(shí)PF=1

ADC(ADdwithCarry)帶進(jìn)位加法指令

格式:ADCDST,SRC//Byte/Word

執(zhí)行操作:(DST)<-(SRC)+(DST)+CF

注:與ADD不同之處是還要加上進(jìn)位標(biāo)志位的值。

INC(INCrement)加1指令

格式:INCOPR//Byte/Word

執(zhí)行操作:(OPR)<-(OPR)+1

注:1.OPR可以是寄存器和存儲(chǔ)器操作數(shù),但不能是立即數(shù)和段寄存器2.影響標(biāo)志位OF,SF,ZF,PF和AF,不影響CF.

二減法指令

SUB(SUBtract)不帶借位的減法指令

格式:SUBDST,SRC//Byte/Word

執(zhí)行操作:(DST)<-(DST)-(SRC)

注:1.DST和SRC尋址方式及規(guī)定與ADD相同。

2.影響全部標(biāo)志位。(判斷標(biāo)志位參見ADD)

SBB(SuBtractwithBorrow)帶借位減法指令

格式:SBBDST,SRC//Byte/Word

執(zhí)行操作:(DST)<-(DST)-(SRC)-CF

DEC(DECrement)減1指令

格式:DECOPR//Byte/Word

執(zhí)行操作:(OPR)<-(OPR)-1//除CF標(biāo)志位,其余標(biāo)志位都受影響。

NEG(NEGate)求補(bǔ)指令

格式:NEGOPR

執(zhí)行操作:(OPR)<--(OPR)//將操作數(shù)按位求反后末位加1.

CMP(CoMPare)比較指令

格式:CMPOPR1,OPR2

執(zhí)行操作:(OPR1)-(OPR2)//與SUB指令一樣執(zhí)行運(yùn)算,但不保存結(jié)果。

注:該指令與SUB指令一樣執(zhí)行減法操作,但不保存結(jié)果,只是根據(jù)結(jié)果設(shè)置條件標(biāo)志。

三乘法指令

MUL(unsignedMULtiple)無符號(hào)數(shù)乘法指令

格式:MULSRC//Byte/Word.

執(zhí)行操作:字操作:(AX)<-(AL)*(SRC)//字節(jié)運(yùn)算時(shí)目的操作數(shù)用AL,乘積放在AX中

字節(jié)操作:(DX,AX)<-(AX)*(SRC)//字運(yùn)算時(shí)目的操作數(shù)用AX,DX存放乘積的高位字,AX放乘積的低位字

注:1.目的數(shù)必須是累加器AX或AL,指令中不需寫出

源操作數(shù)SRC可以是通用寄存器和各種尋址方式的存儲(chǔ)器操作數(shù),而絕對(duì)不允許是立即數(shù)或段寄存器。

IMUL(sIgnedMULtiple)有符號(hào)數(shù)乘法指令

格式:IMULSRC//與MUL指令相同,但必須是帶符號(hào)數(shù)

四除法指令

DIV(unsignedDIVide)無符號(hào)數(shù)除法指令

格式:DIVSRC//Byte/Word其中:SRC的規(guī)定同乘法指令MUL

執(zhí)行操作:字節(jié)操作:(AL)<-(AX)/(SRC)的商

(AH)<-(AX)/(SRC)的余數(shù)

字操作:(AX)<-(DX,AX)/(SRC)的商

(DX)<-(DX,AX)/(SRC)的余數(shù)

注:存儲(chǔ)器操作數(shù)必須指明數(shù)據(jù)類型:BYTEPTRsrc或WORDPTRsrc

IDIV(sIgnedDIVied)有符號(hào)數(shù)除法指令

格式:IDIVSRC

執(zhí)行的操作:與DIV相同,但操作數(shù)必須是帶符號(hào)數(shù),商和余數(shù)也均為帶符號(hào)數(shù),且余數(shù)的符號(hào)與被除數(shù)的符號(hào)相同。

CBW(ConvertBytetoWord)字節(jié)轉(zhuǎn)換為字指令

格式:CBW

執(zhí)行操作:AL中的符號(hào)位(D7)擴(kuò)展到8位AH中,若AL中的D7=0,則AH=00H,若AL中的D7=1,則AH=FFH.

CWD(ConvertWordtoDoubleword)字轉(zhuǎn)換為雙字指令

格式:CWD

執(zhí)行操作:AX中的符號(hào)位(D15)擴(kuò)展到16位DX中,若AX中的D15=0,則DX=0000H,若AX中的D15=1,則DX=FFFFH

注:這兩條指令都不影響條件碼。

邏輯指令

一邏輯運(yùn)算指令

AND,OR,XOR和TEST都是雙字節(jié)操作指令,操作數(shù)的尋址方式的規(guī)定與算術(shù)運(yùn)算指令相同。

NOT是單字節(jié)操作指令,不允許使用立即數(shù)。

邏輯運(yùn)算均是按位進(jìn)行操作,真值表如下:

AND(and)邏輯與指令

格式:ANDDST,SRC//Byte/Word

執(zhí)行操作:(DST)<-(DST)^(SRC)

注:1.AND指令執(zhí)行后,將使CF=0,OF=0,AF位無定義,指令執(zhí)行結(jié)果影響SF,ZF和PF標(biāo)志位。

2.AND指令典型用法A:用于屏蔽某些位,即使某些位為0.

例子:屏蔽AL的高4位:即將高4位和0000B相與,低4位和1111B相與

MOVAL,39H//AL=00111001B[39H]

ADDAL,0FH//AL=00001001B[09H]即

00111001B[39H]&00001111B[0FH]=00001001B[09H]

AND指令典型用法B:取出某一位的值(見TEST)

OR(or)邏輯或指令

格式:ORDST,SRC//Byte/Word

執(zhí)行操作:(DST)<-(DST)|(SRC)

注:1.OR指令執(zhí)行后,將使CF=0,OF=0,AF位無定義,指令執(zhí)行結(jié)果影響SF,ZF和PF標(biāo)志位。

2.常用于將某些位置1.

例子:將AL的第5位置1:

MOVAL,4AH//AL=01001010B[4AH]

ORAL,10H//AL=01011010B[5AH]即

01001010B[4AH]|00010000B[10H]=01011010B[5AH]

XOR(eXclusiveOR)邏輯異或指令

格式:XORDST,SRC//Byte/Word

執(zhí)行操作:(DST)<-(DST)^(SRC)

注:1.XOR指令常用于使某個(gè)操作數(shù)清零,同時(shí)使CF=0,清除進(jìn)位標(biāo)志。

2.XOR指令使某些位維持不變則與'0'相異或,若要使某些位取反則與'1'相異或。

例子:將AL的高4位維持不變,低4位取反:

MOVAL,B8H//AL=10111000B[B8H]

XORAL,0FH//AL=10110111B[B7H]即

10111000B[B8H]^00001111[0FH]=10110111B[B7H]

例子:測(cè)試某一個(gè)操作數(shù)是否與另一確定操作數(shù)相等:

XORAX,042EH

JZ//如果AX==042EH,則ZF=TRUE(1),執(zhí)行JZ...

NOT(not)邏輯非指令

格式:NOTOPR//Byte/Word

執(zhí)行操作:(OPR)<~(OPR)//~01100101[65H]=10011010[9AH]

1.操作數(shù)不能使用立即數(shù)或段寄存器操作數(shù),可使用通用寄存器和各種方式尋址的存儲(chǔ)器操作數(shù)。

2.NOT指令不影響任何標(biāo)志位。

例子:將AL各位取反:

MOVAL,65H//AL=01100101B[65H]

NOTAL//AL=10011010B[9AH]即~01100101B[65H]=10011010B[9AH]

TEST(test)指令

格式:TESTOPR1,OPR2//Byte/Word

執(zhí)行操作:opr1&opr2

注:1.兩個(gè)操作數(shù)相與的結(jié)果不保存,結(jié)果影響標(biāo)志位PF,SF和ZF,使CF=0,OF=0,而AF位無定義。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論