Suma Y Retsa Ded Dos Numeros De Hasta 20 Digitos
PRÁCTICA 11
PRÁCTICA 11
SUMA, RESTA, MULTIPLICACIÓN Y DIVISIÓN DE DOS NÚMEROS
ENTEROS POSITIVOS DE HASTA 20 DÍGITOS DECIMALES
1.
INTRODUCCIÓN
Mediante esta práctica, trabajaremos con números binarios de hasta
veinte dígitos decimales y haremos las operaciones básicas de suma,
resta, multiplicación y división de dos números enteros positivos,
donde elprimer número debe ser mayor que el segundo
2.
OBJETIVOS
Al término de esta práctica el alumno podrá:
2.1.
2.2.
Realizar operaciones básicas y exhibir el resultado
2.3.
3.
Trabajar con rutinas aritméticas multidígito
Hacer que un programa sea más robusto, es decir, que no falle.
DESARROLLO
3.1.
%TITLE
Capturar los siguientes módulos con el nombre MBIN.ASM,ensamblarlo y
meterlo a la librería REM.
“CUATRO OPERACIONES FUNDAMENTALES EN NÚMEROS DE 8 BYTES”
IDEAL
DOSSEG
MODEL
Ent1
Ent2
Salt1
Salt2
small
DATASEG
DQ
0
DQ
0’
DQ
0
DQ
0,0
doble dd
;variable para 64 bits
;ídem
;ídem
;para 128 bits
0,0
CODESEG
PUBLIC
PUBLIC
SumaBin,RestaBin,MultiBin,DivideBin,CompBin
MbinAsc,MbinAscD,CopiaBin,EntraBin
AUTOR: PROFESORSALVADOR SAUCEDO FLORES
EDICIÓN: PROFESOR PABLO FUENTES RAMOS
11-1
LENGUAJE ENSAMBLADOR 80386
;SumaBin
;
;Entrada:
;
;
;Salida:
;Registros:
PROC
SUMA DE DOS NÚMEROS BINARIOS DE 64 BITS
SI = dirección del primer número
DI = dirección del segundo número
BX = dirección del resultado
Resultado donde se pedía
Ninguno
SumaBin
push si di bx cx ax
mov
clc
@@10:
movinc
inc
adc
inc
inc
mov
inc
in
loop
pop
ret
PRÁCTICA 11
;salva todo
cx,4
;pone número de palabras
;limpia CF
ax,[si]
si
si
ax,[di]
di
di
[bx],ax
bx
bx
@@10
;trae palabra del primer número
;apunta a siguiente palabra
ax cx bx di si
;recupera
;retorno
;suma palabra de segundo número
;apunta a siguiente palabra
;pone palabra resultante
;apunta asiguiente palabra
ENDP
SumaBin
;RestaBin
;
;Entrada:
;
;
;Salida:
;Registros:
RESTA DOS NÚMEROS BINARIOS DE 64 BITS
PROC
push
mov
clc
@@10:
mov
in
inc
sbb
pushf
inc
inc
mov
inc
inc
SI = dirección del primer número (sustraendo)
DI = dirección del segundo número (minuendo)
BX = dirección del resultado (segundo – primero)
Resultado en su lugar, banderas se afectansegún resultado
Ninguno
RestaBin
si di bx cx ax
;Salva todo
cx,4
;resta cuatro palabras
;borra “préstamo”
ax,[di]
di
di
ax,[si]
;trae palabra de segundo número
;apunta a siguiente palabra
si
si
[bx],ax
bx
bx
AUTOR: PROFESOR SALVADOR SAUCEDO FLORES
EDICIÓN: PROFESOR PABLO FUENTES RAMOS
;sustrae palabra
;salva banderas
;apunta a siguiente palabra
;salvaresultado
;apunta a siguiente palabra
11-2
LENGUAJE ENSAMBLADOR 80386
popf
loop
pop
ret
PRÁCTICA 11
;recupera banderas
@@10
ax cx bx di si
;repone
ENDP
RestaBin
;MultiBin
;
;Entrada:
;
;
;Salida:
;Registros:
MULTIPLICA DOS NÚMEROS BINARIOS DE 64 BITS
PROC
;
SI = dirección del primer factor
DI = dirección del segundo factor
BX = dirección pararesultado
Resultado de 128 bits
Ninguno
MultiBin
push si di bx cx ax
;salva todo
Limpia área de resultado
push
mov
mov
cld
@@10:
mov
inc
inc
loop
pop
bx
x,0
cx,8
;salva apuntador
;pone ceros
;es de doble precisión
;hacia delante
[bx],ax
bx
bx
@@10
bx
;limpia una palabra
;apunta a siguiente palabra
mov
@@20:
push
mov
inc
inc
cx,4
;trae númerode palabras
cx
dx,[si]
si
si
;salva contador externo
;trae palabra del primer factor
;apunta a siguiente palabra
;16 bytes
;recobra dirección
push bx di
mov
pop
mov
;
;salva registros durante lazo interno
;pone número de palabras
;restaura directorio a dividendo
;SI apunta a divisor temporal
inicia contador de corrimientos
mov
;
cx,4
di
si,offset Sal2...
Regístrate para leer el documento completo.