汇编语言中,怎样才能只输入数字串,不能输入其他字符?
ASSUME CS:CODE, DS:DATA
DATA SEGMENT
MSG1 DB 'Please Enter(0-20):'
CRLF DB 13, 10, '$'
MSG2 DB 13, 10, 'After sort:'
;----------------------------------
BUFSIZE DB 80 ;可键入字符.
ACTLEN DB ? ;实际字符数.
CHARS DB 80 DUP(?) ;字符存放.
DATA ENDS
;----------------------------------
CODE SEGMENT
START:
MOV AX, DATA
MOV DS, AX
;-----------------------
MOV DX, OFFSET MSG1
MOV AH, 9
INT 21H
MOV DX, OFFSET BUFSIZE
MOV AH, 10
INT 21H ;输入字符串并送入缓冲区.
;-----------------------
MOV CL, ACTLEN ;输入的字符数.
ADD CL, 0
JNZ OK ;长度不为零就去排序.
;-----------------------
OK:
MOV CH, 0
MOV BX, CX
MOV SI, OFFSET CHARS
MOV BYTE PTR [BX + SI], '$'
;-----------------------
DEC CX
S: PUSH CX
MOV DI, SI
S1: MOV AL, [DI]
CMP AL, [DI + 1]
JNB JX
XCHG AL, [DI + 1]
MOV [DI], AL
JX: INC DI
LOOP S1
POP CX
LOOP S
;-----------------------
MOV BUFSIZE, 13
MOV ACTLEN, 10
MOV DX, OFFSET MSG2
MOV AH, 9
INT 21H
MOV DX, OFFSET CRLF
MOV AH, 9
INT 21H
MOV DL, CHARS
MOV AH, 2
INT 21H
DEC BX
MOV DL, [BX + SI]
MOV AH, 2
INT 21H
mov dl, 0ah ;换行
mov ah, 2
int 21h
只对十进制数字串排序