首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

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

2013-11-11 
下面的汇编程序怎么不能实现输出呢?本帖最后由 yf924092 于 2013-10-20 06:48:41 编辑DATASSEGMENTDB2,5,6

下面的汇编程序怎么不能实现输出呢?
本帖最后由 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

我在调试的中看见已经将数据段中的数据排好序,可就是输不出来,怎么回事呢?求助啊 汇编 排序 输出
[解决办法]
堆栈开的好小
[解决办法]
排序功能不对吧?看到的好像还是没排过的吗,输出,倒是有的唉。

热点排行