Asm_Study_01.7z

相同的汇编不同的opcode

image.png

EB如果后面接的数大于80,则是往上跳(大于80为负数)
EB如果后面接的数小于80,则是往下跳

JMP

用于执行四种类型的不同跳转
近跳:跳转到当前代码段(CS 寄存器当前指向的段)内的指令,有时称为段内跳转。
短跳:跳转范围限制为距当前 EIP 值 -128 到 +127 的近跳转。
远跳:跨段跳转(保护模式)
任务切换: 跳转到另一个任务中的指令。

image.png

怎么判断两个数的大小呢? ^表示异或
OF^SF==0 左>=右
OF^SF==1 左 <右

判断ZF

JLE JG
JLE/JNG:SF xor OF or ZF =1
JNLE/JG:SF xor OF or ZF =0

不判断ZF

JGE JL

JL/JNGE:SF xor OF =1 (SF!=OF)
JNL/JGE:SF xor OF =0 (SF=OF)

case

case值:不超过0x144 有规律的不连续?
case值:超过0x144有规律的不连续?
case值:值很多且不连续

三种循环跳转

汇编中分别是不同的三种跳转,但是release版本都会优化成do while