;从键盘输入一个ENTER结束的十进制数字串, 按ASCII码值降序排列这个数字串,
;举报|2013-12-10 21:36鼬风行 | 分类:汇编语言 | 浏览61次
;并另起一行,显示出ASCII码制最大和最小的两个数
;题目链接:
;http://zhidao.baidu.com/question/1429974384330700699.html
;做而论道编程如下:
;================================================
ASSUME CS:CODE, DS:DATA
DATA SEGMENT
MSG1 DB 13, 10, 'Enter(0~9): $'
MSG2 DB 13, 10, 'After sort: '
STR DB 20 DUP('$')
MSG3 DB 13, 10
MAX DB ?
MIN DB ?, '$'
;----------------------------------
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 BX, 0
IN_CHAR:
MOV AH, 7
INT 21H
CMP AL, 13
JE IN_END
CMP AL, '0'
JB IN_CHAR
CMP AL, '9'
JA IN_CHAR
MOV DL, AL
MOV AH, 2
INT 21H
MOV STR[BX], DL
INC BX
CMP BX, 20
JE IN_END
JMP IN_CHAR
IN_END:
MOV CX, BX
CMP BX, 2
JB EXIT ;少于2个,退出
;-----------------------
SORT: ;排序
DEC CX
S: PUSH CX
MOV DI, OFFSET STR
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 DX, OFFSET MSG2
MOV AH, 9
INT 21H
MOV AL, STR
MOV MAX, AL
MOV AL, STR[BX - 1]
MOV MIN, AL
MOV DX, OFFSET MSG3
MOV AH, 9
INT 21H
EXIT:
MOV AH, 4CH
INT 21H ;返回DOS
;----------------------------------
CODE ENDS
END START
;================================================
追问:2013-12-13 21:19
能不能加企鹅号帮忙解释下,有些地方不太懂,谢谢了
回答:2013-12-16 12:02
QQ 是不常用的。
可以在这里追问或使用百度私信联系。
提问者评价:问题解决了,谢谢