天天看点

第六章 条件处理

操作

说明

AND

源操作数和目的操作数进行逻辑与操作

OR

源操作数和目的操作数进行逻辑或操作

XOR

源操作数和目的操作数进行逻辑异或操作

NOT

对目标操作数进行逻辑非操作

TEST

源操作数和目的操作数进行逻辑与操作,并适当地设置 CPU 标志位

对 16 位整数来说,可以通过将其高字节和低字节进行异或运算来检测数的奇偶性:

将每个寄存器中的置 1 位(等于 1 的位)想象为一个 8 位集合中的成员。XOR 指令把两个集合交集中的成员清 0,并形成了其余位的并集。这个并集的奇偶性与整个 16 位整数的奇偶性相同。

要将零标志位清零,就把操作数与 1 进行 OR 操作:

TEST 指令不修改目的操作数,而 AND 指令则会修改目的操作数。若要符号标志位置 1,将操作数的最高位和 1 进行 OR 操作;若要清除符号标志位,则将操作数最高位和 0 进行 AND 操作:

若要进位标志位置 1,用 STC 指令;清除进位标志位,用 CLC 指令:

若要溢出标志位置 1,就把两个正数相加使之产生负的和数;若要清除溢出标志位,则将操作数和 0 进行 OR 操作:

基于零标志位、进位标志位、溢出标志位、奇偶标志位和符号标志位的跳转。

助记符

标志位/寄存器

JZ

为零跳转

ZF=1

JNO

无溢出跳转

OF=0

JNZ

非零跳转

ZF=0

JS

有符号跳转

SF=1

JC

进位跳转

CF=1

JNS

无符号跳转

SF=0

JNC

无进位跳转

CF=0

JP

偶校验跳转

PF=1

JO

溢出跳转

OF=1

JNP

奇校验跳转

PF=0

JE

相等跳转 (leftOp=rightOp)

JNE

不相等跳转 (leftOp M rightOp)

JCXZ

CX=0 跳转

JECXZ

ECX=0 跳转

JRCXZ

RCX=0 跳转(64 位模式)

JA

大于跳转(若 leftOp > rightOp)

JB

小于跳转(若 leftOp < rightOp)

JNBE

不小于或等于跳转(与 JA 相同)

JNAE

不大于或等于跳转(与 JB 相同)

JAE

大于或等于跳转(若 leftOp ≥ rightOp)

JBE

小于或等于跳转(若 leftOp ≤ rightOp)

JNB

不小于跳转(与 JAE 相同)

JNA

不大于跳转(与 JBE 相同)

JG

JL

JNLE

不小于或等于跳转(与 JG 相同)

JNGE

不大于或等于跳转(与 JL 相同)

JGE

JLE

JNL

不小于跳转(与 JGE 相同)

JNG

不大于跳转(与 JLE 相同)

2.循环的实现

3.测验分数的评级(1)

4.3.测验分数的评级(2)

7.布尔计算器(1)

8.布尔计算器(2)

9.自定义秘钥输入