Ciao
credo che l'esercizio serva a farti imparare come si gestisca l'indirizzamento alla memoria.
comunque il confronto di perse va bene ma il problema:
MOV BX, VAL ; VALORE DI OP1 (non si può fare perchè hai un registro a 16 bit mentre val è definito come un byte)
MOV SI,OFFSET VECT ; ok
CICLO: MOV AX,[SI] ;qui ti serve un byte o una word ?
quello che dovresti fare è :
xor bx,bx
mov bl,val
mov si,offset vect
xor ax,ax
ciclo: mov al,byte ptr [si]
cmp ax,bx
.......
;resto va bene
allora per spiegarti:
XOR BX,BX ;CANCELLA IL REGISTRO QUINDI AVREMO BH=0 BL=0
MOV BL,VEL ;CARICHIAMO IL VALORE DI VECT IN BL QUINDI AVREMO BH=0 BL=VALORE DI VAL.
MOV SI,OFFSET VECT ;SI=LOCAZIONE DI INIZIO vettore
XOR AX,AX ; CANCELLO REGISTRO AX E NECESSARIA PERCHE' IN QUESTO MOMENTO AX=indirizzo SEGMENTO DATI. MENTRE NOI VOGLIAMO UTILIZZARLO PER IL CONFRONTO.
CICLO: MOV AL,BYTE PTR [SI] ;SIGNIFICA PRENDI UN DATO DALLA LOCAZIONE DI MEMORIA INDICIZATA DA SI E METTILO IN AL AVREMO AH=0 AL=DATO
CMP AX,BX ; CONFRONTA I REGISTRI AX E BX AVREMO AH=0 AL=DATO BH=0 BL=VAL
spero che hai capito
se c'è qualcosa che non ti è chiaro chiedi pure