问答题 分析下列程序:
DATA     SEGMENT
DISPDATA DB'INPUT NUMBER KEY,CR OR SP RETURN',0DH,0AH
DATA     ENDS
CODE     SEGMENT
        ASSUME CS:CODE,DS:DATA
START:  MOV AX,DATA
        MOV DS,AX
        LEA DX,DISPDATA           ;(1)
        MOV AH,09H                ;(2)
        INT 21H
AGAIN:  MOV AH,01H               ;(3)
        INT 21H
        CMP AL,0DH                ;(4)
        JZ EXIT                   ;(5)
        CMPAL,20H                 ;(6)
        JZ EXIT                   ;
        CMP AL,30H                ;(7)
        JBE AGAIN                 ;(8)
        CMP AL,39H                ;(9)
        JAAGAIN                   ;(10)
        SUB AL,30H                ;(11)
        MOV CL,AL                 ;(12)
        AND CX,0FFH
DONE:   MOV AH,02H
        MOV DL,07H                ;(13)
        INT 21H
        CALL DELAY                ;
        LOOP DONE
        JMP AGAIN
EXIT:   MOV AH,4cH                ;(14)
        INT 21H
DELAY:  PUSH CX
        MOV CX,0FFFH
        LOOP DELAY
        POP CX
        RET
CODE     ENDS
        END START

   按照程序各语句中;号后面的题号(1)~(14),试分别回答这些语句的功能。程序执行后将完成什么功能?
【正确答案】(1) 取显示数据首址的偏移地址。
   (2) 调用DOS的09H号功能以调用显示数据。
   (3) 从键盘输入一个ASCII码字符数据。
   (4) 判断是否为回车符?
   (5) 是回车符则结束。
   (6) 判断是否为空格符?
   (7) 与0比较。
   (8) 小于等于0,则不响铃,重输入。
   (9) 与9比较。
   (10) 大于9,则不响铃,重输入。
   (11) ASCII码数转换成BCD码。
   (12) CX作响铃计数器。
   (13) 调用02H号功能以调用输出响铃字符响铃。
   (14) 返回DOS。
   程序执行后将在屏幕上显示提示行“键入数字键,回车或空格键返回”,然后紧接着是回车、换行,等待从键盘上输入一个ASCII码字符数据。如果是数字N(1~9),则响铃N次(每次有一定的延时以作间隔);若数字是0或非数字,则不响铃;如果是回车或空格键,则退至DOS。
【答案解析】