segmento SEGMENT ASSUME DS:segmento ORG 100h principal PROC NEAR mov ax, Numero push ax mov ax, OFFSET Producto push ax call Multiplica mov ah, 4ch int 21h principal ENDP Multiplica PROC NEAR push bp ; se salva BP mov bp, sp ; se hace que BP apunte a la zona de par metros sub sp, 2 ; se crea espacio para una variable local de 2 bytes push si ; se salva SI mov si, [bp+4] ; se mueve a SI el desplazamiento del campo resultado mov ax, [bp+6] ; se mueve a AX el n£mero que va a ser multiplicado por 9,5 shr ax, 1 ; se divide el n£mero entre 2 mov [bp-2], ax ; se guarda el resultado en la variable local mov ax, [bp+6] ; se mueve a AX de nuevo el n£mero que va a ser multiplicado por 9,5 shl ax, 1 ; se multiplica AX por 8 por el m‚todo de los desplazamientos shl ax, 1 shl ax, 1 add ax, [bp+6] ; se suma el resultado de la multiplicaci¢n con el ; n£mero para obtener el producto de ‚ste por 9 add ax, [bp-2] ; se suma la mitad del n£mero original al resultado de ; multiplicar por 9 mov [si], ax ; se mueve al campo resultado pop si ; se recupera el valor inicial de SI mov sp, bp ; se elimina la variable local pop bp ; se recupera el valor inicial de BP ret 4 ; finaliza el proceso restaurando la pila Multiplica ENDP Numero WORD 1000h Producto WORD ? segmento ENDS END principal