; AND logico tra i singoli byte di serie1 con serie2; risultato in serier
data segment
serie1 db 0aah, 0cdh, 1eh, 34h, 32h, 0f4h, 59h, 0d3h ;variabile di 8 byte inizializzati rispettivamente con 0aah, 0cdh,…
serie2 db 0deh, 65h, 7fh, 8ah, 0d4h, 32h, 69h, 0feh ;variabile di 8 byte
serier db 8 dup(?) ;DUP (duplicate) 8 byte non inizializzati (?): valore indefinito
pkey db “press any key…$”
ends
stack segment
dw 128 dup(0)
ends
code segment
start:
; set registri di segmento
mov ax, data
mov ds, ax
mov es, ax
lea si,serie1 ;in SI indirizzo di serie1
lea bx,serie2 ;in BX indirizzo di serie2
mov di,offset serier ;in DI indirizzo di serier
ciclo:
mov al,[si] ;in AL valore contenuto nella cella di indirizzo [SI]
and al,[bx] ;AND del valore contenuto in AL con il valore contenuto
;nella cella di indirizzo [BX] ; risultato in AL
mov [di],al ;il valore di AL viene copiato nella cella di indirizzo [DI]
inc si ;incremento degli indirizzi
inc bx
inc di
cmp si,08d
jne ciclo ;cicla fino a quando non si sono presi tutti gli 8 byte
;——– operazioni di chiusura
lea dx, pkey
mov ah, 9
int 21h ; output della stringa di indirizzo ds:dx
; aspetta la pressione di un tasto
mov ah, 1
int 21h
mov ax, 4c00h ; ritorno al sistema operativo
int 21h
ends
end start