|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
刚接触汇编对跳转很烦 尤其是是对JCC跳转特别烦 因为好麻烦,所以总结下JCC跳转的规律,记录下心得
JCC有条件跳转根据自己的总结可以分为7类
1·计数判断跳转
2·等于判断跳转
3·CMP比较跳转
4·溢出判断跳转
5·进位判断跳转
6·奇偶校验判断跳转
7·正负数判断跳转
根据自己的实践心得 等于判断跳转 和 CMP比较判断跳转 最适合小白设计分支循环结构的
在JCC跳转指令中经常有一条机器指令2种助记符的的描述 在CMP比较跳转和 奇偶校验判断跳转中较为常见
在CMP比较跳转中,总结有符号数比较可以分为L系和G系 无符号数可以分为A系和B系
二者的对同一条机器指令的助记符表示相反
如有符号数比较中:
JL rel8 小于(SF<>OF)时短跳转
JNGE rel8 不大于或等于(SF<>OF)时跳转
JG rel5 大于 (ZF=0且SF=OF)时短跳转
JNLE rel8 不小于或等于(ZF=0且 SF=OF)时跳转
在对7种判断跳转中可以结合FLAGS寄存器助记 如进位判断跳转:
JC rel8 进位(CF=1)时段短跳转
JNC rel8 无进位(CF=0)时段跳转
CF为进位标志当运算结果产生进位(加法产生进位 减法产生借位)的时候 CF标志位置为1 JC JNC可以用JMP CF来进行助记
同样
JO JNO 是描述是否可以通过OF位进行溢出判断的跳转指令
JP JNP 是描述是否可以通过PF位进行奇偶校验判断的跳转指令
JS JNS 是描述是否可以通过SF位进行正负数判断的跳转指令
JZ rel8 为零(ZF=1)时跳转
JNZ rel8不为零(ZF=0)时跳转
可以通过 JMP ZERO (0则跳转)来助记
在JCC指令中2个字母跳转 JB JC JE JO JP JS JZ 都是表示置1的时候进行跳转,只有JA(CF=0且ZF=0)高于时跳转(无符号数中使用)是在置0的时候跳转
注意:在使用奇偶校验的时候要注意到PF位的检测机制是对16位寄存器中的AH和AL段进行检测,当AL段中存在1的时候,有0或偶数个1则PF=1
当有奇数个1的时候 PF=0 ,当AL段中全部为0的时候 对AH段进行检测 同样是检测1的个数,当AX段中全部为0的时候 则PF校验位不再进行高位校验
所以PF位的校验与数值本身是否为奇数偶数并不是一一对应的,而是和数值中AX中1的个数有关
|
|