2013-03-12 5 views
-4

어레이 A와 어레이 B가 설정되었습니다. 프로 시저에 값 V가 주어지고 값이 배열 B에 있으면 반환됩니다. 이 아닌 경우 경우 저장 -1 P. 에서 프로그램은 다음과 같은 datas로 시작해야, P의 인덱스를 수행 - 저장 : 여기ASM- 프로 시저 작성

ARR_B DB 100 DUP() 
ARR_A DB 10 DUP() 
V DB ? 
P DB ? 

우리가 무슨 짓을했는지 :

TEST1 PROC 
; Chek if the variable of V found in ARR_B. 
MOV SI,0 
MOV DX,0 
MOV Flag,0 
MOV AL,1H 
NEG AL 
MOV CX,9H 
GO: 
    MOV DL,ARR_B[SI] 
    CMP V,DL 
    JE X 
    INC SI 
    LOOP GO 
    MOV P,AL 
    JMP END1 
X: MOV DX,SI 
    MOV P,DL 
     INC FLAG 
END1: NOP 
    RET 
TEST1 endp 

(다음 옵션을 사용에 플래그)

+0

질문을 읽을 수 있도록 형식을 지정할 수 있습니다. –

+0

여기에 질문이 있습니까? –

답변

0

당신은 일반적으로 rep scasb를 사용하여이 같은 검색을 수행 할 것 :

test1 proc 
    mov P, 0ffffh ; for now, assume it won't be found 
    mov al, V    ; what we're going to look for 
    mov di, offset array_b ; where we're going to look 
    mov cx, size array_b  ; how many items to search 
    repnz scasb    ; do the search 
    jnz done     ; Z flag clear = not found 
    sub di, offset array_b ; found: compute offset into array_b 
    mov P, di    ;  and save it 
done: 
    ret 
+0

도움 주셔서 감사합니다. – Michael

관련 문제