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