80x86 汇编语言编程:输入数字串,排序、并求最大和最小


;从键盘输入一个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 是不常用的。

可以在这里追问或使用百度私信联系。


提问者评价:问题解决了,谢谢


  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值