当前位置: 代码迷 >> 汇编语言 >> 下面的汇编程序如何不能实现输出呢
  详细解决方案

下面的汇编程序如何不能实现输出呢

热度:192   发布时间:2016-05-02 04:47:34.0
下面的汇编程序怎么不能实现输出呢?
本帖最后由 yf924092 于 2013-10-20 06:48:41 编辑
DATAS  SEGMENT
DB  2,5,6,8,3,7,4,9,2,6,1
DATAS  ENDS

stack segment

dw 8 dup(0)

stack ends

CODES  SEGMENT
     ASSUME    CS:CODES,DS:DATAS
START:
     
     MOV AX , DATAS
     MOV DS , AX
     mov di , 0
     mov ax , stack
     mov ss , ax
     mov sp , 10h
     ;输出原来排序
     mov  cx, 11
     mov  bx,0
     call label2
     ;把DATAS中的数从小到大排序

     mov cx , 11
     mov si , 10
     call SORT
 
     ;换行
      
     mov dl, 10
     
     MOV  AH,6
     inc di
     INT  21H
     mov dl, 13
    
     MOV  AH,6
     INT  21H
     
     ;输出新排序
       
     mov  cx, 11
     mov  bx,0
     call label2
     
     MOV  AH,4CH
     INT  21H
     
 
;-------------------------------------------------------------------------------
;功能:将数据段中的数据由小到大排序
;参数:ds:si指向数据段,cx代表数据段的长度
;返回:ds:si指向数据段
;------------------------------------------------------------------------------
 sort:
mov dx , cx
dec dx
sort_loop1:
push cx
dec cx
mov si , dx
      sort_loop2:
      mov al , ds:[si]
      mov bl , ds:[si-1]
      cmp al , bl
      jnb s
      mov ds:[si-1] , al
      mov ds:[si] , bl 
      s:
dec si
loop sort_loop2
     pop cx
     loop sort_loop1
 
     ret
     

     ;输出排序子程序
 
   
label2:  

     mov dl, [bx]
     add dl, 30H
     MOV  AH,6
     INT  21H
     INC BX
     loop label2
     
     ret
     

      ;ret    
   
   
     
CODES  ENDS
    END   START

我在调试的中看见已经将数据段中的数据排好序,可就是输不出来,怎么回事呢?求助啊
汇编 排序 输出

------解决方案--------------------
堆栈开的好小
------解决方案--------------------
排序功能不对吧?看到的好像还是没排过的吗,输出,倒是有的唉。