跳转指令
来源:互联网 发布:哈佛大学学术地位知乎 编辑:程序博客网 时间:2024/05/23 12:01
0x01 JMP指令
JMP ——-> 修改EIP
mov jmp,寄存器/立即数 简写为 jmp 寄存器/立即数
0x02 CALl指令(调用)
push 下一行地址 修改eip
pop eip
call 指令 —–> 将下条指令地址压入栈中(esp - 4),修改eip
ret 指令——> pop eip(esp + 4)
0x03 DEBUG中快捷键
F2 —– 下断点
F3 —– 载入程序
F7 —–
F8 —– 单步执行
堆栈平衡 :函数调用前后,栈顶指针 与栈底指针相同
外平栈 :谁调用谁平衡
0x04 CMP 指令
指令格式:CMP R/M ,R/M/IMM
用来比较两个数,实际上相当于sub指令,但是相减的结构并不保存到第一个操作数中。
只是根据相减的结果来改变零标志,当两个操作数相等时,零标志位置1
mov eax,100 mov ecx,100 cmp eax,ecx cmp ax,word ptr ds:[edx]
0x05 TEST 指令
两个数值进行与操作,结果不保存,但是会改变相应标志位
用于确定某寄存器是否为零
1、JE /JZ 结果为零则跳转(相等时跳转) ZF = 1
0x06 函数
计算机的函数,是一个固定的一个程序段, 或称为一个子程序。它可以实现固定功能同时,有一个入口和一个出口,所谓入后,就是所带的各个参数,通过入口,将函数的参数代入子程序,供计算机处理,所谓出口,就是指函数的计算结果,也称返回值,在计算机求得之后,由此口待会给调用它的程序。
PUSH EBP 提升堆栈,为函数执行提供空间MOV EBP,ESP SUB ESP,40 PUSH EBP 保留现场:函数执行时会用到一些寄存器但这些寄存器中的值可能会被程序用到,所以先存储到内存中PUSH ESI PUSH EDI LEA EDI,DWORD PTR SS:[EBP-40] 向分配的空间填充数据MOV ECX,10 MOV EAX,CCCCCCCC REP STOS DWORD PTR SS:[EDI] MOV EAX,DWORD PTR SS:[EBP+8] 函数的功能MOV EAX,DWORD PTR SS:[EBP+C] POP EDI 恢复现场:将之前保留的寄存器的值恢复POP ESI POP EBX MOV ESP,EBP 降低堆栈POP EBP 恢复栈底RETN 函数执行完毕,返回到调用出
0 0
- 跳转指令
- 跳转指令
- 跳转指令
- 跳转指令
- 跳转指令
- 跳转指令
- 跳转指令
- 跳转指令
- 跳转指令
- ARM 指令集>>跳转指令
- 逻辑运算和指令跳转
- B, BL 跳转指令
- 汇编跳转指令
- arm跳转指令
- ARM的跳转指令
- ARM的跳转指令
- 汇编跳转指令【备查】
- 条件跳转指令 383
- 使用Jenkins生成 二维码
- Windows下mysql的一些问题
- C语言邻接矩阵的实现
- 解决GitHub中灰色文件夹问题
- 时间飞逝,转眼已经快两年没更新博客了!
- 跳转指令
- 欢迎使用CSDN-markdown编辑器
- JavaScript DOM
- RecyclerView实现侧滑删除和拖拽排序
- C# 斐波那契数列
- 最小割树Gomory-Hu tree
- 剑指offer-面试题28-字符串的排列
- 谈浮躁
- 移动端Touch事件与H5-Canvas像素点检测实现刮刮乐