
; -------------------------------------------------------------                                                      
;
; A. Veneziani - Svolgimento esercizio 3.3 a pagina 243
;       
; -------------------------------------------------------------

; segmento dati
Dati    SEGMENT
        ; prime due serie di numeri  
        Serie1  DB 0AAh, 0CDh, 1Eh, 34h, 32h, 0F4h, 59h, 0D3h
        Serie2  DB 0DEh, 65h, 7Fh, 8Ah, 0D4h, 32h, 69h, 0FEh
        ; Serie relativa ai risultati dell' AND bit a bit 
        ; sulle prime due serie
        SerieR  DB 8 DUP(?) 
Dati    ENDS               

; segmento codice
Codice  SEGMENT             
        ASSUME CS:Codice,DS:Dati 
        ; settaggio del valore di DS
Inizio: MOV AX,Dati
        MOV DS,AX       
                                    
        ; vengono individuati gli indirizzi (primo elemento)
        ; delle varie serie di dati                         
        
        ; l'indirizzo di inizio della prima serie e' memorizzato in SI                               
        LEA SI,Serie1                     
        ; l'indirizzo di inizio della seconda serie è inserito in BX
        LEA BX,Serie2           
        ; Infine in DI viene messo l'indirizzo della serie di dati
        ; risultante dall AND bit a bit delle prime due (Serie1 e Serie2)
        MOV DI,Offset SerieR

Ciclo:                                                                   
        ; punta al byte indicato da SI
        MOV AL,[SI]                   
        ; effettua un AND bit a bit con il dato in AL
        AND AL,[BX]                                  
        ; effettua uno spostamento del risultato dell' AND bit a bit
        ; nella locazione puntata da DI
        MOV [DI],AL                    
        ; incrementa tutti i registri puntatori a memoria
        INC SI
        INC BX
        INC DI                                           
        ; controlla se SI ha raggiunto il valore 8
        CMP SI,08d
        JNE Ciclo
Codice  ENDS

END   Inizio

      