Ensamblador
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 el primernúmero debe ser mayor que el segundo
2.
OBJETIVOS
Al término de esta práctica el alumno podrá:
2.1. 2.2. 2.3.
Trabajar con rutinas aritméticas multidígito Realizar operaciones básicas y exhibir el resultado Hacer que un programa sea más robusto, es decir, que no falle.
3.
DESARROLLO
3.1.
Capturar los siguientes módulos con el nombre MBIN.ASM, ensamblarlo y meterlo a la libreríaREM.
“CUATRO OPERACIONES FUNDAMENTALES EN NÚMEROS DE 8 BYTES”
%TITLE
IDEAL DOSSEG MODEL DATASEG DQ 0 DQ 0’ DQ 0 DQ 0,0 0,0
small
Ent1 Ent2 Salt1 Salt2
;variable para 64 bits ;ídem ;ídem ;para 128 bits
doble dd
CODESEG PUBLIC PUBLIC
SumaBin,RestaBin,MultiBin,DivideBin,CompBin MbinAsc,MbinAscD,CopiaBin,EntraBin
AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIÓN: PROFESOR PABLOFUENTES RAMOS
11-1
LENGUAJE ENSAMBLADOR 80386
PRÁCTICA 11
;SumaBin ; ;Entrada: ; ; ;Salida: ;Registros:
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
PROC
SumaBin push si di bx cx ax cx,4
;salva todo ;pone número de palabras ;limpia CF ;trae palabradel primer número ;apunta a siguiente palabra ;suma palabra de segundo número ;apunta a siguiente palabra ;pone palabra resultante ;apunta a siguiente palabra
mov clc @@10: mov inc inc adc inc inc mov inc in loop pop ret
ax,[si] si si ax,[di] di di [bx],ax bx bx @@10 ax cx bx di si SumaBin
;recupera ;retorno
ENDP
;RestaBin ; ;Entrada: ; ; ;Salida: ;Registros:
RESTA DOS NÚMEROSBINARIOS DE 64 BITS 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 afectan según resultado Ninguno
PROC
push mov clc @@10: mov in inc sbb pushf inc inc mov inc inc
RestaBin si di bx cx ax cx,4
;Salva todo ;resta cuatro palabras ;borra “préstamo” ;trae palabra desegundo número ;apunta a siguiente palabra ;sustrae palabra ;salva banderas ;apunta a siguiente palabra ;salva resultado ;apunta a siguiente palabra
ax,[di] di di ax,[si] si si [bx],ax bx bx
AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIÓN: PROFESOR PABLO FUENTES RAMOS
11-2
LENGUAJE ENSAMBLADOR 80386
PRÁCTICA 11
popf loop pop ret
;recupera banderas
@@10 ax cx bx di si RestaBinMULTIPLICA DOS NÚMEROS BINARIOS DE 64 BITS SI = dirección del primer factor DI = dirección del segundo factor BX = dirección para resultado Resultado de 128 bits Ninguno ;repone
ENDP
;MultiBin ; ;Entrada: ; ; ;Salida: ;Registros:
PROC
;
MultiBin push si di bx cx ax
Limpia área de resultado
;salva todo
push mov mov cld @@10: mov inc inc loop pop mov @@20: push mov inc inc
bxx,0 cx,8
;salva apuntador ;pone ceros ;es de doble precisión ;hacia delante ;limpia una palabra ;apunta a siguiente palabra ;16 bytes ;recobra dirección ;trae número de palabras ;salva contador externo ;trae palabra del primer factor ;apunta a siguiente palabra
[bx],ax bx bx @@10 bx cx,4 cx dx,[si] si si
push bx di mov pop mov
;
;salva registros durante lazo interno ;pone número depalabras ;restaura directorio a dividendo ;SI apunta a divisor temporal
cx,4 di si,offset Sal2
inicia contador de corrimientos
mov
;
cx,1
;conteo de uno
normaliza divisor…
@@10: test jnz call
[word si+14],8000h @@20 CorreI
;prueba bit más significativo ;sale si ya normalizado ;corre a la izquierda si no 11-3
AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIÓN: PROFESOR...
Regístrate para leer el documento completo.