汇编语言(3) 条件处理

布尔指令和比较指令 and指令:除了两个以逻辑与是1其余的都是0
将字符转换为大写:

01100001=61h('a') 01000001=41('A')

把任何一个字符与二进制数1101 1111进行and九科得到大写
or指令:除了两个零逻辑或是0其余的都是1
or al,al
下表给出了零标志位和符号标志位对al内容的说明:
零标志位 符号标志位 AL中的值
清零 清零 大于零
置一 清零 等于零
清零 置一 小于零
xor指令:相同为零不同为一
not指令:触发翻转操作数中的所有位。其结果成为反码。
test指令:将两个数进行and指令但是不改变目标数。
————————————————————————————————————————————————————————
CMP指令:指令执行从目的操作数中减去源操作数的隐含减法操作,并且不修改任何操作数。
无符号操作数之间的关系:
CMP结果 ZF CF
目的操作数<源操作数 0 1
目的操作数>源操作数 0 0
目的操作数=源操作数 1 0
有符号操作数之间的关系:
CMP结果 ZF CF
目的操作数<源操作数 SF不等于OF
目的操作数>源操作数 SF=OF
目的操作数=源操作数 ZF=1
置位和清除单个CPU标志位:
test al,0 ;零标志位置1 and al.0 ;零标志位置1 or al,1;零标志位置清零 or al,80h ;符号标志位置1 or al,7Fh ;符号标志位置清零 stc;进位标志位置1 clc;进位标志为清零mov al,7Fh;AL=+127 inc al;AL=80H(-128),OF=1 or eax,0 ;溢出标志位清零

条件跳转 各个标志位的名称:
CF 进位标志位 AF 辅助进位标志位 OF 溢出标志位 ZF 零标志位 SF 符号标志位 PF 奇偶标志位

基于特定标志位值的跳转:
助记符 说明 标志位/寄存器
JZ 为零跳转 ZF=1
JNZ 非零跳转 ZF=0
JC 进位跳转 CF=1
JNC 无进位跳转 CF=0
JO 溢出跳转 OF=1
JNO 无溢出跳转 OF=0
JS 有符号跳转 SF=1
JNS 无符号跳转 SF=0
JP 偶校验跳转 PF=1
JNP 奇校验跳转 PF=0
基于相等性的跳转:
助记符 说明
JE 相等跳转
JNE 不相等跳转
JCXZ CX=0跳转
JECXZ ECX=0跳转
JRCXZ RCX=0跳转
基于无符号数比较的跳转:
助记符 说明
JA 大于跳转
JNBE 不小于或等于跳转
JAE 大于或等于跳转
JNB 不小于跳转
JB 小于跳转
JNAE 不大于或等于跳转
JBE 小于或等于跳转
JNA 不大于跳转
基于有符号数比较的跳转:
助记符 说明
JG 大于跳转
JNLE 不小于或等于跳转
JGE 大于或等跳转
JNL 不小于跳转
JL 小于跳转
JNGE 不大于或等于跳转
JLE 小于或等于跳转
JNG 不大于跳转
条件循环指令 LOOPZ:循环跳转
LOOPE:相等跳转
LOOPNZ:非零跳转
LOOPNE:不相等跳转
条件结构 条件控制流伪指令 【汇编语言(3) 条件处理】如下表:
汇编语言(3) 条件处理
文章图片

汇编语言(3) 条件处理
文章图片

    推荐阅读