【正确答案】STACKSG SEGMENT STACK'STACK'
DW 32DUP(?)
STACKSG ENDS
DATASG SEGMENT
CR EOU 13
LF EOU 10
CRLF DB CR,LF,'$'
PROMPT DB'PLEASE INPUT A NUMBER(0-3. :','$'
ERRORS DB'YOUR INPUT IS WRONG!','$'
STR1DB'THIS IS THE FIRST STRING.','$'
STR2DB'THIS IS THE SECOND STRING.','$'
STR3DB'THIS IS THE THIRT STRING.','$'
MENU DW NUM 1,NUM2,NUM3
DATASG ENDS
EXTRASG SEGMENT
EXTRASG ENDS
CODESG SEGMENT
MAIN PROC FAR
ASSUME CS:CODESG,DS:DATASG,ES:EXTRASG,SS:STACKSG
MOV AX,DATASG
MOV DS,AX
LEA DX,PROMPT ;显示提示语
MOV AH,9
INT 21H
MOV AH,1 ;待用户输入字符
INT 21H
MOV CL,AL
LEA DX,CRLF ;输出回车换行
MOV AH,9
INT 21H
CMP CL,'1' ;判断输入的字符是否在1至3的范围内,
;若不在此范围内则输出错误提示
JB ERROR
CMP CL,'3'
JA ERROR
AND CL,0FH ;判断输入的字符具体值,依此值跳至不同分
;支执行
DEC CL
XOR BH,BH
MOV BL,CL
SHL BX,1
JMP [MENU+BX]
NUM1:LEA DX,STR1
JMP DISP
NUM2:LEA DX,STR2
JMPDISP
NUM3: LEA DX,STR3
DISP: MOV AH,9
INT 21H
JMP EXIT
ERROR:LEA DX,ERRORS
MOVAH,9
INT 21H
EXIT: MOV AX,4C00H
INT 21H
MAIN ENDP
CODESG ENDS
END MAIN
说明:以上多个例子都是既有分支结构又有循环结构,实际上,多数程序都是各种程序结构的组合。而且,循环结构可以看作分支结构的一种特例,它只是多次走一个分支,只在满足循环结束条件时,走另一个分支罢了。
【答案解析】