First commit 06/07/1996

This commit is contained in:
2021-09-03 17:40:06 +02:00
commit bf4bcbd4f8
23 changed files with 1754 additions and 0 deletions

61
CDS/EJEMPLO4.ASM Normal file
View File

@ -0,0 +1,61 @@
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<61>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<63>n con el
; n<>mero para obtener el producto de <20>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