;从键盘上输入一串字符(用回车键结束,使用INT 21H的10号功能调用)放在
;STRING中,试编制一个程序测试字符串中是否存在数字,如有,则把CL的
;第五位置1,否则将该位置0
DATA SEGMENT
STRING DB 128,?,128 DUP(?)
CRLF DB 0AH,0DH,'$'
DATA ENDS
STACK SEGMENT PARA STACK
DW 128 DUP(?)
TOP LABEL WORD
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,SS:STACK,DS:DATA
MAIN PROC FAR
START:
MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
LEA SP,TOP
LEA DX,STRING ;调用INT 21H的0AH号功能接收字符串输入,并以回车键结束
MOV AH,0AH
INT 21H
LEA SI,STRING+1 ;取得实际输入字符数
MOV CL,[SI]
XOR CH,CH
INC SI
L1: MOV AL,[SI]
INC SI
DEC CX
CMP AL,30H
JL L4
CMP AL,39H
JLE L2 ;大于等于0且小于等于9的则为数字
L4: CMP CX,0 ;判断是否已经遍历数组
JZ L3
JMP L1
L2: OR CL,20H ;置CL第五位为1
JMP EXIT
L3: AND CL,11011111B ;置CL第五位为0
EXIT: MOV AH,9
LEA DX,CRLF ;换行
INT 21H
TEST CL,20H ;测试CL第五位是否为1
JZ L5
JNZ L7
L5: MOV AH,2 ;不为1则输出0
MOV DL,30H
INT 21H
JMP L6
L7: MOV AH,2 ;为1则输出1
MOV DL,31H
INT 21H
L6: MOV AH,4CH
INT 21H
CODE ENDS
MAIN ENDP
END START