【正确答案】LEA SI,A ;取A单元的首地址
LP:IN AL,20 ;从20端口读入一个字节数据到AL中
AND AL,0FH ;屏蔽AL中的高4位内容
OR AL,30H ;将AL中的内容变换成对应的ASCⅡ码
CMP AL,'*' ;判断AL内容的是否为A'*'
JZ ENDP ;是则结束
MOV [SI],AL ;将AL中的内容存入[SI]中
INC SI ;地址增1
OUT 30H,AL ;将AL中的内容输出到30H端口
JMP LP ;继续
ENDP:HLT
程序功能为:不断地从20端口输入一个数据到AL中,取其低四位,并将其变换成对应的ASCⅡ码,把AL中的内容存入以A开始的单元中,并从30H端口输出,以‘*’号作为结束标志(该程序永远不会结束)。
【答案解析】由于CMP AL,‘*’语句中的‘*’为20H,而AL中的内容为30H~3FH,所以该比较语句的条件永远不能满足,也就意味着该程序段没有结束条件。本题的意图是通过阅读程序,从中可以发现程序的不足,以训练学生的编程能力。
LEA SI,A
LP:IN AL,20
CMP AL,'*'
JZ ENDP
AND AL,0FH
CMP AL,0AH
JB BC
ADD AL,07H
BC:ADD AL,30H
MOV [SI],AL
INC SI
OUT 30H,AL
JMP LP
ENDP:HLT