问答题 设一个程序可完成3个功能。根据键盘读入的值(1~3),转去执行相应的处理程序。若输入‘1’,则显示字符串“THlS IS THE FIRST STRING.”;若输入‘2’,则显示字符串“THIS IS THE SECOND STRING.”;若输入‘3’,  则显示字符串“THIS IS

THE THIRD STRING.”。
【正确答案】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
   说明:以上多个例子都是既有分支结构又有循环结构,实际上,多数程序都是各种程序结构的组合。而且,循环结构可以看作分支结构的一种特例,它只是多次走一个分支,只在满足循环结束条件时,走另一个分支罢了。
【答案解析】