汇编语言中,怎样才能只输入数字串,不能输入其他字符?

qq_33756069 2016-01-15 06:55:30
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
只对十进制数字串排序
...全文
974 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
大熊猫侯佩 2016-02-28
  • 打赏
  • 举报
回复
在每次取得输入字符后,判断该字符是否满足条件,如果满足则处理,否则直接忽略.
danteng2000 2016-02-27
  • 打赏
  • 举报
回复
输入之后判断是不是数字字符串,不是让他重输,不能惯着他
做而论道_CS 2016-02-02
  • 打赏
  • 举报
回复
http://blog.csdn.net/baidu_33836580/article/details/50579106 供参考。
hoei 2016-01-24
  • 打赏
  • 举报
回复
使用int21/08无回显输入字符,判断后决定是否放入缓存和送至屏幕当前光标位置处
zara 2016-01-18
  • 打赏
  • 举报
回复
整个字符串输入的话,可以在排序前先处理下字符串,将非数字字符剔除;也可以用单个字符输入,每输入个字符就检查是否数字字符,是才保存,否则弃之,回车即结束输入去进行排序。
qq_33756069 2016-01-15
  • 打赏
  • 举报
回复
也就是只对十进制数字串排序

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧