Ensamblador

Solo disponible en BuenasTareas
  • Páginas : 15 (3623 palabras )
  • Descarga(s) : 0
  • Publicado : 27 de noviembre de 2011
Leer documento completo
Vista previa del texto
LENGUAJE ENSAMBLADOR 80386

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...
tracking img