x86 指令集中没有明确的高级逻辑结构,但是可以通过比较和跳转的组合来实现它们。
执行一个条件语句需要两个步骤:
- 第一步,用 CMP、AND 或 SUB 操作来修改 CPU 状态标志位;
- 第二步,用条件跳转指令来测试标志位,并产生一个到新地址的分支。
cmp eax, 0
jz L1 ;jz(jump if zero),根据cmp指令后ZF是否为0来决定是否跳转到L1。
……
……
L1:……
and dl,10110000b
jnz L2 ;jnz(jump if not zero),根据and指令后ZF是否不为0来决定是否跳转到L2。
……
……
L2: