introduce dos vectores y obtiene el vector interseccion

vector interseccion

introduce dos vectores y obtiene el vector interseccion

Búsqueda de ejemplos en Ensamblador
;Autor luis manuel
;URL

;ledesma carrillo luis manuel
;informatica basica
;programa para encontrar el vector interseccion de 2 vectores
.model small
.stack
.data
 v DB 20 dup(?)
 v1 DB 20 dup(?)
 n DB ?
 m DB '  "programa para determinar el vector interseccion de 2 vectores" $'
 m0 DB 13,10,'introduce el tamaño de los vectores: $'
 m1 DB 13,10,'introduce el vector 1: $'
 m2 DB 13,10,'introduce el vector 2: $'
 m3 DB 13,10,'el vector interseccion es: $'
 m4 DB 13,10,' para realizar otra operacion marque "s" para salir cualquier tecla: ','$'
  n1 dw ?
 m5 DB 13,10,'la tecla precionada no es numero $'
.code
main:
;limpiar pantalla
    mov ah,00h
    mov al,03h
    int 10h
;mensaje del programa
    mov ax,@data
    mov ds,ax
    lea dx,m
    mov ah,09
    int 21h
;mensaje  para introducir tamaño de los vectores
   lea dx,m0
   mov ah,09
   int 21h
;introducir tamaño de los vectores
   mov ah,01h
   int 21h
;verificar si el numero se encuentra en el rango 0 a 9
        cmp al,030h  
        js s
        cmp al,03ah  
        jns s
;ajustando el valor de al para almacenarlo en n
   sub al,30h
   mov n,al
;almacenando el valor de al n1
   mov n1,ax
;limpiando parte alta del registro n1
   and n1,0fh
   
;mensaje 1 para introducir el vector 1
   lea dx,m1
   mov ah,09
   int 21h
mov dl,'['
mov ah,02h
int 21h

;********
;ciclo para introducir los vectores
mov cl,n
mov si,0
r:
mov ah,01h
int 21h
mov v[si],al
inc si
loop r
;***********

mov dl,']'
mov ah,02h
int 21h

;mensaje 2 para introducir el vector 2
   lea dx,m2
   mov ah,09
   int 21h
mov dl,'['
mov ah,02h
int 21h

;****************
;2do ciclo para introducir los vectores
mov cl,n
mov si,0
rr:  ;20
mov ah,01h
int 21h
mov v1[si],al
inc si
loop rr
;**************

mov dl,']'
mov ah,02h
int 21h
jmp segir

; doble salto de regreso
;*************
ma:       ;***
jmp main  ;***
;*************
;doble salto de ida
;***********
s:       ;**
jmp s1   ;**
;***********
segir:
;mensaje 3 imprimir el vector interseccion
   lea dx,m3
   mov ah,09
   int 21h

mov dl,'['
mov ah,02h
int 21h

;**********************
;ciclo para comparar y obtener el vector intercepcion
   mov cl,n
   mov si,0
rrr:
   mov al,v[si]
   mov di,0
rrrr:
     mov bl,v1[di]
     inc di
     cmp al,bl
     jz inter
     jmp reg
reg:
     cmp di,n1
     jnz rrrr
     jmp sa
inter:
   mov dl,al
   mov ah,02h
   int 21h
   jmp reg
sa:
   inc si
loop rrr
;************


mov dl,']'
mov ah,02h
int 21h
jmp salir
s1:
;mensaje para advertir sobre la tecla presionada no es numero
        lea dx,m5
        mov ah,09h
        int 21h
salir:
;mensaje para realizar otra operacion
        lea dx,m4
        mov ah,09h
        int 21h
;ingresar las desicion
       mov ah,01h
       int 21h
       cmp al,'s'
       jz ma
mov ah,4ch
int 21h
end main