汇编学习笔记

本文详细介绍了CPU中的指令指针(EIP/IP)的作用及其在指令执行过程中的变化,同时深入解析了多种条件转移指令的工作原理及使用场景,包括基于标志位状态和数值比较的转移条件。

EIP  用来存储CPU要读取指令的地址,CPU通过EIP寄存器读取即将要执行的指令。每次CPU执行完相应的汇编指令之后,EIP寄存器的值就会增加。

jmp 分为段间转移和段内转移,段间转移需要提供新的段地址和偏移地址。

ip    instruction pointer,即 段,用来存储将要执行的下一条指令的偏移量

条件转移指令:v(1)根据单个标志位的状态判断转移的指令

指令转移条件说明
JC DESTCF=1有进位/借位
JNC DESTCF=0无进位/借位
JE/JZ DESTZF=1相等/等于零
JNE/JNZ DESTZF=0不相等/不等于零
JS DESTSF=1是负数
JNS DESTSF=0是正数
JO DESTOF=1有溢出
JNO DESTOF=0无溢出
JP/JPE DESTPF=1有偶数个“1”
JNP/JPO DESTPF=0有奇数个“1”
v(2)根据两个有符号数的比较结果判断转移的指令

 

指令转移条件含义英文表述
  
JG/JNLE DESTSF=OF AND ZF=0有符号数A>BJMP greater (not less or equal)
JGE/JNL DESTSF=OF OR ZF=1有符号数A≥BJMP greater or equal (not less)
JL/JNGE DESTSF≠OF AND ZF=0有符号数A<BJMP less (not greater or equal)
  
JLE/JNG DESTSF≠OF OR ZF=1有符号数A≤BJMP less or equal (not greater)

v(3)根据两个无符号数的比较结果判断转移的指令 v

指令转移条件含义英文表述
  
JA/JNBE DESTCF=0 AND ZF=0无符号数A>BJMP above (not below or equal)
JAE/JNB DESTCF=0无符号数A≥BJMP above or equal (not below )
JB/JNAE DESTCF=1
  
无符号数A<BJMP blow (not above or equal)
  
JBE/JNA DESTCF=1 OR ZF=1无符号数A≤BJMP blow or equal (not above)
  

转载于:https://www.cnblogs.com/ur10ser/p/7872398.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值