2017-02-16 63 views
-1

所以我刚开始在我的大学里学习8086,我正在尝试在汇编中实现气泡排序。这里的问题似乎是,3245和2563的比较产生一个进位,因此它不应该因此而改变。当它真的不应该生产? (8086汇编)

3245 
- 2563 
______ 
    0CE2 
______ 

代码: -

data segment 
array dw 1535h,3245h,2563h,5632h 
data ends 
code segment 
start: assume cs:code, ds:data 
mov dx,data 
mov ds,dx 
mov bx,0004h 
step1: lea si,array 
mov dx,bx 
dec dx 
mov cx,dx 
jz lbl 
step: mov ax,[si] 
cmp ax,[si+1] 
jc down 
xchg ax,[si+1] 
xchg ax,[si] 
down: add si,2 
loop step 
dec bx 
jnz step1 
lbl: mov ax,4c00h 
int 21h 
code ends 
end start 

出了什么问题?请原谅,因为我只是想学习这个概念。

+3

你确定你想'[SI + 1]'和'不[SI + 2]'? –

+2

所有'[si + 1]'都是错误的,大概你的意思是'[si + 2]'得到下一个元素。每个字是2个字节。 PS:学习使用调试器。 – Jester

+1

上帝该死的我很愚蠢。谢谢@SamiKuhmonen –

回答

0

【解析】

全部替换[SI + 1]与[SI + 2]