汇编笔记:jcc:eip及jcc相关指令

@[TOC]汇编笔记:jcc:修改eip

eip寄存器

eip寄存器内存储一个地址,这个地址决定cpu下一步要执行的代码

断点

断点功能:让cpu逐条执行指令,便于调试
修改eip内地址的指令:jmp

jmp指令

jmp 地址

注:①jmp与跳转无关,jmp只修改eip的值(存入jmp的地址),cpu根据eip的值进行跳转
②jmp指令不对寄存器和堆栈产生任何影响
③jmp指令通常不需要返回值

call指令

call 地址

注: ①call与跳转无关,call修改eip的值(存入jmp的地址)=,cpu根据eip的值进行跳转
②区别于jmp指令,call指令会向堆栈内压(push)入一个call指令下方的地址(返回地址)
③通常需要ret带回返回值(回到返回地址

ret指令

retn

①与call指令成对出现,回到call指令的返回地址
②将堆栈中栈顶的值弹到eip中(相当于pop eip)

jcc相关指令

cmp指令

格式

cmp 内存/寄存器,内存/寄存器/立即数

*前后不能同时为内存
解释:cmp区别于sub指令,cmp指令只改变标志寄存器,改变结果与sub指令相同
常见用法:①比较两个数是否相等(通过观察z位),z位为1则两数相等
②比较两个数的大小(观察s位)
:cmp指令前后的内存或寄存器宽度要一致

test指令

格式

test 内存/寄存器,内存/寄存器/立即数

解释:一定程度上与cmp指令类似,将前后两个数值进行与(and)操作,且只改变标志寄存器
常见用法:判断某个寄存器内是否为空(观察z位)
如果寄存器内的某些位为1,则运算结果不为0

movs指令

格式

MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI] (MOVSB)
MOVS WORD PTR ES:[EDI],BYTE PTR DS:[ESI] (MOVSW)
MOVS DWORD PTR ES:[EDI],BYTE PTR DS:[ESI] (MOVSD)

解释
将[ESI]所指向的内存中的数据传送到[EDI]所指向的内存中,并将堆栈整体向上或向下移动(取决于d位,1加0减)(dword 4 word 2 byte 1)

stos指令

格式

stos byte ptr es:[edi] (stosb)
stos word ptr es:[edi] (stosw)
stos dword ptr es:[edi](stosd)

解释:将AL/AX/EAX中的值存储到【EDI】所指向的内存单元中,并将堆栈整体向上或向下移动(取决于d位,1减0加)(dword 4 word 2 byte 1)

rep指令

格式

rep movsd
rep stosd

解释:按计数寄存器(ECX)中指定的次数重复执行字符串指令

JCC

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值