主题:[讨论]帮我看看显示不出是什么原因??能回答者有分送哦!!!
痛苦并快乐的
[专家分:30] 发布于 2006-10-31 22:37:00
本人刚开始学习汇编,遇到一道题目,
对几个数3,-4,5,8,-9,28进行从大到小的排序,并显示(要求用冒泡法)
我编的程序如下。编译的时候出错了,请大侠指点哈,在下感激不尽!!
data segment
m dw 6,-2,8,48,-4
n equ ($-m)/2
data ends
code segment
assume cs:code ds:data
start: mov ax,data
mov ds,ax
mov cx,n
dec cx
loop1: mov dx,cx
mov si,0
mov bx,si
loop2: mov ax,m[bx]
cmp ax,m[bx+2]
jge l
xchg ax,m[bx+2]
mov m[bx],ax
l: add bx,2
dec cx
jne loop2
add si,2
mov cx,dx
loop loop1
mov ah,4ch
int 21h
code ends
end start[em2][em2]
回复列表 (共10个回复)
沙发
密码注册 [专家分:350] 发布于 2006-10-30 23:34:00
assume cs:code ds:data
兄弟,你这里的定义里头少了一个逗号。
assume cs:code, ds:data
编译通过,俺没仔细看你的程序,不知道内容对不。
板凳
Dancing [专家分:70] 发布于 2006-10-31 00:22:00
运行没输出
3 楼
痛苦并快乐的 [专家分:30] 发布于 2006-10-31 12:27:00
不能显示是什么原因?
是不是2号功能没用对啊?我不是很会用,请高手赐教!
4 楼
wantie [专家分:380] 发布于 2006-11-05 01:32:00
??请问哪里用了2 int 10
5 楼
windychen00 [专家分:40] 发布于 2006-11-09 16:28:00
你的循环结构不行``````好象没有结尾定义
6 楼
Dancing [专家分:70] 发布于 2006-11-09 19:03:00
输出字符串?
可以用mov ah,09h
还有mov si,0
mov bx,si
啥用意?
直接mov bx,0不行?
偶也是菜鸟^^
7 楼
痛苦并快乐的 [专家分:30] 发布于 2006-11-12 22:44:00
我改了一下还是没有
汗!!!
没有高手了吗难道?
8 楼
wantie [专家分:380] 发布于 2006-11-13 13:31:00
不是吧!都这么久了,还在期待...
帮你顶
9 楼
天空未蓝 [专家分:360] 发布于 2006-11-13 13:40:00
虽然运行上没什么问题,但这段程序错误好多。。。
不说思路上的错误,只说程序上的错误
1、mov si,0
mov bx,si
同样没看明白是什么意思。这里用si就可以了,在附值给bx就是多此一举了。
2、jne loop2
。。上面没有比较指令,怎么能实现转移。应该在语法上没什么问题,所以当你MASM的时候,没报错。
3、mov dx,cx
mov cx,dx
我想LZ的原意是保存扫描次数吧?这用堆栈指令更好
push cx
pop cx
4、dec cx
估计是LZ认为执行一次LOOP,就要将CX的循环次数减1,以保证LOOP能完成循环
其实不是,CX已经有扫描次数了,在循环到规定次数就结束了,不用在程序将cx内的附值减1
5、最关键的是LZ没有进行是否已经排序的判断。。。无尽的循环了。。。
10 楼
痛苦并快乐的 [专家分:30] 发布于 2006-11-14 21:06:00
感谢楼上的兄弟指点!!
我来回复