cmp 指令
功能相当于减法指令 只是不保存结果
不过cmp执行后会影响标志位 其它指令 通过识别标志位 来得知比较的结果
CPU在执行cmp指令时 像add sub指令一样 也包含两种含义 (有符号 无符号)
无符号的 cmp
指令 cmp ax,bx 执行后
即(ax - bx 执行)
1 zf=1 ax 等于 bx 结果为0
2 zf=0 ax 不等于 bx 结果不为0
3 cf=1 ax 小于 bx 有借位
4 cf=0 ax 大于等于 bx 木有借位
5 cf=0且zf=0 ax 大于 bx 木有借位 并且结果不为0
6 cf=1或zf=1 ax 小于等于 bx 有借位则小 结果为0则等
有符号的 cmp
我们必须在查看sf(得知实际结果的正负)的同时还要查看of(得知有木有溢出)
就可以得知逻辑上真正结果的正负了 同时也可以知道比较的结果
指令 cmp ah,bh 执行后
即(ah - bh 执行)
相等不相等 直接看zf 与无符号的运算一样。。
1 sf=1 of=0 木有溢出 结果为负 实际结果=逻辑真正结果 所以 ah
2 sf=1 of=1 有溢出 溢出导致实际结果为负 则逻辑真正结果必然为正 ah>bh
3 sf=0 of=1 有溢出 溢出导致实际结果为正 则逻辑真正结果必然为负 ah
4 sf=0 of=0 木有溢出 结果为正 实际结果=逻辑真正结果 所以 ah>bh
jmp指令