版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第4章數(shù)據(jù)傳送、尋址和算術(shù)運(yùn)算關(guān)鍵點(diǎn):數(shù)據(jù)傳送指令加法和減法和數(shù)據(jù)相關(guān)操作符和偽指令間接尋址JMP和LOOP指令數(shù)據(jù)傳送尋址和算術(shù)運(yùn)算第1頁(yè)1.數(shù)據(jù)傳送指令在匯編語(yǔ)言中,能夠(必須)控制任何細(xì)節(jié)!“權(quán)力=責(zé)任”匯編編譯器給予了申明和移動(dòng)數(shù)據(jù)極大自由,它只進(jìn)行極少錯(cuò)誤檢驗(yàn)!操作數(shù)類型馬上操作數(shù)imm存放器操作數(shù)reg內(nèi)存操作數(shù)mem.datavar1byte10h.codemoval,var1;A000010400數(shù)據(jù)傳送尋址和算術(shù)運(yùn)算第2頁(yè)
MOV指令
MOVZX指令
MOVSX指令
LAHF指令
SAHF指令
XCHG指令1.數(shù)據(jù)傳送指令數(shù)據(jù)傳送尋址和算術(shù)運(yùn)算第3頁(yè)MOV指令從源操作數(shù)向目標(biāo)操作數(shù)拷貝數(shù)據(jù) mov
目標(biāo)操作數(shù),源操作數(shù) movreg/mem,reg movreg,mem movmem/reg,imm
兩個(gè)操作數(shù)尺寸必須一致兩個(gè)操作數(shù)不能同時(shí)為內(nèi)存操作數(shù)目標(biāo)操作數(shù)不能是CS、EIP和IP
馬上數(shù)不能直接送段存放器movax,var1movvar2,ax數(shù)據(jù)傳送尋址和算術(shù)運(yùn)算第4頁(yè)拷貝較小值至較大值中MOV指令.data
countWORD1.code
movecx,0movcx,count將16位數(shù)32位數(shù);但僅限于無(wú)符號(hào)數(shù).data
signedValSWORD-1.code
movecx,0movcx,signedVal那么對(duì)于有符號(hào)數(shù)呢?數(shù)據(jù)傳送尋址和算術(shù)運(yùn)算第5頁(yè)MOVZX指令將值零擴(kuò)展movzxr32,r/m8movzxr32,r/m16movzxr16,r/m8僅適用于無(wú)符號(hào)數(shù)目操作數(shù)必須是寄存器movbx,0a69bhmovzxeax,bxmovzxebx,blmovzxcx,bl數(shù)據(jù)傳送尋址和算術(shù)運(yùn)算第6頁(yè)MOVSX指令將值符號(hào)位擴(kuò)展
movsxr32,r/m8
movsxr32,r/m16
movsxr16,r/m8
僅適合用于有符號(hào)數(shù)目標(biāo)操作數(shù)必須是存放器movbx,0a69bhmovsxeax,bxmovsxebx,blmovsxcx,bl數(shù)據(jù)傳送尋址和算術(shù)運(yùn)算第7頁(yè)LAHF指令LAHF(loadstatusflagsintoAH)將EFLAGS存放器低字節(jié)拷貝至AH.datasaveflagsBYTE?.code lahf movsaveflags,ah數(shù)據(jù)傳送尋址和算術(shù)運(yùn)算第8頁(yè)SAHF指令SAHF(storeAHintostatusflags)拷貝AH存放器值至EFLAGS低字節(jié).datasaveflagsBYTE?.code movah,saveflags sahf數(shù)據(jù)傳送尋址和算術(shù)運(yùn)算第9頁(yè)XCHG指令交換兩個(gè)操作數(shù)內(nèi)容
xchgreg,reg
xchgreg,mem
xchgmem,reg操作數(shù)規(guī)則遵照與MOV指令操作數(shù)一樣規(guī)則xchgax,bxxchgah,alxchgvar1,bxxchgeax,ebxmovax,var1xchgax,var2movvar1,ax數(shù)據(jù)傳送尋址和算術(shù)運(yùn)算第10頁(yè)直接偏移操作數(shù)直接偏移操作數(shù)在變量名稱后加上一個(gè)偏移值能夠經(jīng)過(guò)它來(lái)訪問(wèn)沒(méi)有顯式標(biāo)號(hào)內(nèi)存地址.dataarrayBBYTE10h,20h,30h,40h,50h.code moval,arrayB+2 movah,[arrayB+1];不要求一定使用方括號(hào)
movbl,arrayB+5;MASM不對(duì)有效地址進(jìn)行范圍檢驗(yàn)數(shù)據(jù)傳送尋址和算術(shù)運(yùn)算第11頁(yè)2.加法和減法
INC和DEC指令
ADD指令
SUB指令
NEG指令數(shù)據(jù)傳送尋址和算術(shù)運(yùn)算第12頁(yè)
INC和DEC指令從操作數(shù)中加1或減1increg/memdecreg/mem.datamyWordWORD1000h.codeincmyWordmovbx,myWorddecbx不影響CF影響SF、OF、ZF、PF、AF數(shù)據(jù)傳送尋址和算術(shù)運(yùn)算第13頁(yè)
ADD指令和SUB指令將同尺寸源操作數(shù)和目標(biāo)操作數(shù)相加或相減 add目標(biāo)操作數(shù),源操作數(shù)sub目標(biāo)操作數(shù),源操作數(shù)影響CF、SF、OF、ZF、PF、AF數(shù)據(jù)傳送尋址和算術(shù)運(yùn)算第14頁(yè)
NEG指令經(jīng)過(guò)將數(shù)字轉(zhuǎn)換為對(duì)應(yīng)二進(jìn)制補(bǔ)碼而求得其相反數(shù) negreg negmem影響CF、SF、OF、ZF、PF、AF數(shù)據(jù)傳送尋址和算術(shù)運(yùn)算第15頁(yè)綜合例子.data RvalSDWORD? XvalSDWORD26 YvalSDWORD30 ZvalSDWORD40.code moveax,Xval negeax movebx,Yval subeax,Zval addeax,ebx movRval,eaxRval=-Xval+(Yval-Zval)數(shù)據(jù)傳送尋址和算術(shù)運(yùn)算第16頁(yè)算術(shù)運(yùn)算影響標(biāo)志零標(biāo)志ZF和符號(hào)標(biāo)志SF目標(biāo)操作數(shù)被賦以零值時(shí)候,ZF被設(shè)置在運(yùn)算結(jié)果為負(fù)時(shí)候,SF被設(shè)置進(jìn)位標(biāo)志CF(無(wú)符號(hào))假如無(wú)符號(hào)運(yùn)算結(jié)果對(duì)目標(biāo)操作數(shù)而言太大(或太?。┒鵁o(wú)法容納時(shí),CF被設(shè)置INC和DEC指令并不影響CF溢出標(biāo)志OF(有符號(hào))當(dāng)算術(shù)運(yùn)算產(chǎn)生有符號(hào)結(jié)果無(wú)法容納于目標(biāo)操作數(shù)時(shí),OF就被設(shè)置數(shù)據(jù)傳送尋址和算術(shù)運(yùn)算第17頁(yè)3.和數(shù)據(jù)相關(guān)操作符和偽指令
OFFSET偽指令
ALIGN偽指令
PTR偽指令
TYPE偽指令
LENGTHOF偽指令
SIZEOF偽指令
LABEL偽指令數(shù)據(jù)傳送尋址和算術(shù)運(yùn)算第18頁(yè)
OFFSET偽指令返回?cái)?shù)據(jù)標(biāo)號(hào)偏移地址,單位是字節(jié).databValBYTE?wValWORD?dValDWORD?dVal2DWORD?myArrayWORD1,2,3,4.codemovesi,OFFSETbValmovesi,OFFSETwValmovesi,OFFSETdValmovesi,OFFSETdVal2mov
esi,OFFSETmyArray+4數(shù)據(jù)傳送尋址和算術(shù)運(yùn)算第19頁(yè)
ALIGN偽指令將按變量位置按字節(jié)、字、雙字邊界對(duì)齊ALIGN邊界值bValBYTE?;0040000ALIGN2wValWORD?
;0040002bVal2BYTE?
;0040004ALIGN4dValDWORD? ;0040008dVal2DWORD? ;004000C數(shù)據(jù)傳送尋址和算術(shù)運(yùn)算第20頁(yè)
PTR偽指令重載操作數(shù)默認(rèn)尺寸.datamyDoubleDWORD12345678hwordListWORD5678h,1234h.codemovax,myDouble ;錯(cuò)誤movax,WORDPTRmyDoublemovax,WORDPTR[myDouble+2]moveax,DWORDPTRwordList
;較大數(shù)較小數(shù)BYTE,SBYTE,WORD,SWORD,DWORD,SDWORD,FWORD,QWORD,TBYTE數(shù)據(jù)傳送尋址和算術(shù)運(yùn)算第21頁(yè)
TYPE偽指令返回按字節(jié)計(jì)算變量單個(gè)元素大小表示式值TYPEvar11TYPEvar22TYPEvar34TYPEvar48.dataval1BYTE?val2WORD?val3DWORD?val4DWORD?數(shù)據(jù)傳送尋址和算術(shù)運(yùn)算第22頁(yè)
LENGTHOF偽指令計(jì)算數(shù)組中元素?cái)?shù)目.databyte1BYTE10,20,30;lengthofbyte1:3array1WORD30DUP(?),0,0
;lengthofarray1:30+2array2WORD5DUP(3DUP(?))
;lengthofarray2:5*3array3DWORD1,2,3,4;lengthofarray3:4digitStrBYTE“12345678”,0;lengthofdigitStr:9數(shù)據(jù)傳送尋址和算術(shù)運(yùn)算第23頁(yè)
LENGTHOF偽指令.datamyArray1BYTE10,20,30,40,50 BYTE60,70,80,90,100
;lengthofmyArray1:5myArray2BYTE10,20,30,40,50,
60,70,80,90,100
;lengthofmyArray2:10注意“,”只把第一行數(shù)據(jù)作為數(shù)組組成部分?jǐn)?shù)據(jù)傳送尋址和算術(shù)運(yùn)算第24頁(yè)
SIZEOF偽指令返回值等于LENGTHOF和TYPE返回值乘積
intArrayWORD32DUP(0);SIZEOF=64數(shù)據(jù)傳送尋址和算術(shù)運(yùn)算第25頁(yè)
LABEL偽指令允許插入一個(gè)標(biāo)號(hào)并賦予其尺寸屬性而無(wú)需分配任何實(shí)際存放空間常見(jiàn)使用方法就是為數(shù)據(jù)段內(nèi)已存在變量提供一個(gè)別名.dataval16LABELWORDval32DWORD12345678h.codemovax,val16;AX=5678hmovdx,val16+2
;DX=1234hBYTE,WORD,DWORD,QWORD,TBYTE數(shù)據(jù)傳送尋址和算術(shù)運(yùn)算第26頁(yè).dataLongValueLABELDWORDval1WORD5678hval2WORD1234h.codemoveax,LongValue ;EAX=12345678h
LABEL偽指令數(shù)據(jù)傳送尋址和算術(shù)運(yùn)算第27頁(yè)4.間接尋址間接尋址(indirectaddressing)處理數(shù)組惟一可行方法是用存放器作為指針并操縱存放器值;間接操作數(shù)數(shù)組變址操作數(shù)指針數(shù)據(jù)傳送尋址和算術(shù)運(yùn)算第28頁(yè)間接操作數(shù)任何用方括號(hào)括起來(lái)32位通用存放器.dataval1BYTE10h.codemovesi,OFFSETval1moval,[esi]mov[esi],blinc[esi]在保護(hù)模式下,假如有效地址指向程序數(shù)據(jù)段之外區(qū)域,CPU會(huì)產(chǎn)生一個(gè)GPF操作數(shù)大小不明確incBYTEPTR[esi]數(shù)據(jù)傳送尋址和算術(shù)運(yùn)算第29頁(yè)數(shù)組.dataarrayBBYTE10h,20h,30h.codemovesi,OFFSETarrayBmoval,[esi]incesimoval,[esi]incesimoval,[esi].dataarrayDDWORD1000h, h,3000h.codemovesi,OFFSET
arrayDmoveax,[esi]addesi,4addeax,[esi]addesi,4addeax,[esi]數(shù)據(jù)傳送尋址和算術(shù)運(yùn)算第30頁(yè)變址操作數(shù)將常量加到存放器上以產(chǎn)生一個(gè)有效地址,任何32位通用存放器都能夠作為指針存放器.dataarrayBBYTE10h,20h,30h.codemovesi,0moval,[arrayB+esi]constant[reg][constant+reg]數(shù)據(jù)傳送尋址和算術(shù)運(yùn)算第31頁(yè)指針arrayBBYTE10h,20h,30h,40harrayWWORD1000h,h,3000hptrBBYTEarrayBptrWDWORDarrayW;ptrWDWORDOFFSETarrayW數(shù)據(jù)傳送尋址和算術(shù)運(yùn)算第32頁(yè)5.JMP和LOOP指令
JMP指令
LOOP指令
整數(shù)數(shù)組求和
拷貝字符串?dāng)?shù)據(jù)傳送尋址和算術(shù)運(yùn)算第33頁(yè)1.JMP指令造成向代碼段內(nèi)目標(biāo)地址做無(wú)條件轉(zhuǎn)移JMP目標(biāo)標(biāo)號(hào)top:
… … jmptop無(wú)限循環(huán)數(shù)據(jù)傳送尋址和算術(shù)運(yùn)算第34頁(yè)2.LOOP指令提供一個(gè)將程序塊重復(fù)執(zhí)行特定次數(shù)簡(jiǎn)單方法ECX被自動(dòng)用作計(jì)數(shù)器,每次循環(huán)后減1LOOP目標(biāo)標(biāo)號(hào) movax,0 movecx,5L1: incax loopL1注意在循環(huán)開(kāi)始之前不要隨意將ecx初始化為0循環(huán)目標(biāo)地址與當(dāng)前地址只能在相距-128~+127字節(jié)范圍之內(nèi)循環(huán)能夠嵌套,但最好不要多于兩層.datacountdword?.code movecx,100L1: movcount,ecx movecx,20 L2:… loopL1 movecx,count loopL2數(shù)據(jù)傳送尋址和算術(shù)運(yùn)算第35頁(yè)2.LOOP指令LOOP/LOOPWLOOPE/LOOPZECX減1,假如>0設(shè)置零標(biāo)志(ZF),然后跳轉(zhuǎn)到標(biāo)號(hào)處LOOPNE/LOOPNZECX減1
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024居間合同受法律保護(hù)居間合同正式合同范本
- 編劇合同編劇合同終止協(xié)議2024年
- 2024常規(guī)解除勞動(dòng)合同證明書(shū)范本
- 標(biāo)準(zhǔn)版采購(gòu)協(xié)議樣本
- 大學(xué)畢業(yè)生就業(yè)意向協(xié)議書(shū)
- 人才公寓優(yōu)惠政策協(xié)議
- 個(gè)人個(gè)人存單質(zhì)押貸款合同
- 廣告拍攝合同案例
- 企業(yè)合伙協(xié)議合同樣本欣賞
- 企業(yè)勞動(dòng)合同范本匯編
- GB 16809-2008防火窗
- 2018年木地板公司組織架構(gòu)及部門職能
- 《百團(tuán)大戰(zhàn)》歷史課件
- 銀行涉農(nóng)貸款專項(xiàng)統(tǒng)計(jì)制度講解
- DB31-T 540-2022 重點(diǎn)單位消防安全管理要求
- 兒化音變課件
- 國(guó)家開(kāi)放大學(xué)《傳感器與測(cè)試技術(shù)》實(shí)驗(yàn)參考答案
- 工程造價(jià)司法鑒定實(shí)施方案
- 材料成型工藝基礎(chǔ)習(xí)題答案
- 劇本寫作課件
- 計(jì)算方法第三章函數(shù)逼近與快速傅里葉變換課件
評(píng)論
0/150
提交評(píng)論