C和汇编---while反汇编
生活随笔
收集整理的這篇文章主要介紹了
C和汇编---while反汇编
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
環境:VC++
C程序:
用while計算1到100的值,功能很簡單,讓我們看看反匯編
首先在main函數的入口,看到一條匯編不懂意思
查了資料,知道了
- rep指令:重復stos dword ptr [edi]指令.ECX的值是重復的次數,每次ECX都會減一,到0就不執行了
- stos:將eax中的值拷貝到ES:EDI指向的地址,也就是上面的dword ptr [edi]
- es:附加段寄存器,存放當前執行程序中一個輔助數據段的段地址
我們利用VC++反匯編可以查看一下,當執行了一次rep stos dword ptr [edi]命令后
while的反匯編程序:
執行一個函數,程序會先把ebp的值壓入棧,把esp賦值給ebp
- jg:大于跳轉指令
反匯編實現:
#include "stdio.h"int main() {/*int i=1,sum=0;while(i<=100){sum+=i;i++;}printf("%d\n",sum);*/char *str="sum=%d\n";__asm{mov eax,1mov ebx,0mov ecx,1sum : cmp ecx,100jg endadd ebx,eaxinc eaxinc ecxjmp sumend : push ebxpush strcall printfadd esp,8}return 0;}總結
以上是生活随笔為你收集整理的C和汇编---while反汇编的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 线性表-----队列
- 下一篇: C和汇编-----for循环