第6章 条件处理(if、switch、for、while)

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

6.4 条件循环指令

6.5 条件结构

6.6 应用:有限状态机(FSM)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值