ieiqp 发表于 2009-12-10 20:00

[转载] for在汇编里的表示方法

jg 大于
jge 大于或者等于
for(i=0;i<9;i++);
{
printf("%d",i);
}
分析如果我们用汇编来模仿
那么首先要分配一个空间放这个i的值吧
前面的代码我就不写了
那么 就用 【ebp-4]来装这个值吧
mov ,0
接着我们要比较一下吧,看看他是否大于9
cmp ,9
如果大于或者等于那么我们就跳转
用的当然是jge
jeg short xxxx
如果不等于啊
那么我们要进行打印工作啊
push
push “%d”
call xxxx //打印的地址
打印完后我们怎么办啊
当然是接着循环啊
所以要用到jmp yyyy 跳回去运行啊
给加一
mov eax,
add eax,1
mov ,eax
接着当然是比较啊
cmp ,9
就这么转吧
就给模拟的代码写一下啊
mov ,0
jmp abcde
mov eax,   //defddd
add eax,1
mov ,eax
cmp ,9 //abcde
jge yyyyy
push
push “%d”
call xxxx
jmp defddd

最硬的石头 发表于 2009-12-11 00:52

其实直接在IDA里看更方便,更容易理解

#include <iostream>
using namespace std;
int main (void)
{
int i;
int sum = 0;
for(i = 0; i <= 100; i++)
{
sum = sum + 1;
}
return 0;
}


对于for循环式初始化后先跳过去进行条件判断的,如果不满足条件就退出循环,满足条件的话就进行循环体内的操作,完成一次循环体后就返回进行控制语句操作。

reckless 发表于 2009-12-11 10:29

很好,学习了!

yzhwwk 发表于 2009-12-11 11:03

谢谢 楼主 学习了 不错

abner 发表于 2009-12-11 11:21

其实我也是想说 用 INC   可能会比较省事~~~
页: [1]
查看完整版本: [转载] for在汇编里的表示方法