最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用匯編語言實現(xiàn)if else 循環(huán)函數(shù)調(diào)用的具體方法

 更新時間:2020年01月19日 14:26:02   作者:liaomin416100569  
這篇文章主要介紹了使用匯編語言實現(xiàn)if else 循環(huán)函數(shù)調(diào)用的具體方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

需要使用匯編來演示如下代碼 需要下載ollydbg匯編調(diào)試器 點擊File-Open隨意打開一個exe文件 我這里隨便找到c:/windows/explorer.exe文件


這里EIP的值表示下一次運行需要執(zhí)行的代碼位置


雙擊 EIP紅色地址 左邊代碼會自動跳轉(zhuǎn)到對應(yīng)的代碼行 有了以下環(huán)節(jié) 接下來添加代碼


如果替換的代碼 占用的字節(jié)數(shù) 小于原始的代碼數(shù) 會自動補充 nop空指令

一。實現(xiàn) if else

MOV EAX,1 表示將1立即數(shù) 設(shè)置給EAX寄存器

CMP EAX,1 比較EAX的值和1是否相等 Z標(biāo)志位(如果減法運算 結(jié)果為0 該標(biāo)志被置為1 不為0 標(biāo)志位被置為0) 這里EAX=1 Z標(biāo)志=1

JE 0101A572 表示有條件跳轉(zhuǎn) 當(dāng)Z標(biāo)志=1(也就是EAX=1) 自動跳轉(zhuǎn)到后面指定的0101A572 地址 就會執(zhí)行 move EBX,1

JNE 0101A578 表示有條件跳轉(zhuǎn) 當(dāng)Z標(biāo)志=0(也就是EAX!=1) 自動跳轉(zhuǎn)到后面指定的0101A578 地址 就會執(zhí)行 move ECX,1


如果需要調(diào)試 參考如下圖


二。實現(xiàn) 循環(huán)

MOV ECX,4 表示將4立即數(shù) 設(shè)置給ECX寄存器

DEC ECX 將ECX的值 減去1

TEST ECX,ECX TEST指令是將ECX和ECX進去邏輯與 操作 1001&1001一定是自己1001 只有當(dāng)ECX等于0時 0&0就是0 這個test指令 會修改Z標(biāo)志

位 如果ECX等0 那么邏輯與 Z標(biāo)志位就是1 ECX不等于0 Z標(biāo)志位等于0 所以TEST ECX,ECX可以判斷ECX是否為0

JNE 0101A564 表示有條件跳轉(zhuǎn) 當(dāng)ECX!=0時 z標(biāo)志位=0 跳轉(zhuǎn)到0101A564這個位置 繼續(xù)遞減 一直循環(huán)到 ECX=0時 此時z標(biāo)志位=1

不執(zhí)行跳轉(zhuǎn)循環(huán)結(jié)束


也可以使用 LOOP 跳轉(zhuǎn)的位置來進行循環(huán) 該指令會自動將ECX的值 遞減1 不需要單獨控制ECX遞減 當(dāng)ECX遞減到0時自動退出循環(huán)

loop


二。實現(xiàn) 函數(shù)調(diào)用

這里需要明白一下函數(shù)調(diào)用的實際過程 是先將 參數(shù)壓入棧中 在c語言中 stdcall 先壓入函數(shù)右邊的參數(shù) 這里假設(shè)有兩個參數(shù)10和20

棧的原理是 先入后出 壓入兩個參數(shù)后 call指令會自動壓入 函數(shù)調(diào)用完成后 下一個執(zhí)行指令的位置

PUSH 10 壓入第一個參數(shù)

PUSH 20 壓入第二個參數(shù)

CALL 0101A56D 調(diào)用函數(shù) 函數(shù)的入口地址是0101A56D 可以查看如下圖片中右下角堆棧的部分 分別壓入了 10,20 以及call后面的一句代碼的地址

0101A568 也就是call完成了執(zhí)行0101A568 這里的代碼

call 0101A56D 會自動跳轉(zhuǎn)到0101A56D 代碼的位置 這里取出棧中(ESP指向棧頂 棧頂是call完成后返回的地址) ESP棧頂+4(第二個參數(shù)) ESP棧頂+8(第一個參數(shù))

retn 8 表示 函數(shù)返回 返回 就會自動跳轉(zhuǎn)到棧頂指向的地址的代碼位置0101A568 就會執(zhí)行 (8這個數(shù) 表示自動將堆棧中兩個參數(shù)的值出棧 拋棄)

jmp 0101A57A


以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 匯編 JMP使用詳解

    匯編 JMP使用詳解

    這篇文章主要介紹了匯編 JMP使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • 匯編基礎(chǔ)教程段的定義應(yīng)用詳解

    匯編基礎(chǔ)教程段的定義應(yīng)用詳解

    這篇文章主要為大家介紹了匯編基礎(chǔ)教程段的基本定義與應(yīng)用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2021-11-11
  • 匯編語言XOR指令:對兩個操作數(shù)進行邏輯(按位)異或操作(推薦)

    匯編語言XOR指令:對兩個操作數(shù)進行邏輯(按位)異或操作(推薦)

    匯編語言(assembly language)是一種用于電子計算機、微處理器、微控制器或其他可編程器件的低級語言,亦稱為符號語言。這篇文章主要介紹了匯編語言XOR指令:對兩個操作數(shù)進行邏輯(按位)異或操作,需要的朋友可以參考下
    2020-01-01
  • 匯編語言入門教程(這一篇足矣)

    匯編語言入門教程(這一篇足矣)

    匯編語言是一種最低級、最古老、不具有移植性的編程語言,它能夠直接訪問計算機硬件,所以執(zhí)行效率極高,占用資源極少,想學(xué)習(xí)匯編語言的朋友不妨閱讀下本教程
    2020-01-01
  • 匯編實現(xiàn)直接插入排序的方法示例

    匯編實現(xiàn)直接插入排序的方法示例

    這篇文章主要介紹了匯編實現(xiàn)直接插入排序的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • 匯編語言系列之匯編實現(xiàn)各種碼制的轉(zhuǎn)換(思路詳解)

    匯編語言系列之匯編實現(xiàn)各種碼制的轉(zhuǎn)換(思路詳解)

    本文列出了十六進制轉(zhuǎn)二進制、十進制、ASCII碼及大小寫字母轉(zhuǎn)換的代碼,對匯編語言系列之實現(xiàn)各種碼制的轉(zhuǎn)換問題感興趣的朋友跟隨小編一起看看吧
    2021-11-11
  • 詳解匯編語言各種指令的解釋與用法

    詳解匯編語言各種指令的解釋與用法

    這篇文章主要介紹了匯編語言各種指令的解釋與用法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • 匯編語言功能用循環(huán)累加實現(xiàn)乘法

    匯編語言功能用循環(huán)累加實現(xiàn)乘法

    這篇文章主要為大家介紹了匯編語言實現(xiàn)功能,使用用循環(huán)累加來實現(xiàn)乘法,文中通過幾個問題實例分析,來為大家進行詳細(xì)講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-11-11
  • 圖文詳解通俗易懂的匯編語言寄存器

    圖文詳解通俗易懂的匯編語言寄存器

    這篇文章主要為大家介紹了寄存器的內(nèi)容詳解,文中通過精美清晰的圖文方式讓你一看就通俗易懂,有需要的朋友可以借鑒參考學(xué)習(xí)下,希望能夠有所幫助
    2021-11-11
  • 匯編語言顯示功能實現(xiàn)教程詳解

    匯編語言顯示功能實現(xiàn)教程詳解

    這篇文章主要為大家介紹了匯編語言顯示功能的實現(xiàn)過程,文中通過問題實例分析來為大家進行詳細(xì)的描述講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-11-11

最新評論

镇远县| 望城县| 垫江县| 淮南市| 台江县| 涟源市| 中牟县| 甘孜县| 察雅县| 都匀市| 靖宇县| 滨海县| 建瓯市| 遂昌县| 白银市| 胶州市| 巴彦县| 抚州市| 积石山| 禹城市| 长丰县| 建瓯市| 泗水县| 靖边县| 清水河县| 墨竹工卡县| 淮滨县| 东阳市| 贵州省| 临清市| 惠安县| 化州市| 太保市| 图片| 清镇市| 中方县| 绍兴县| 兰州市| 巴林右旗| 唐海县| 徐汇区|