//Programa que multiplica por dos los números de un array DATOS SEGMENT fuente dw 05h,02h destino dw 2 dup (?) DATOS ENDS PILA SEGMENT STACK 'stack' db 128 dup(?) PILA ENDS CODIGO SEGMENT assume cs:codigo,ds:datos,ss:pila ppal proc far push ds ;Dirección de retorno al PSP sub ax,ax push ax mov ax,datos ;Inicialización del registro DS mov ds,ax mov ax,offset fuente push ax mov ax,offset destino push ax call producto retf ppal endp producto proc push ax push bx push si push di push bp mov bp,sp mov si,14[bp] //Recuperamos el primer vector mov di,12[bp] //Recuperamos el segundo vector xor bx,bx bucle:mov ax,[si][bx] shl ax,1 //Multiplicamos por dos mov [di][bx],ax add bx,2 cmp bx,4 jne bucle xor bx,bx mostrar:mov ax,[di][bx] mov ah,9 mov dx, offset ax int 21h cmp bx,2 jne mostrar pop bp pop di pop si pop bx pop ax ret 4 producto endp CODIGO ENDS END PPAL //Si en este caso quisiéramos multiplicar por cualquier otro valor... //Ejemplo para multiplicar por 3 mov cx,3 mul cx