-1
Итак, я только начал изучать 8086 в своем колледже, и я пытаюсь реализовать сортировку пузыря в сборке. Проблема здесь заключается в том, что сравнение 3245 и 2563 приводит к переносу, когда оно не должно, следовательно, значения не меняются.Carry производится, когда это действительно не должно быть? (Сборка 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]', а не '[си + 2]'? –
Все '[si + 1]' ошибочны, предположительно вы имели в виду '[si + 2]' для получения следующего элемента. Каждое слово - 2 байта. PS: научитесь использовать отладчик. – Jester
Черт побери, я глуп. Спасибо @SamiKuhmonen –