问答题 设一个程序可完成3个功能。根据键盘读入的值(1~3),转去执行相应的处理程序。若输入‘1’,则显示字符串“THIS IS THE FIRST STRING.”;若输入‘2’,则显示字符串“THIS IS THE SECOND STRING.”;若输入‘3’,则显示字符串“THIS ISTHE THIRD STRING.”。
【正确答案】STACKSG SEGMENT STACK  'STACK'
           DW 32 DUP(?)
   STACKSG ENDS
   DATASG  SEGMENT
           CR EQU 13
           LF EQU 10
           CRLF   DB CR, LF,'$'
           PROMPT DB  'PLEASE  INPUT A NUMBER(0-3):  ','S'
           ERRORS DB  'YOUR  INPUT  IS  WRONG!','$'
           STRI   DB  'THIS  IS  THE  FIRST  STRING.','$'
           STR2   DB  'THIS  IS  THE  SECOND  STRING.','$'
           STR3   DB  'THIS  IS  THE  THIRT  STRING.','$'
           MENU   DW  NUM1,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    ;输出按Enter键换行
           MOV AH,9
           INT 21H
           CMP CL,'1'    ;判断输入的字符是否在1~3的范围内,
                         ;若不在此范围内则输出错误提示
           JB  ERROR
           CMP CL,'3'
           JA  ERROR
           AND CL, OFH    ;判断输入的字符具体值,依此值跳至不同分支执行
           DEC CL
           XOR BH, BH
           MOV BL, CL
           SHL BX,1
           JMP [MENU+BX]
   NUM1:  LEA DX, STR1
           JMP DISP
   NUM2:  LEA DX, STR2
           JMP DISP
   NUM3:  LEA DX, STR3
   DISP:  MOV AH,9
           INT 21H
           JMP EXIT
   ERROR:  LEA DX, ERRORS
           MOV AH,9
           INT 21H
   EXIT:  MOV AX, 4COOH
           INT 21H
           MAIN ENDP
   CODESG  ENDS
           END MAIN
【答案解析】[说明]以上多个例子都是既有分支结构又有循环结构,实际上,多数程序都是各种程序结构的组合。而且,循环结构可以看作是分支结构的一种特例,它只是多次走一个分支,只在满足循环结束条件时,走另一个分支罢了。