Skip to content

标志寄存器作用

复制本地路径 | 在线编辑
标志寄存器的作用

-- 分类
ZF, SF, OF, CF

-- 应用
1. test命令的使用
test $0x1,%al  ==>  若ZF=0,说明AL最后一位是1
test %al,%al   ==>  若ZF=1,说明AL为0;若ZF=0且SF=0,说明AL为正数;若ZF=0且SF=1,说明AL为负数
同时由于test指令中OF一定变为0,所以可以随后就用跳转指令了(jle,jge)

2. 条件转移指令
无符号-->ja,jb
有符号-->jg,jl
ja: CF==0 && ZF==0
jg: SF==OF && ZF==0(两数之差为正数且结果没有溢出;两数之差为负数且结果溢出)

Comments