读书人

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

发布时间: 2013-11-11 14:02:17 作者: rapoo

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

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

读书人网 >汇编语言

热点推荐