6.1 条件分支
6.2 *布尔和比较指令
布尔指令(逻辑运算):AND、OR、XOR、NOT、TEST
比较指令:CMP
布尔指令影响零标志位(ZF)、符号标志位(SF)、奇偶标志位(PF)、进位标志位(CF)、溢出标志位(OF)
6.3 *条件跳转(if)
通过比较(cmp)和跳转(j_)组合实现
;扫描数组 (ArrayScan.asm)
;扫描数组寻找第一个非零数值
include Irvine32.inc
.data
intArray SWORD 0,0,0,0,1,20,35,-12,66,4,0
;intArray SWORD 1,0,0,0 ;候补测试数据
;intArray SWORD 0,0,0,0 ;候补测试数据
;intArray SWORD 0,0,0,1 ;候补测试数据
noneMsg BYTE "A non-zero value was not found",0
.code
main PROC
mov ebx,OFFSET intArray ;指向数组
mov ecx,LENGTHOF intArray ;循环计数器
L1: cmp WORD PTR [ebx],0 ;将数值与0比较
jnz found ;寻找数值
add ebx,2 ;指向下一个元素
loop L1 ;继续循环
jmp notFound ;没有发现非零数值
found:
movsx eax,WORD PTR[ebx] ;送入EAX并进行符号扩展
call WriteInt
jmp quit
notFound: ;显示“没有发现”消息
mov edx,OFFSET noneMsg
call WriteString
quit:
call Crlf
exit
main ENDP
END main