《匯編語言》講稿-08_第1頁
《匯編語言》講稿-08_第2頁
《匯編語言》講稿-08_第3頁
《匯編語言》講稿-08_第4頁
《匯編語言》講稿-08_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

入棧(PUSH)指令格式:PUSHSRC

其中:SRC源操作數(shù)可以是16位的寄存器或存儲(chǔ)器。功能:PUSH指令可以將寄存器及存儲(chǔ)器中的一個(gè)字放入棧頂。執(zhí)行操作:

16位指令:SP←SP-2[SP+1,SP]←SRC

出棧(POP)指令格式:POPDST

其中:DST:目的操作數(shù)則必須是16位寄存器或存儲(chǔ)器。功能:將現(xiàn)行的SP所指棧頂?shù)囊粋€(gè)字傳到寄存器或存儲(chǔ)器中。執(zhí)行操作:16位指令:DST←[SP+l,SP]SP←SP+2【例1】設(shè)AX=1234H,SP=0100,請(qǐng)畫出執(zhí)行PUSHAX前后的堆棧圖,執(zhí)行這條指令后SP=?執(zhí)行步驟:SP=SP_2;[SP+1,SP]←AX【例2】設(shè)堆棧指針SP的初值為2000H,SS=1000H,AX=3000H,BX=5000H1)執(zhí)行指令PUSHAX后SP=?

2)接著再執(zhí)行PUSHBX及POPAX后SP=?AX=?BX=?并畫出堆棧變化示意圖。答:執(zhí)行完P(guān)USHAX后SP=1FFEH,執(zhí)行完P(guān)USHBX;POPAX后SP=1FFEH,AX=5000H,BX=5000H

在堆棧變化示意圖中的地址用物理地址來描述的,也可以用邏輯地址描述。

(4)交換指令(XCHG)指令格式:XCHGDST,SCR功能:把一個(gè)字或一個(gè)字節(jié)的源操作數(shù)與目的操作數(shù)進(jìn)行交換。執(zhí)行操作:DST←→SCR【例3】XCHGAX,BX;通用寄存器間互換,字互換XCHGAL,BL;字節(jié)互換XCHGWORD_LOC,DX;存儲(chǔ)器與通用寄存器互換,字互換XCHGDL,BYTE_LOC;字節(jié)互換

2.累加器專用傳送指令XLAT換碼指令這組指令只限于使用累加器AX或AL傳送信息。換碼指令:XLATSCR在執(zhí)行XLAT之前,先要將字節(jié)表的首地址送入BX,將表的相對(duì)值(即[BX+AL]的內(nèi)容)送入AL。指令執(zhí)行操作:16位指令:AL←[BX+AL][例4]將表S_TAB中第4個(gè)字節(jié)的內(nèi)容取出到AL中。

MOVAL,4;要找的字節(jié)序號(hào)送AL中

MOVBX,OFFSETS_TAB;將S_TAB的偏移地址送BXXLATS_TAB;;取值執(zhí)行后,AL=FFH,如下圖所示.

3.地址傳送指令

LEA取有效地址LDS取地址指針到DSLES取地址指針到ESLSS取地址指針到SS(1)有效地址傳送指令(LEA)指令格式:LEAreg,mem

指令功能:將源操作數(shù)的有效地址→reg【例5】取符號(hào)地址(或變量)XWORD的偏移地址送BX寄存器中。

xword

dw1234H;現(xiàn)假設(shè)xword的偏移地址為2000H方法1:用LEA指令;LEABX,XWORD

方法2:用OFFSET偽操作符;

MOVBX,OFFSETXWORD

(2)地址指針傳送指令(LDS、LES、LSS)指令格式:LDS(/LES/LSS)reg

,mem指令功能:將存儲(chǔ)器mem中的雙字內(nèi)容依次送入寄存器reg和段寄存器DS(或ES、SS)中。執(zhí)行操作:

mem低位字→reg,

mem高位字→DS(或ES、SS)【例6】設(shè)變量X為字節(jié)變量,該字節(jié)中存放字符‘F’的ASCII碼,變量Y是雙字變量,該變量中存放X的段地址和偏移地址,請(qǐng)通過Y變量取出X變量的值,送AL中。

XDB‘F’

;X為字節(jié)變量,該字節(jié)中存放字符‘F’YDDX;Y的低字為X的偏移地址,;Y的高字為X的所在段的段地址。

LDSBX,Y;將Y的低位字(

即X的偏移地址)送BX,BX=1000H,;將Y的高位字(

即X的段地址)送DSMOVAL,[BX];‘F’送AL中【例7】設(shè)DS=2000H,BX=0502H,(20502H)=0666H,(20504H)=0888H;執(zhí)行LSSBP,[BX];后BP=?,SS=?答:執(zhí)行LSSBP,[BX]后BP=0666H,SS=0888H;

4.標(biāo)志寄存器傳送指令標(biāo)志送AH(LAHF)AH送標(biāo)志寄存器(SAHF)標(biāo)志進(jìn)棧(PUSHF)標(biāo)志出棧(POPF)(1)LAHF標(biāo)志送AH指令指令格式:LAHF

指令功能:將標(biāo)志寄存器的低8位送到AH中。指令本身不影響標(biāo)志。執(zhí)行操作:AH←FLAGS的低字節(jié)(2)SAHFAH送標(biāo)志寄存器指令指令格式:SAHF

指令功能:把寄存器AH的內(nèi)容傳送到標(biāo)志寄存器的低8位。

執(zhí)行操作:FLAGS的低字節(jié)←AH(3)PUSHF標(biāo)志進(jìn)棧指令指令格式:PUSHF指令功能:16位標(biāo)志寄存器進(jìn)棧。指令不影響標(biāo)志。執(zhí)行的操作:PUSHF:SP←SP-2;先移動(dòng)棧指針[SP+l,SP]←FLAGS后將16位標(biāo)志寄存器的內(nèi)容進(jìn)棧(4)標(biāo)志出棧指令(POPF)指令格式:POPF指令功能:16位標(biāo)志寄存器出棧。執(zhí)行的操作:POPF:FLAGS←[SP+l,SP];先將堆棧中SP所指的字單元內(nèi)容彈出到16位標(biāo)志寄存器中

SP←SP+2;后移動(dòng)棧指針,使SP指向棧頂

5、類型轉(zhuǎn)換指令CBW字節(jié)轉(zhuǎn)換為字CWD字轉(zhuǎn)換為雙字本組指令均不影響標(biāo)志位(1)CBW字節(jié)轉(zhuǎn)換為字指令格式:CBW其中:該指令是無操作數(shù)指令,源操作數(shù)為AL,對(duì)應(yīng)目的操作數(shù)為AX指令功能:將AL的內(nèi)容符號(hào)擴(kuò)展到AH中,形成AX中的字。執(zhí)行的操作:如果(AL)的最高有效位為0,則(AH)=0;如果(AL)的最高有效位為1,則(AH)=0FFH(2)CWD字轉(zhuǎn)換為雙字指令格式:CWD其中:該指令是無操作數(shù)指令,源操作數(shù)為AX,對(duì)應(yīng)目的操作數(shù)為DX:AX。指令功能:CWD將AX的內(nèi)容符號(hào)擴(kuò)展到DX中形成DX:AX中的雙字。執(zhí)行的操作:CWD如果(AX)的最高有效位為0,則(DX)=0;如果(AX)的最高有效位為1,則(DX)=0FFFFH算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令,主要分為二進(jìn)制數(shù)運(yùn)算和十進(jìn)制數(shù)運(yùn)算指令,它包括加、減、乘除等指令。算術(shù)運(yùn)算的主要對(duì)象是二進(jìn)制算術(shù)運(yùn)算指令,8088/8086的指令操作數(shù)可以是8位或16位,(1)加法指令指令格式:ADDdst,src指令功能:目的操作數(shù)加源操作數(shù),結(jié)果存入目的操作數(shù)中。

dst←(dst)+(src)受影響的狀態(tài)標(biāo)志位:OF,SF,ZF,AF,PF,CF說明:dst和src不能同時(shí)為存儲(chǔ)器操作數(shù)。例:ADDAL,3ADDGAMA[BP][DI],BLADD[BP+DI+OFFSETGAMA],BL(2)帶進(jìn)位加法指令(ADC)指令格式:ADCdst,src指令功能:目的操作數(shù)加源操作數(shù)再加進(jìn)位標(biāo)志CF,結(jié)果存入目的操作數(shù)中。

dst←(dst)+(src)+(CF)受影響的狀態(tài)標(biāo)志位:OF,SF,ZF,AF,PF,CF例:ADCAL,3ADCDX,[BX+10](3)INC加1指令指令格式:INCOPR操作:將指定的操作數(shù)OPR加1,并將結(jié)果回送到目標(biāo)操作數(shù)中。(OPR)←(OPR)+1例:INCAL

INCBX

2、減法指令(1)減法(SUB)指令格式:SUBdst,src指令功能:從目的操作數(shù)減去源操作數(shù),結(jié)果存入目的操作數(shù)中。(dst)←(dst)-(src)例:SUBAL,10HSUBAL,[BX+10H]SUBAL,AL(2)帶借位的減法指令指令格式:SBBdst,src指令功能:目的操作數(shù)中減去源操作數(shù)和CF,結(jié)果存入目的操作數(shù)中。(dst)←(dst)-(src)-CF說明:SBB指令主要用于多精度數(shù)據(jù)減法。例:SBBAL,0SBBDL,CL(3)DEC減1指令指令格式:DECOPR指令功能:將指定的操作數(shù)減1,并將結(jié)果送回到目標(biāo)操作數(shù)中。(OPR)←(OPR)-1例:DECBXDECBYTEPTR[BX+SI+1000H]DECSP(4)求補(bǔ)指令(NEG)指令格式:NEGOPR指令功能:操作數(shù)按位求反,末位加1后,結(jié)果送回到操作數(shù)中。(OPR)←-(OPR)說明:NEG指令對(duì)于帶符號(hào)的數(shù)來說是取負(fù),即改變操作數(shù)的符號(hào).例:NEGAXNEGBYTEPTR[BX+10](5)比較指令(CMP)指令匯編格式:CMPORP1,ORP2指令功能:ORP1減去ORP2,結(jié)果不保存。只是根據(jù)結(jié)果設(shè)置條件標(biāo)志位。

(OPR1)-(OPR2)受影響的狀態(tài)標(biāo)志位:OF,SF,ZF,AF,PF,CF說明:CMP將兩個(gè)操作數(shù)相減,兩個(gè)操作數(shù)保持原值不變,但與SUB指令一樣影響標(biāo)志。例:CMPAL,BLCMPDL,10H1、DST、SRC、OPR可以是字節(jié),字、雙字(32位以上機(jī)型)操作,但類型要一致。2、標(biāo)志寄存器主要影響:AF、CF、OF、PF、SF和ZF,在加減運(yùn)算中主要分析的是ZF、SF、CF和OFZF:運(yùn)算結(jié)果為0則ZF=1(ZR);運(yùn)算結(jié)果不為0則ZF=0(NZ)。SF:運(yùn)算結(jié)果最高位為1則SF=1(PL)是負(fù)數(shù),最高位為0則SF=0(NG)是正數(shù)。CF:加法有進(jìn)位(減法是借位)則CF=1(CY),加法無進(jìn)位(減法無借位)則CF=0(NC)。OF:帶符號(hào)數(shù)的溢出標(biāo)志,;OF=1(OV),否則OF=0(NV)。乘除法指令(1)無符號(hào)乘法指令與有符號(hào)乘法指令(MUL/IMUL)指令格式:MUL/IMULSRC

其中:指令中的操作數(shù)為源操作數(shù),可以是寄存器或存儲(chǔ)器,目的操作數(shù)為隱含操作數(shù),該指令是單操作數(shù)指令。指令功能:目的操作數(shù)(為隱含操作數(shù),該操作數(shù)只能是AL或AX)乘源操作數(shù)(

溫馨提示

  • 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)論