注册 登录
编程论坛 汇编论坛

高手帮忙看看这个程序

zhanglifeng2004 发布于 2005-05-11 23:03, 1051 次点击

;对冒泡排序的改进 data segment number dw 10,3,5,7,8,6,11,13,9,1,15 data ends prognam segment bubble proc far assume cs:prognam,ds:data start: mov ax,data mov ds,ax lea di,number push di

mov si,10 push si

loop1: dec si mov cx,si mov bx,01h

loop2: add di,2 cmp di,16h jz loop3 mov ax,[di] cmp [di+2],ax jae loop2 xchg ax, [di+2] mov [di],ax sub bx,bx shr di,1 mov si,di shl di,1 jmp loop1 loop3: cmp bx,1 je exit exit: pop di pop si jmp printit printit: add di,2 mov dl,[di] mov ah,2 int 21h dec si jnz printit ret bubble endp prognam ends end start 怎样才能把内容送到si中,我得为什么不正确,请高手们帮忙,谢谢了

7 回复
#2
shagpg20082005-05-12 22:03
什么内容啊
#3
LOVELOVE2005-05-12 22:11
good
#4
zhanglifeng20042005-05-13 12:49
对冒泡排序的改进,number第一个元素存放数据个数。把这个元素放到si中,设个标志位bx ,大循环结束标志为bx没有变化,小循环排序,记住最后一次交换的位置,作为下次循环的次数。最后输出。
#5
zhanglifeng20042005-05-13 12:55
应该把
push  di
push  si
改为
push si
push di
先压栈的后弹出
#6
gdgjlxy2005-05-14 17:33
不就压栈错误啊
#7
zhanglifeng20042005-05-14 23:30
我改了一下,但是还是不可以输出.有问题.而且为什么用
 mov si,[di]
si得到的总是地址呀?怎样才能把di的内容送到si中?
#8
爱人2005-05-22 02:19
以下是引用zhanglifeng2004在2005-5-14 23:30:29的发言: 我改了一下,但是还是不可以输出.有问题.而且为什么用 mov si,[di] si得到的总是地址呀?怎样才能把di的内容送到si中?
si 是什么寄存器?一般类容是要放在通用寄存器里的,但,mov ax,di 和mov si,ax 可能行
1