1、一个循环程序通常由四部分构成
1)初始部分
2)工作部分
3)修改部分
4)控制部分
2、判断循环是否结束的办法有2种
1)用计数控制循环
例:在xx单元开始的连续单元中存放有10个无符号字节数,从中找出最大者送yy单元。
DATA SEGMENT
xx DB 49,38,65,12,97,13,55,27,28,85
yy DB ?
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
LEA BX,xx
MOV AL,[BX]
LOOP1: INC BX
CMP AL,[BX]
JAE NEXT
XCHG AL,[BX]
NEXT: LOOP LOOP1
AAM
;将最大数输出十进制表示
MOV yy,AL
MOV DL,AH
OR DL,30H
MOV AH,2
INT 21H
MOV DL,yy
OR DL,30H
MOV AH,2
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
2)用条件控制循环
从自然数1开始累加,直到累加和大于1000为止,统计被累加的自然数的个数,并把统计的个数送入n单元,把累加和送入sum单元。
ATAS SEGMENT
n DW ?
sum DW ?
DATAS ENDS
STACS SEGMENT PARA STACK 'stack'
DW 100 DUP(?)
STACS ENDS
CODES SEGMENT
MAIN PROC FAR
ASSUME CS:CODES,DS:DATAS,SS:STACS
START: PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATAS
MOV DS,AX
MOV AX,0
MOV BX,0
LOOPT: INC BX
ADD AX,BX
CMP AX,1000
JBE LOOPT
MOV n,BX
MOV sum,AX
RET
MAIN ENDP
CODES ENDS
END START
3、多重循环程序设计
DATA SEGMENT
ARRAY DB 49,38,65,12,97,13,55,27,28,85
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV DX,9
LEA BX,ARRAY
LOOP0: MOV AL,[BX]
MOV SI,[BX+1]
MOV CX,DX
LOOP1: CMP AL,[SI]
JAE NEXT
XCHG AL,[SI]
NEXT: INC SI
LOOP LOOP1
MOV [BX],AL
INC BX
DEC DX
JNZ LOOP0
MOV AH,4CH
INT 21H
CODE ENDS
END START