当前位置: 代码迷 >> 汇编语言 >> 汇编 字符串冒泡排序解决方案
  详细解决方案

汇编 字符串冒泡排序解决方案

热度:5128   发布时间:2013-02-26 00:00:00.0
汇编 字符串冒泡排序
题目是:输入一个字符串,然后对每个字符进行冒泡排序,最后输出一个按字符从小到大排序的字符串!
以下是我写的代码,不知道哪里出问题了,请高手指点一下,万分感激!!
        DATA  SEGMENT
     STRING1  DB        100 DUP(?)  ;输入的字符串
        DATA  ENDS

        CODE  SEGMENT
              ASSUME    CS:CODE, DS:DATA
      START:
              MOV       AX, DATA
              MOV       DS, AX
              LEA       BX, STRING1 ;    把string1的地址赋给BX
              MOV       AH, 1
      SCANF:
              INT       21H         ;获得按键的ASCII代码值,即输入
              CMP       AL, 13      ;如果回车则停止输入
              JZ        END_SCANF   ;输入完毕
              MOV       [BX], AL    ;把每一个字符存入?[BX]即string1中
              ADD       BX, 1       ;BX下移,准备存入下个字符
              JMP       SCANF       ;继续输入直到回车
  END_SCANF:  MOV       DI,OFFSET STRING1       ;冒泡的次数
              MOV       SI,OFFSET STRING1       ;一次冒泡的过程
    COMPARE:  MOV       AL,[SI]
              CMP       AL,BYTE PTR[SI+1]
              JGE       EXCHANGE    ;如果大于后一个,则两数交换
              ADD       SI,1
              CMP       SI,BX
              JGE       ADD_DI      ;已比到最后一个数,则进行下一次的冒泡
              JMP       COMPARE     ;否则继续比较下一组数
   EXCHANGE:  MOV       AL ,[SI]
  相关解决方案