哪位大大看一下我的汇编代码哪里错了

来源:百度知道 编辑:UC知道 时间:2024/06/05 17:00:14
;已只一个数组,要求按从大到小排序
data segment
table dw 1,2,3,4,5
data ends

code segment
main proc far
assume cs:code,ds:data
start:
push ds
xor ax,ax
push ax
mov ax,data
mov ds,ax
;//
mov cx,5
next1:
dec cx
mov di,cx
mov bx,0
next2:
mov ax,table[bx]
cmp ax,table[bx+2]
jnb next3
xchg ax,table[bx+2]
mov table[bx],ax
next3:add bx,2
loop next2
mov cx,di
loop next1
ret
main endp
code ends
end start
我觉得没错,但是不能运行,它就自动退出了

你是不是用 masm for windows 去做编译?这个软件会在一些地方出现问题,你直接到 dos 里面做编译,就不会出现问题了。

你以上的程序我做过一次编译,没有错(只是编译方面)。

昨天在hi聊完后就为你重写了一个,可是我放不上来(不知道百度出了啥错了),现在不传了,就跟你说说你出错的地方:

;//
mov cx,5
next1:
dec cx

出错的地方就是 DEC CX:你没对 cx=0时做出处理,所以,当CX=0时, loop next2 就会把 cx 变成 FFFFh, 造成一个错误的回路。

next3:add bx,2
(这里)
loop next2
中间少了dec cx