版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、8大通用寄存器:EAX 累加器 常用、放數(shù)據(jù) EBX 基址寄存器 常用、放地址ECX 計數(shù)器 少用、多用于循環(huán)操作、控制循環(huán)次數(shù)egloopEDX 數(shù)據(jù)寄存器 常用!放數(shù)據(jù)(要輸出的字符串地址放在DX、字符的ASCII碼放在DL里ESI 源變址寄存器 放源操作數(shù)(數(shù)組或字符串)的地址 即指向他EDI 目的變址寄存器 放目的操作數(shù)(數(shù)組/字符串)的地址 即指向他EBP 基址指針寄存器 一般不用,指向堆棧區(qū)域的數(shù)據(jù),主要用于在子程序中訪問通過堆棧傳遞的參數(shù)和局部變量ESP 堆棧指針寄存器 指向棧頂?shù)臄?shù)據(jù),在涉及堆棧操作的指令中自加自減,一般不能自主變化。6大段寄存器:CS 代碼段,存放程序中的指令
2、代碼SS 堆棧段,指明程序使用的堆棧區(qū)域DS 數(shù)據(jù)段,存放當(dāng)前運行程序所用的數(shù)據(jù)ES 附加數(shù)據(jù)段 特別的:專為處理數(shù)據(jù)串設(shè)計的串操作指令必須使用附加數(shù)據(jù)段作為其目的操作數(shù)的存放區(qū)域。FS 附加數(shù)據(jù)段GS 附加數(shù)據(jù)段另外兩個常用寄存器:FLAGS 狀態(tài)寄存器:CF(進位) ZF(零) OF(溢出) PF(奇偶)SF(符號)AF(調(diào)整 一般不用) (DF IF)IP 16位(EIP 32位) 指令指針寄存器,專門用來存放將要 執(zhí)行的指令在主存中的位置。特別的EIP有自動增量功能。一般不能改,不可中斷。但可以調(diào)整其指令執(zhí)行順序?qū)崿F(xiàn)循環(huán)MASM操作符:對常量、變量、地址等進行操作的關(guān)鍵字。Eg:+ -
3、 * / offset(取得變量的偏移地址)程序模板:;example.asm in DOS.model small.486.stack(可以沒有).data(可以沒有);數(shù)據(jù)定義 eg:msg db hello,Sarah!.code;定義代碼段.startup;程序執(zhí)行開始,同時設(shè)置數(shù)據(jù)段寄存器DS指向程序的數(shù)據(jù)段;主程序eg:mov dx,offset msg 等等.exit;程序執(zhí)行結(jié)束,返回DOS;子程序(可以沒有).end;匯編結(jié)束調(diào)用DOS操作系統(tǒng)功能:Eg:mov ah,9;實現(xiàn)輸出一個字符串(DX存放其字符串地址)Int 21hEg:mov ah,2;實現(xiàn)輸出一個字符(DL存
4、放其ASCII碼)Int 21hEg:mov ah,0ah;實現(xiàn)輸入一個字符串(DX指向其首地址=offset msg +2)Int 21hEg:mov ah,1;實現(xiàn)輸出一個字符串(AL存放輸入字符的ASCII碼)Int 21h;調(diào)用指令,不可少!編譯連接:ML eg101.asm運行:eg101.asm常用的地址和類型操作符:屬性操作符作用地址將括起的表達式作為存儲器的地址指針$返回當(dāng)前偏移地址offset返回變量名所在段的偏移地址類型(DB DW DD DF DQ DT) 1 2類型名 PTR 變量名將變量名按照指定類型使用Type 變量名返回一個字量數(shù)值,表明變量名類型Lengthof
5、 變量名返回整個變量的數(shù)據(jù)項數(shù)Sizeof 變量名返回整個變量占用的字節(jié)數(shù)Eg:Mov bx,wvar2Mov edx,$Mov bx,offset xMov ax,word ptr bvarMov bx , type bvarmov si, lengthof arrayMov di , sizeof array數(shù)據(jù)尋址方式如何訪問操作數(shù)1立即數(shù)尋址:立即數(shù):已經(jīng)隨指令代碼進入處理器的數(shù)據(jù),可直接使用。只用于源操作數(shù);2寄存器尋址:數(shù)據(jù)已經(jīng)事先保存在處理器的寄存器里。寄存器操作數(shù)(使用寄存器名表示他保存的數(shù)據(jù)。)可同時或單獨用于目的/源操作數(shù)。要保持前后類型一致(同樣長度)。3存儲器尋址:數(shù)據(jù)
6、還在主存中,需要通過段基地址:偏移地址默認:一般數(shù)據(jù)在DS段寄存器;(有效地址EA偏移地址 下同)讀取指令在CS段寄存器;(EIP)堆棧操作在SS段寄存器;(ESP)EBP、ESP為基地址的數(shù)據(jù)訪問在SS段寄存器;(有效地址EA)串指令源操作數(shù)在DS段寄存器;(ESI)串指令的目的操作數(shù)在ES段寄存器;(EDI)段基地址由默認或指定的段寄存器指明;所以指令只需說明偏移地址。存儲器操作數(shù)尋址使用的偏移地址常被稱為有效地址(EA)偏移地址 32位有效地址=基址寄存器+(變址寄存器*比例)+位移量 -32位基址寄存器均可;變址寄存器不能是ESP;比例=1/2/4/8字節(jié);位移量是8/32位 16位有
7、效地址=基址寄存器+變址寄存器+位移量基址寄存器只能是BX/BP;變址寄存器只能是SI/DI;位移量是8/16位有符號方式分類如表:直接尋址Mov ax,count ;count是變量寄存器間接尋址Mov al,bx ;bx中放的是地址,bx代表地址指向的數(shù)據(jù)(類型不確定),所以必須有明確類型的操作數(shù)eg:al;相當(dāng)于:MOV AL , DS:2000H寄存器相對尋址MOV ESI , EBX+4MOV EAX , COUNTESI ;變量count的偏移地址+ESI變址尋址MOV EDI , EBX+ESIMOV EAX , EBX+EDX+80H帶比例的變址尋址MOV EDI , EBX*
8、4+ESIMOV EAX , EBX+EDX*8-80H指令助記符 reg , imm/reg/mem指令助記符 mem , imm/reg指令匯總表:大類型小類型指令助記符注意/要求舉例數(shù)據(jù)傳送類通用傳送MOV1. 雙操作數(shù)指令的目的操作數(shù)與源操作數(shù)類型一致2. 類型一致的兩個操作數(shù)之一必須有明確的類型3. 不允許兩個操作數(shù)都是主存單元4. 注意對專用寄存器進行操作的指令Eg:mov esi,edxMov byte ptr ebx,255Mov ax , dataMov ds,axPs:立即數(shù)不能直接傳送給段寄存器XCHG交換源操作數(shù)和目的操作數(shù)的內(nèi)容。XCHG reg , reg/memX
9、chg mem/reg , reg1. 不能是立即數(shù)2. 不支持存儲器與存儲器之間的交換Xchg esi ,ediXchg esi ,edi堆棧操作PUSH堆棧就像一條水平管道(左小右大)中的一段垂直的下方的走不通的岔路(上大下?。?。ESP指向棧頂(棧最外面的元素,地址最小的元素)。所以進棧ESP-;出棧ESP+;Push是進棧操作。先將ESP減小為當(dāng)前棧頂,再將數(shù)據(jù)傳送到當(dāng)前棧頂。=sub + mov堆棧的應(yīng)用:1. 可用于臨時存放數(shù)據(jù),以便隨時恢復(fù);2. 利用堆棧實現(xiàn)主子程序間傳遞參數(shù);3. 還常用于子程序的寄存器保護和恢復(fù)。POPPop是出棧操作。先將棧頂數(shù)據(jù)傳送到寄存器/存儲單元中,再
10、將ESP+。 =mov + add地址傳送LEA獲取有效地址并傳送至16/32位通用寄存器中。LEA r16/r32,mem效果等同于offset;Lea在指令執(zhí)行時獲取偏移地址;Lea ESI ,dvarPs:區(qū)別:Offset在匯編階段獲取偏移地址。其他標(biāo)志傳送指令:CLC STC等輸入輸出指令:IN OUT INS OUTS REP算術(shù)運算類狀態(tài)標(biāo)志CF 針對無符號整數(shù)運算。有進位/借位=1OF 針對有符號整數(shù)運算。有溢出=1ZF 整數(shù)運算。結(jié)果為零=1SF 針對有符號整數(shù)運算。結(jié)果為正數(shù)=1PF 反映低8位1的個數(shù)為偶數(shù)=1AF 針對加減運算。低4位有進位=1加法指令A(yù)DD影響全部標(biāo)志
11、位。ADD A,B 結(jié)果送到AA不是立即數(shù)ADD AX , 3FFFHADC影響全部標(biāo)志位。與ADD相結(jié)合實現(xiàn)多精度的加法。A+B+CF = AA不是立即數(shù)INC不影響標(biāo)志位對操作數(shù)加1再將結(jié)果送回原處INC reg/mem減法指令SUB影響全部標(biāo)志位。不帶進位的減法:A-B=ASBB影響全部標(biāo)志位帶進位的減法: A-B-CF=ADEC不影響標(biāo)志位自減。A-NEG影響全部標(biāo)志位求補指令。0-A=ACMP影響全部標(biāo)志位只根據(jù)結(jié)果影響標(biāo)志位,但操作數(shù)值不變主要影響SFCmp ax,dx前更大:SF=1;后更大:SF=0;elseZF=1乘法和除法指令隱含使用eax、edxMUL IMUL 無符號乘
12、法/有符號乘法Mul reg/mem :AX=AL*r8/m8DX.AX=AX*r16/m16EDX.EAX=EAX*r32/m32DIV reg/memIDIV reg/mem無符號除法/有符號除法AX除r8/m8AH是余數(shù),AL是商DX.AX除r16/m16DX是余數(shù),AX是商EDX.DAX除r32/m32EDX是余數(shù),EAX是商其他運算指令MOVZX MOVSX 零位擴展,符號擴展位數(shù)加長,大小不變CBW CWD CWDE CDQ符號擴展指令位操作類(針對二進制位進行操作,實現(xiàn)位控制)邏輯運算指令不為0即為真AND不為0即為真。按位與。返回結(jié)果。設(shè)置標(biāo)志CF=OF=0根據(jù)結(jié)果影響SF.Z
13、F.PFOR按位或,返回結(jié)果。設(shè)置標(biāo)志CF=OF=0根據(jù)結(jié)果影響SF.ZF.PFNOT按位邏輯非。返回結(jié)果。不影響標(biāo)志位。XOR按位邏輯異或。返回結(jié)果。異或:相同為1,不同為0.設(shè)置標(biāo)志CF=OF=0根據(jù)結(jié)果影響SF.ZF.PFTEXT按位與,不返回結(jié)果。原操作數(shù)不變。設(shè)置標(biāo)志CF=OF=0根據(jù)結(jié)果影響SF.ZF.PF移位指令SHL=SAL邏輯/算術(shù)左移。最低位補0,最高位進CF。邏輯左移1位=無符號數(shù)*2SHR邏輯右移。最高位補0,最低位進CF。邏輯右移1位=無符號數(shù)/2SAR算術(shù)右移。最高位不變,最低位進CF。循環(huán)移位指令ROL不帶進位循環(huán)左移最高位進入CF和最低位。按指令功能設(shè)置進位標(biāo)志
14、CF,但不影響SF ZF PF標(biāo)志ROR不帶進位循環(huán)右移最低位進入CF和最高位RCL帶進位循環(huán)左移最高位進入CF,原CF中的數(shù)進入最低位。RCR帶進位循環(huán)右移最低進入CF,原CF中的數(shù)進入最高位。程序結(jié)構(gòu):順序按書寫的前后順序執(zhí)行每條指令。分支首先利用CMP、TEXT、加減運算、邏輯運算等影響狀態(tài)標(biāo)志的指令形成條件,然后利用條件轉(zhuǎn)移指令判斷由標(biāo)志表達的條件,并根據(jù)狀態(tài)控制程序轉(zhuǎn)移到不同的程序段。類型方法指令用法無條件轉(zhuǎn)移指令改變EIP或者包括CSJMP段內(nèi)尋址、相對尋址:JMP LABLE(僅改EIP)段內(nèi)轉(zhuǎn)移、間接尋址: JMP r32/r16/m32/m16段間轉(zhuǎn)移、直接尋址:JMP LABAL(改EIP和CS)段間轉(zhuǎn)移、間接尋址:JMP m48/m32條件轉(zhuǎn)移指令指定條件Jcc LABAL Jcc 具體見p19若滿足Jcc 跳去labal處執(zhí)行不滿足則順序執(zhí)行下一條Zero.Equal.Not.Sign(負).P(偶).Below.Ablove.Less.Greater.CF.OF 單/雙/多分支結(jié)構(gòu)單分支結(jié)構(gòu)需注意采用正確的條件轉(zhuǎn)移指令。雙分支結(jié)構(gòu)滿足執(zhí)行分支1;不滿足執(zhí)行分支2.所以一定要有JMP指令。多分支結(jié)構(gòu):有效利用單分支
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年廈門房屋租賃合同范文(二篇)
- 2024年壓瘡風(fēng)險評估與報告制度評估(二篇)
- 2024年安全生產(chǎn)月工作計劃范文(二篇)
- 2024年合伙合同參考模板(四篇)
- 2024年小學(xué)實習(xí)班主任工作計劃范本(二篇)
- 2024年小學(xué)工作計劃范文(三篇)
- 2024年學(xué)校財產(chǎn)物資管理制度范例(六篇)
- 2024年土地轉(zhuǎn)包合同參考模板(二篇)
- 2024年小學(xué)教研工作計劃樣本(五篇)
- 2024年客服工作總結(jié)參考(四篇)
- 小學(xué)四年級牛津4AM4U2
- SB/T 10851-2012會議中心運營服務(wù)規(guī)范
- GB/T 20948-2007農(nóng)林拖拉機后視鏡技術(shù)要求
- 綜合驗光儀教學(xué)
- 貧血的診療與護理考核試題及答案
- 前置胎盤詳解課件
- 浙教版勞動五年級上冊項目三 任務(wù)一《探索生活中的LED燈》課件
- 南京市小學(xué)一年級語文上學(xué)期期中試卷
- joyoj集控站防誤系統(tǒng)介紹課件
- 食安員抽考必備知識考試題庫(含答案)
- CIP清洗技術(shù)課件
評論
0/150
提交評論