随笔分类 - 汇编
摘要:1.call 这个命令是访问子程序的一个汇编基本指令。也许你说,这个我早就知道了!别急请继续看完。 call真正的意义是什么呢?我们可以这样来理解:1.向堆栈中压入下一行程序的地址;2.JMP到call的子程序地址处。例如: 00401029 . E8 DA240A00 call 004A3508
阅读全文
摘要:From Codes to Executables 编译 gcc file.c-o exe_file –m32生成可执行文件 objdump –d –M intel file //-d 反汇编 这两条必备 函数的返回结果放在eax中,相当于return 0; 804841f: 68 c0 84 04
阅读全文
摘要:CALL指令的步骤:首先是将返回地址(也就是call指令要执行时EIP的值)压入栈顶,然后是将程序跳转到当前调用的方法的起始地址。执行push和jump指令。 RET指令则是将栈顶的返回地址弹出到EIP,然后按照EIP此时指示的指令地址继续执行程序。 JZ跳转 ZF=1,运算结果为0 跳转 JNZ跳
阅读全文
摘要:ZF 所有的对操作数进行算术和逻辑运算的指令,都会根据运算结果修改ZF标志。第一点:大多数情况下,运算结果对ZF的修改,由结果是否为0决定。若运算结果为0,则ZF=1;若运算结果非0,则ZF=0.举些例子吧:加法指令,比如ADD, ADC, INC,等减法指令,比如SUB, SBB, CMP, DE
阅读全文