从键盘上输入一串字符(用回车键结束,使用INT 21H的10号功能调用)放在 ;STRING中,试编制一个程序测试字符串中是否存在数字,如有,则把CL的 ;第五位置1,否则将该位置0

;从键盘上输入一串字符(用回车键结束,使用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

你可能感兴趣的:(汇编语言)