(1)、终止循环伪指令
.BREAK
.BREAK .IF Condition
该伪指令用来终止包含它的最内层循环。前者是无条件终止循环,后者是仅当逻辑表达式Condition为真时,才终止循环。
.WHILE 1.REPEAT
…
.BREAK .IF Condition
……
.BREAK .IF Condition
…
ENDW.UNTIL0
对于以上二个循环,如果没有指令来终止循环的话,它们都将进入死循环状态,但如果在该层循环体内,存在伪指令“.BREAK .IF Condition”的话,那么,当逻辑表达式Condition为真时,该循环就会被终止了。
(2)、循环继续伪指令
.CONTINUE
.CONTINUE.IF Condition
该伪指令用于直接跳转到包含它的最内层循环的计算循环条件表达式的代码处。前者是无条件转移到计算循环条件表达式的代码处,后者是仅当条件表达式Condition为真时,才进行这样的跳转。
辅助循环伪指令.BREAK和.CONTINUE只能在伪指令.WHILE-.ENDW和.REPEAT-.UNTIL的循环体内使用。
例6.12显示9个数字字母’1’~’9’,26个大写字母,和显示任意输入的数字字符,并用按“回车”键来结束本程序的运行。
解:
DATA1SEGMENT
MSG1DB13, 10, \"Iteration: \"
NUM1DB’1’, \"$\"
MSG2DB13, 10, \"Alphabet: $\"
NUM2DB’A’, \" $\"
MSG3DB13, 10, \"Type Digits, Then Press ENTER: $\"
DATA1ENDS
CODE1SEGMENT
ASSUMECS:CODE1, DSATA1
START:MOVAX, DATA1
MOVDS, AX
MOVCX, 9
MOVAH, 09H
MOVDX, OFFSET MSG1
.REPEAT
INT21H
INCNUM1;显示Iteration: 1,2,~,9
.UNTILCXZ
MOVDX, OFFSET MSG2
INT21H;显示字符串\"Alphabet:\"
MOVAH, 09H
MOVDX, OFFSET NUM2
.REPEAT
INT21H
INCNUM2;显示当前字母
;当前字母向后移
.UNTILNUM2 >’Z’;显示整个大写字母表
MOVAH, 09H
MOVDX, OFFSET MSG3
INT21H
.WHILE 1;循环条件为永真的循环
MOVAH, 07H
INT21H;不带回显地从键盘读一个字符
.BREAK .IF AL == 13;如果输入“回车”键,则终止循环
.CONTINUE .IF (AL<’0’)|| (AL>’9’);如果字符不是数字字符,则继续循环
MOVDL, AL
MOVAH, 02H
INT21H;显示所输入的数字字母
.ENDW
MOVAX, 4C00H
INT21H
CODE1ENDS
ENDSTART |