2017-02-16 20 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]