灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2677回复:0

辅助循环伪指令

楼主#
更多 发布于:2012-09-10 18:56

(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

喜欢0 评分0
游客

返回顶部