80x86 組合語言程式設計:輸入數字串,排序、並求最大和最小
;從鍵盤輸入一個ENTER結束的十進位制數字串, 按ASCII碼值降序排列這個數字串,
;舉報|2013-12-10 21:36鼬風行 | 分類:組合語言 | 瀏覽61次
;並另起一行,顯示出ASCII碼制最大和最小的兩個數
;題目連結:
;做而論道程式設計如下:
;================================================
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 是不常用的。
可以在這裡追問或使用百度私信聯絡。
提問者評價:問題解決了,謝謝