-4

アレイAとアレイBが設定されました。プロシージャは値Vを取得し、その値が配列Bに存在するかどうかを返します。含まれている場合-インデックスをPに格納し、そうでない場合は、-1をPに格納します。プログラムは次のデータで開始する必要があります。

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

(次のオプションで使用されるフラグイン)

4

1 に答える 1

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
于 2013-03-12T22:50:09.730 に答える