-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
問題のようですか?私はただの概念を学ぼうとしているので、間違いを許してください。
あなたは '[SI + 1]'はなく '[SI + 2]'よろしいですか? –
'[si + 1]'は間違っています。おそらく '[si + 2]'は次の要素を得ることを意味していました。各単語は2バイトです。 PS:デバッガの使い方を学んでください。 – Jester
私はばかです。おかげさま@SamKuhmonen –