2013-10-06 3 views
0

NASM을 사용하고 있습니다. 내 cmp 문에 몇 가지 문제가 있다고 생각합니다, 그것은 배열의 첫 번째 인덱스와 키 사이의 간단한 비교입니다, 둘 다 Y를 인쇄해야하므로 동일하지만 N을 인쇄하고 있습니다. 어떻게 해결할 수 있습니까?cmp 문에 문제가 있습니까?

jmp start 
array: dw 1,2,3,4,5 
key: dw 1 
start: 

cmp [array],word key 
jne not_found 
jmp found 

found: 
mov dx , 'Y';print Y if key is found 
jmp end 

not_found: 
mov dx , 'N';print N if key is not found 

end: 
mov ah , 2h ; 
int 21h ; 
mov ah , 0x4c 
int 0x21 ; synonymous to return 0; 
+0

당신은 key''의 주소를 배열의 첫 번째 요소를 비교한다. – zch

+0

배열의 첫 번째 요소를 키와 어떻게 비교할 수 있습니까? – Taimour

답변

1

어떻게 키 배열의 첫 번째 요소를 비교할 수 있는가? 그런데


; put the value of key in the ax register 
mov ax,[key] 
; compare the first value in array against ax (i.e. the key) 
cmp [array],ax 

, 대신

mov ah , 0x4c 
int 0x21 ; synonymous to return 0; 

당신은 사용할 수 있습니다

int 0x20 ; terminate program with errorlevel=0 
+0

도끼 열쇠의 이동 가치가 문제를 해결하지 않습니다. 그것은 여전히 ​​N 인쇄입니다. – Taimour

+0

나를 위해 잘 작동합니다. 나는 출력으로 Y를 얻는다. 'cmp'도 변경 했습니까? – Michael

+0

예, cmp가 바뀌었지만 여전히 N이됩니다. – Taimour

관련 문제