2017-02-16 1 views
-1

저는 방금 대학에서 8086을 배우기 시작했고 어셈블리에서 버블 정렬을 구현하려고합니다. 여기에있는 문제는 3245와 2563을 비교하면 값이 변하지 않아야 캐리가 생성된다는 것입니다.캐리가 실제로 생산해서는 안되는 때 생산 되었습니까? (8086 assembly)

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 바이트입니다. 추신 : 디버거를 사용하는 방법을 배우십시오. – Jester

+1

젠장, 나는 어리 석다. 감사합니다 @ SamiKuhmonen –

답변

0

[해결]

은 모두 바꾸기 [SI + 1]과 [SI + 2]

관련 문제