问答题
分析下列程序:
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。
【答案解析】