例7.33 显示STRING串中的每个字符直到末字符$为止($不显示)。程序段如下,其中DISP仍为显示AL中字符的子程序,!=
表示不等。
LEA BX,STRING
MOV AL,[BX]
.WHILE AL !='$'
CALL DISP
INC BX
MOV AL,[BX]
.ENDW
汇编程序将产生以下代码:
LEA BX,STRING
MOV AL,[BX]
JMP COMPARE
DISPLAY: CALL DISP
INC BX
MOV AL,[BX]
COMPARE: CMP AL,'$'
JNZ DISPLAY
我们知道,高级语言中的WHILE语句总是先测试循环结束条件,以决定是否进入循环体。在这里,虽然测试条件放在循环体之后,但当程序中出现
.ENDW时,汇编程序将在循环体之前用一条JMP指令来保证先作测试,这样符合WHILE的含义,即如一开始就满足条件,则程序将立即结束而不会进入循环体。