6.2.3 循环结构
优质
小牛编辑
139浏览
2023-12-01
6.2.3 循环结构
循环结构是一个重要的程序结构,它具有重复执行某段程序的功能。通常,循环结构包括以下四个组成部分:
1、循环初始化部分——初始化循环控制变量、循环体所用到变量;
2、循环体部分——循环结构的主体;
3、循环调整部分——循环控制变量的修改、或循环终止条件的检查;
4、循环控制部分——程序执行的控制转移。
以上四部分可以在程序中用各种不同的形式体现出来,有时也并非清析地表达出来。常用的循环结构如图6.3所示。
(a)、Do—While结构 | (b)、While结构 |
图6.3 常用的循环结构示意图 |
一、用循环指令构成循环结构
在编写循环结构的程序片段时,我们可以多种方法来循环结构。如:循环次数是已知的,可用LOOP指令来构造循环;当循环次数是未知或不定的,则可用条件转移或无条件转移来构成循环结构。
例6.10 分类统计字数组data中正数、负数和零的个数,并分别存入内存字变量Positive、Negative和Zero中,数组元素个数保存在其第一个字中。
解:显示解答
例6.11 计算数组score的平均整数,并存入内存字变量Average中,数组以-1为结束标志。
解: | ||||
DATA1 | SEGMENT | |||
data | DW 90, 95, 54, 65, 36, 78, 66, 0, 99, 50, -1 | |||
Average | DW 0 | |||
DATA1 | ENDS | |||
CODE1 | SEGMENT | |||
ASSUME CS:CODE1, DS:DATA1 | ||||
START: | MOV | AX, DATA1 | ||
MOV | DS, AX | |||
XOR | AX, AX | |||
XOR | DX, DX | ;用(DX,AX)来保存数组元素之和 | ||
XOR | CX, CX | ;用CX来保存数组元素个数 | ||
LEA | SI, data | ;用指针SI来访问整个数组 | ||
again: | MOV | BX, word ptr [SI] | ||
CMP | BX, 0 | |||
JL | over | |||
ADD | AX, BX | |||
ADC | DX, 0 | ;把当前数组元素之值加到(DX,AX)中 | ||
INC | CX | ;数组元素个数加1 | ||
ADD | SI, 2 | |||
JMP | again | |||
over: | JCXZ | exit | ;防止零作除数,即数组是空数组 | |
DIV | CX | |||
MOV | Average, AX | |||
exit: | MOV | AX, 4C00H | ||
INT | 21H | |||
CODE1 | ENDS | |||
END | START |