第六章循环与分支程序设讣 按照控制条件的位置分为: ·Do[循环体]UL[条件] WH工E[条件]D○[循环体] po[循环体]UW[条件 循环初始化 MOV CX, 8 LOOP 循环体 MOV CX, 5 ADD AX, 1 满足条件? LOOP LOOPO
第六章第一章循环与分支程序设计 基础知识
第六章循环与分支程序设讣 WHLE条件]Do[循环体 循环初始化 MOV CX. 8 JLE JMPO 循环体 满足条件? (Y MOV AX, 5 ADD AX, 1 SUBCA. JMPO: MOV CX. 8
第六章第一章循环与分支程序设计 基础知识
循环程序设计 根据条件重复执行一段指令就构成了循环程序结构。 例:将 ARRAY数组中的50个数求和,并将和存入字变量S中。 MOV AX. 0 ;累加求和寄存器清0 MOV BX, OFFSET ARRAY;数组始址送BX中 MOV CX. 50 ;循环控制计数初始化 AGAIN: ADD AX, BX ADD BX. 2 ;数组地址增2,BX指向下一个元素 DECCⅩ ;循环控制计数减1 JNZ AGAIN;计数不为0时继续循环 MOV S. AX ;计数为0时循环结束,和存于S中 保证循环正常执行和结束的条件 o正确地初始化循环控制计数和初始条件 ②正确地检测循环条件 ③必须保证能达到循环结束条件(例如在循环体内有修改循环 控制值的指令)
循环程序设计 根据条件重复执行一段指令就构成了循环程序结构 。 MOV AX,0 ;累加求和寄存器清0 MOV BX,OFFSET ARRAY ;数组始址送BX中 MOV CX,50 ;循环控制计数初始化 AGAIN : ADD AX,[BX] ADD BX,2 ;数组地址增2,BX指向下一个元素 DEC CX ;循环控制计数减1 JNZ AGAIN ;计数不为0时继续循环 MOV S,AX ;计数为0时循环结束,和存于S中 保证循环正常执行和结束的条件: 正确地初始化循环控制计数和初始条件 正确地检测循环条件 必须保证能达到循环结束条件 (例如在循环体内有修改循环 控制值的指令) 例:将ARRAY数组中的50个数求和,并将和存入字变量S中
指令系统提供了专门用于循环结构的循环控制指令,更加 简便的地实现循环结构 循环控制指令 循环控制指令的转移范围为:-128~+127字节(段内短转移) (1)LOOP指令 格式:LOOP标号 否 操作:如图所示 (CX)≠0且ZF=0? (2)等于继续循环指令 是 格式: LOOPZ/ LOOPE标号 □执行循环体退出循环 (3)不等于继续循环指令 (CⅩ)-(CX)-1 格式: LOOPNZ/ LOOPNE标号 在前面的求和例子中,可用一条循环指令代替两条指令: LOOP AGAIN DECCⅩ AGAIN
指令系统提供了专门用于循环结构的循环控制指令,更加 简便的地实现循环结构。 循环控制指令 循环控制指令的转移范围为:-128~+127字节 (2)等于继续循环指令 格式:LOOPZ/LOOPE 标号 (3)不等于继续循环指令 格式:LOOPNZ/LOOPNE 标号 LOOP AGAIN (段内短转移) 格式:LOOP 标号 操作: 如图所示 (1)LOOP指令 (CX)≠ 0? 执行循环体 (CX) (CX) -1 是 否 退出循环 (CX)≠ ≠0 0 且且ZF =1 ? ZF=0 ? 在前面的求和例子中,可用一条循环指令代替两条指令: DEC CX JNZ AGAIN
例:求存放在STRS存储区中的字符串长度。 设: STRS DB strings MOV CX,80 MOV MOV AL,“$′ AGAIN: INC CMP AL, STRSISI LOOPNE AGAIN MOV lEN. SI 循环程序设计方法 控制循环的方法可分为两类: 计数循环—用于循环次数已知的情况 条件循环用于循环次数不确定的情况
MOV CX,80 MOV SI,-1 MOV AL, $ AGAIN: INC SI CMP AL,STRS[SI] LOOPNE AGAIN MOV LEN,SI 循环程序设计方法 控制循环的方法可分为两类: 计数循环——用于循环次数已知的情况 条件循环——用于循环次数不确定的情况 设: STRS DB string$ 例: 求存放在STRS存储区中的字符串长度