;Programa que pasa los números de una tabla a otra sumandoles la posicion que tiene ;En este ejemplo quedaria: 05 + 0 y 02 + 1 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 sub ax,ax push ax mov ax,datos mov ds,ax mov ax,offset fuente push ax mov ax,offset destino push ax call pasar retf ppal endp pasar proc push ax push bx push si push di push bp mov bp,sp mov si,14[bp] ;Recuperamos la dirección de la tabla fuente mov di,12[bp] ;Recuperamos la dirección de la tabla destino xor bx,bx bucle: mov ax,[si][bx] add ax,bx mov [di][bx],ax add bx,2 ;La tabla es de tipo word cmp bx,4 jne bucle pop bp pop di pop si pop bx pop ax ret 4 pasar endp CODIGO ENDS END PPAL ; Operaciones diferentes al pasar a destino bucle: mov ax,[si][bx] shl ax,1 ;Multiplicamos por dos mov cx,3 ;Multiplicamos por tres mul cx