Sei sulla pagina 1di 16

LENGUAJE ENSAMBLADOR 80386

PRCTICA 11

PRCTICA 11
SUMA, RESTA, MULTIPLICACIN Y DIVISIN DE DOS NMEROS ENTEROS POSITIVOS DE HASTA 20 DGITOS DECIMALES
1. INTRODUCCIN
Mediante esta prctica, trabajaremos con nmeros binarios de hasta veinte dgitos decimales y haremos las operaciones bsicas de suma, resta, multiplicacin y divisin de dos nmeros enteros positivos, donde el primer nmero debe ser mayor que el segundo

2.

OBJETIVOS
Al trmino de esta prctica el alumno podr:

2.1. 2.2. 2.3.

Trabajar con rutinas aritmticas multidgito Realizar operaciones bsicas y exhibir el resultado Hacer que un programa sea ms robusto, es decir, que no falle.

3.

DESARROLLO
3.1.
Capturar los siguientes mdulos con el nombre MBIN.ASM, ensamblarlo y meterlo a la librera REM.
CUATRO OPERACIONES FUNDAMENTALES EN NMEROS 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 EDICIN: PROFESOR PABLO FUENTES RAMOS

11-1

LENGUAJE ENSAMBLADOR 80386

PRCTICA 11

;SumaBin ; ;Entrada: ; ; ;Salida: ;Registros:

SUMA DE DOS NMEROS BINARIOS DE 64 BITS SI = direccin del primer nmero DI = direccin del segundo nmero BX = direccin del resultado Resultado donde se peda Ninguno

PROC

SumaBin push si di bx cx ax cx,4

;salva todo ;pone nmero de palabras ;limpia CF ;trae palabra del primer nmero ;apunta a siguiente palabra ;suma palabra de segundo nmero ;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 NMEROS BINARIOS DE 64 BITS SI = direccin del primer nmero (sustraendo) DI = direccin del segundo nmero (minuendo) BX = direccin del resultado (segundo primero) Resultado en su lugar, banderas se afectan segn 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 prstamo ;trae palabra de segundo nmero ;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 EDICIN: PROFESOR PABLO FUENTES RAMOS

11-2

LENGUAJE ENSAMBLADOR 80386

PRCTICA 11

popf loop pop ret

;recupera banderas

@@10 ax cx bx di si RestaBin
MULTIPLICA DOS NMEROS BINARIOS DE 64 BITS SI = direccin del primer factor DI = direccin del segundo factor BX = direccin 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

bx x,0 cx,8

;salva apuntador ;pone ceros ;es de doble precisin ;hacia delante ;limpia una palabra ;apunta a siguiente palabra ;16 bytes ;recobra direccin ;trae nmero 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 nmero de palabras ;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 ms significativo ;sale si ya normalizado ;corre a la izquierda si no 11-3

AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIN: PROFESOR PABLO FUENTES RAMOS

LENGUAJE ENSAMBLADOR 80386

PRCTICA 11

inc jmp
;

cx @@10

:cuenta el corrimiento ;sigue hasta normalizar

Lazo para comparar, restar y corre

@@20: call ja call stc jmp @@30: cic @@40: call call loop pop ret

CompBin @@30 Sustrae @@40

;compara divisor contra dividendo ;salta si muy grande ;lo resta si cabe ;nuevo bit de cociente es uno ;salta a fin de lazo ;nuevo bit de cociente es cero

CorreCoc CorreD @@20 ax cx bx di si DivideBin

;mete bit en el cociente ;corre divisor lgicamente

;recobra

ENDP PROC

CorreI push si cx cx,8

;salva registros ;pone contador ;limpia CF ;corre una palabra un bit ;apunta a siguiente palabra ;hace todo el divisor ;repone

mov clc @@10: rcl inc inc loop pop ret

[word si],1 si si @@10 cx si CorreI

ENDP PROC

CorreCoc push bx cx mov cx,4 rcl [word bx],1 inc bx inc bx loop @@10 pop ret cx bx CorreCoc

;salva registros ;precisin sencilla ;corre palabra de cociente una vez ;apunta a siguiente palabra

;restaura

ENDP
;

Rutina local para corregir el divisor lgicamente a la derecha

PROC

CorreD push si cx

;salva registros 11-4

AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIN: PROFESOR PABLO FUENTES RAMOS

LENGUAJE ENSAMBLADOR 80386

PRCTICA 11

add mov clc @@10: rcr dec dec loop pop ret

si,14 cx,8

;apunta a final de divisor temporal ;para doble precisin ;limpia CF ;rota una palabra a la vez ;apunta a siguiente palabra ;para todo el divisor ;repone

[word si],1 si si @@10 cx si CorreD

ENDP
;

Rutina local para sustraer el divisor corrido del dividendo

PROC

Sustrae push si di cx

;salva todo ;limpia acarreo final ;resta ocho palabras ;trae palabra del divisor ;apunta a siguiente palabra ;sustrae de palabra de dividendo ;apunta a siguiente palabra

clc mov @@10: mov inc inc sbb inc inc loop pop ret

cx,8 ax,[si] si si [di],ax di di @@10 cx di si Sustrae

;recupera

ENDP
;CompBin ; ;Entrada: ;Salida: ; ;Registros:

COMPARA DOS NMEROS BINARIOS DE 128 BITS SI apunta a NUM1, DI apunta a NUM2 Registro de banderas se afecta segn comparacin: CMP, NUM1, NUM2 Banderas

PROC
push std add add mov repz pop ret

CompBin si di cx si,14 di,14 cx,8 cmpsw cx di si CompBin

;salva ;compara ms significativo primero ;apunta al final ;dem ;hasta ocho palabras ;compara palabra a palabra ;repone

ENDP

AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIN: PROFESOR PABLO FUENTES RAMOS

11-5

LENGUAJE ENSAMBLADOR 80386

PRCTICA 11

;CopiaBin ; ;Entrada: ;Salida: ; ;Registros:

COPIA UN NMERO BINARIO DE 64 BITS SI apunta a NUM1, DI apunta a NUM2 Registro de banderas se afecta segn comparacin: CMP, NUM1, NUM2 Banderas

PROC

CopiaBin push si di cx cld mov cx,4 rep pop ret P386N movsw cx di si

;salva ;copia hacia delante

;compara palabra a palabra ;repone

;MBinAsc ; ;Entrada: ;Salida: ;Registros:

CONVIERTE UN NMERO BINARIO DE 64 BITS ASCII SI apunta a NUM1, DI apunta a cadena ASCIIZ La cadena ASCIIZ se llena de caracteres ASCII segn nmero Ninguno

PROC
;

MBinAsc push ax bx cx dx si di
Limpia la cadena

;salva

mov mov @@10: mov inc cmp jb


;

al,30h cx,20 [di],al di [dword si+4],10 @@20

;ceros ;conteo de 20 ;pone nulo ;apunta a siguiente byte ;puede usar DIV? ;si, brinca

Lazo eterno

@@20: push si
; Divide por 10

;salva direccin del binario

mov mov mov add @@30: push mov mov div

ebx,0 cx,2 edx,0 si,4 cx eax,[si] ecx,10 ecx

;bandera a cero ;cuatro palabras en nmero ;inicializa residuo ;apunta a final del binario ;salva contador ;trae 16b bits ;divisor de 10 ;divide 11-6

AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIN: PROFESOR PABLO FUENTES RAMOS

LENGUAJE ENSAMBLADOR 80386

PRCTICA 11

mov or sub pop loop mov add dec pop cmp jnz pop ret

[si[,eax ebx,eax si,4 cx @@30 [di],dl [byte di],0 di si ebx,0 @@20 di si dx cx bx ax MBinAsc

;regresa 16 bits

;verifica si cero
;apunta a siguiente palabra ;repone contador

;trae dgito de residuo ;lo hace ASCII ;apunta a siguiente carcter ;restaura direccin de binario ;fue nmero cero? ;repite si no ;recupera

ENDP
;

Efecta divisin mediante corrimientos..

GranDiv: mov xor mov shift: call cmo jb sub add aunno: loop mov add dec pop cmp jnz cmp jnz pop

cx,64 eax,eax ebx,10 Corre96 eax,ebx aunno aunno [word si] shift [di],al [byte di],0 di si [dword si+4],0 GranDiv [dword si],0 GranDiv di si dx cx bx ax Corre96 [dword si] [dword si+4 eax,1 Corre96

;lo hace ASCII ;apunta a siguiente carcter ;restaura direccin de binario ;fue nmero cero? ;repite si no

;recupera

PROC
shl rcl rcl ret

ENDP

AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIN: PROFESOR PABLO FUENTES RAMOS

11-7

LENGUAJE ENSAMBLADOR 80386

PRCTICA 11

;MBinAscD ; ;Entrada: ;Salida: ;Registros:

CONVIERTE UN NMERO BINARIO DE 128 BITS A ASCII SI apunta a NUM1, DI apunta a cadena ASCIIZ La cadena ASCIIZ se llena de caracteres ASCII segn nmero Ninguno

PROC
;

MBinAscD push ax bx cx dx si di
Limpia la cadena

;salva

mov mov @@10: mov inc loop


;

al,30h cx,33 [di[,al di @@10

;ceros ;conteo de 33 ;pone nulo ;apunta a siguiente byte

Lazo eterno

@@20: push si
; Divide por 10

;salva direccin del binario

mov mov mov add @@30: push mov mov div mov or sub pop loop mov dec

bx,0 cx,8 dx,0 si,14 cx ax,[si] cx,10 cx [si],ax bx,ax si,2 cx @@30 [di],di di

;bandera a cero ;ocho palabras en nmero ;inicializa residuo ;apunta a final del binario ;salva contador ;trae 16 bits ;divisor de 10 ;divide ;regresa 16 bits ;verifica si es cero ;apunta a siguiente palabra ;repone contador

;lo hace ASCII ;apunta a siguiente carcter

pop cmp jnz pop ret

si bx,0 @@20 di si dx cx bx ax MBinAscD

;restaura direccin de binario ;fue nmero cero? ;repite si no


;recupera

ENDP

AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIN: PROFESOR PABLO FUENTES RAMOS

11-8

LENGUAJE ENSAMBLADOR 80386

PRCTICA 11

;EntraBin ; ;Entrada: ;Salida: ;Registros:

ENTRA UN NMERO BINARIO DADO EN DECIMAL HASTA DE 18 DGITOS SI = direccin del nmero Dato donde se peda Ninguno

PROC
push call mov mov pop ret

EntraBin ax bx cx di dec64 [si],ebx [si+4],edx di cx bx ax EntraBin

;salva registros ;mete nmero decimal ;lo salva ;recobra

ENDP
;Dec64 ; ;Entrada: ;Salida: ;Registros:

RECIBE DESDE EL TECLADO UN NMERO DECIMAL Y REGRESA 64 BITS Ninguna Binario de 64 bits en DX:BX Ninguno

PROC
push xor mov @@10: mov int sub jl cmp jg call and add adc jmp @@99: pop ret
;

Dec64 ax cx ebx,ebx edx,ebx ah,1 21h al,30h @@99 al,9 @@99 near ptr mten eax,offh. ebx,eax edx,0 @@10 cx ax

;salva registros ;limpia EBX ;y EDX ;mete carcter del teclado ;con DOS ;resta 0 ;salir si no es dgito decimal ;salir si no es dgito decimal ;multiplica por 10 res previa ;Para sumar 32 bits ;suma dgito ;por si es muy grande

;recobra

multiplica por 10 cantidad de 64 bits

mten: shl rcl mov mov shl rcl shl rcl add ebx,1 edx,1 [dword doble],ebx [dword doble+4],edx ebx,1 edx,1 ebx,1 edx,1 ebx,[dword doble]
;por 2 ;salva por 2 ;por 4 ;por 8 ;por 10 11-9

AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIN: PROFESOR PABLO FUENTES RAMOS

LENGUAJE ENSAMBLADOR 80386

PRCTICA 11

adc ret

edx,[dword doble+4] Dec64

ENDP END 3.2. %TITLE

;fin de mdulo MBIN.ASM

Capturar el programa ABIN.ASM, ensamblarlo y crear el programa ejecutable. SUMA, RESTA, MULTIPLICA Y DIVIDE NMEROS BINARIOS

P386N IDEAL DOSSEG MODEL SNACK


; ; ;

small

Programa ABIN.ASM que hace aritmtica binaria. Ensamblarlo con TASM /zi ABIN ligarlo con: TLINK /v ABIN,,,REM

rc nl

EQU EQU

13 10

;ASCII de retorno de carro ;ASCII de nueva lnea

DATASEG DB claveFin 0 DB Este programa encuentra la suma, la resta, el producto, saludos DB el cociente entero y,rc,nl DB su residuo de dos nmeros decimales enteros, teclear DB primeroel mayor de ellos.,rc,nl,0 DB El programa requiere por lo menos un 80386,rc,nl,0 RepCPU fuente destino suma resta multi ResSuma ResResta CadSuma CadResta Apr1er Apr2do ResMulti CadMulti dividendo divisor cociente CadCociente ResCociente CadResiduo ResResiduo DQ DQ DQ DQ DQ DB DB DB DB DB DB DB DB DQ DQ DQ DB DB DB DB
;8 bytes para binario 99898999264 ;dem para destino 17581480361 ;suma en BCD 0 ;resta en BCD 0 2 dup (0) ;resultado de la suma 22 dup (0) ;resultado de resta 22 dup (0) La suma es ..:,0 La resta es...:,0 Teclear primero nmero decimal:,0 Teclear segundo nmero decimal:.0 35 dup (0) El producto es.:,0 0 0 0 El cociente es.:,0 22 dup (0) El residuo es.:,0 22 dup (0)

AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIN: PROFESOR PABLO FUENTES RAMOS

11-10

LENGUAJE ENSAMBLADOR 80386

PRCTICA 11

CODESEG EXTRN EXTRN EXTRN Inicia: mov mov mov call call cmp jae mov call mov int @@10: mov call mov call mov call call mov call mov call call
;

Sumaban:proc,Restaban:proc,MBinASC:proc SacaCadena:proc,NuevaLinea:proc,cpul:proc CopiaBin:proc,DivideBin:proc,MBinAscD:proc,EntraBin:proc

ax,@data ds,ax es,ax NuevaLinea cpul ax,386h @@10 di,offset RepCPU SacaCadena ah,4ch 21h

;inicia DS ;salta lnea ;indaga tipo de CPU ;por lo menos un 80386

;avisa que saldr ;funcin de DOS ;para salir

di,offset saludo SacaCadena di,offset Apr1er SacaCadena si,offset fuente EntraBin NuevaLinea di,offset Apr2do SacaCadena si,offset destino EntraBin NuevaLinea

;bienvenida e instrucciones

;pide nmero mayor ;apunta a buffer de nmero mayor ;recibe los dgitos ;salta lnea ;repite para segundo nmero

;recibe los dgitos ;salta lnea

realiza la operacin de suma..

mov add mov mov adc mov mov mov call mov call mov call call
;

eax,[dword destino] eax,[dword fuente] [dword suma],eax eax,[dword destino+4] eax,[dword fuente+4] [dword suma+4] di,offset ResSuma si,offset Suma MBinASC di,offset CadSuma SacaCadena di,offset ResSuma PoneBlancos SacaCadena

;trae 32 bits ;y los suma ;salva parte baja ;trae 32 bits ;los suma con CF ;salva ;apunta a cadena ASCIIZ ;apunta a suma en binario ;convierte a ASCII ;exhibe letrero de resultado ;de suma ;exhibe dgitos de suma ;elimina algunos ceros

realiza la resta..

call

NuevaLinea

;salta lnea 11-11

AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIN: PROFESOR PABLO FUENTES RAMOS

LENGUAJE ENSAMBLADOR 80386

PRCTICA 11

mov sub mov mov sbb mov mov mov call mov call mov call call
;

eax,[dword fuente] eax,[dword destino] [dword resta],eax eax,[dword fuente+4] eax,[dword destino+4 [dword resta+4] di,offset ResResta si,offset Resta MBinASC di,offset CadResta SacaCadena di,offset RestaBin PoneBlancos SacaCadena

;trae 32 bits ;resta 32 bits ;salva parte baja ;trae 32 bits altos ;resta 32 bits ;salva ;apunta a cadena ASCIIZ ;apunta a resta en binario ;convierte a ASCII ;exhibe letrero de resultado ;de resta ;exhibe dgitos de resta ;omite algunos ceros ;exhibe resta

producto..

call mov mov mov call mov mov call mov call mov call call
;

NuevaLinea si,offset fuente bx,offset multi di,offset destino MultiBin di,offset ResMulti si,offset multi MBinAscD di,offset CadMulti SacaCadena di,offset ResMulti PoneBlancos SacaCadena

;Salta lnea ;apunta a fuente (mayor) ;multi es nuevo destino ;apunta a nmero menor ;multiplica binarios ;apunta a cadena ASCIIZ ;apunta a producto en binario ;convierte a ASCII ;exhibe letrero de resultados ;de multiplicacin ;exhibe dgitos de producto ;omite ceros delanteros ;exhibe producto

divisin

divi: call mov mov mov call mov mov call mov call mov call call call mov mov call mov call NuevaLinea di,offset fuente bx,offset cociente si,offset destino DivideBin di,offset ResCociente si,offset Cociente MbinAsc di,offset CadCociente SacaCadena di,offset ResCociente PoneBlancos SacaCadena NuevaLinea di,offset ResResiduo si,offset fuente MbinAsc di,offset CadResiduo SacaCadena
;salta lnea ;apunta a fuente (dividendo) ;resultado en cociente ;apunta a nmero divisor ;divide binarios ;apunta a cadena ASCIIZ ;apunta a cociente en binario ;convierte a ASCII ;exhibe letrero de resultado ;de divisin ;exhibe dgitos de producto ;omite ceros delanteros ;exhibe cociente

;para poner ASCII del residuo ;apunta a residuo en binario ;convierte a ASCII ;exhibe letrero de resultado ;de divisin (residuo) 11-12

AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIN: PROFESOR PABLO FUENTES RAMOS

LENGUAJE ENSAMBLADOR 80386

PRCTICA 11

mov call call mov mov int


;PoneBlancos ; ;Entrada: ;Salida: ;Registros:

di,offset ResResiduo PoneBlancos SacaCadena ah,4ch al,[ClaceFin] 21h

;exhibe dgitos de residuo ;omite ceros delanteros ;exhibe residuo ;fin de programa con funcin de DOS

PONE HASTA DIEZ ESPACIOS EN CERO DELANTEROS DI = direccin de cadena ASCIIZ con resultados Aumenta a DI el nmero de ceros delanteros Ninguno

PROC
push mov mov mov cld @@10: cmp jne stob loop @@99: pop ret

PoneBlancos cx,ax cx,10 al, bx,0

;salva registros ;pone 10 espacios mximo ;ASCII de espacio

[byte,di],0 @@99 @@10 ax cx PoneBlancos

;ceros a espacios ;pone en blanco

;repone registros

ENDP
;MultBin ; ;Entrada: ; ;Salida: ;Registros:

MULTIPLICA DOS NMEROS SIN SIGNO DE 64 BITS DI = direccin del primer factor, SI = direccin del segundo factor BX = direccin de resultado de 128 bits rea de salida con el resultado Ninguno

PROC
mov mov mov mult mov mov mov mul add adc mov mul add

MultiBin [dword bx+12] [dword bx +8],0 eax,[dword si] [dword di] [dword bx],eax [dword bx+4].edx eax,[dword si] [dword di+4] [dword bx+4],eax [dword bx+8],edx eax,[dword si+4] [dword di] [dword bx+4],eax

;limpia resultado ;trae 32 bits bajos ;multiplica por bits bajos ;llena parte baja

;trae 32 bits bajos ;multiplica por bits altos ;suma en rea de resultados

;trae 32 bits altos ;multiplica por bits bajos ;suma 11-13

AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIN: PROFESOR PABLO FUENTES RAMOS

LENGUAJE ENSAMBLADOR 80386

PRCTICA 11

adc mov mul add adc ret

[dword bx+8],edx eax,[dword si+4] [dword di+4] [dword bx+8] [dword bx+12],edx

;suma con CF ;trae 32 bits altos ;por 32 bits bajos ;suma ;suma con acarreo

ENDP

MultiBin

END Inicia 3.3.

;fin de mdulo ABIN.ASM

Ejecutar el programa: C:\>ABIN (Se muestran cuatro corridas)

C:\SEM386>abin Este programa encuentra la suma, la resta, el producto, el cociente entero y su residuo de dos nmeros decimales enteros. Teclear primero el mayor de ellos. Teclear primer nmero decimal: 12345679 Teclear segundo nmero decimal: 63 La suma es..: 00012345742 La resta es : 00012345616 El producto es: 000000000000000777777777 El cociente es.: 00000195963 El residuo es: 00000000010 C:\SEM386> C:\SEM386>abin Este programa encuentra la suma, la resta, el producto, el cociente entero y su residuo de dos nmeros decimales enteros. Teclear primero el mayor de ellos. Teclear primer nmero decimal: 99898999 Teclear segundo nmero decimal: 1758148 La suma es..: 00101657147 La resta es : 00098140851 El producto es: 000000000175637225293852 El cociente es.: 00000000056 El residuo es: 00001442711 C:\SEM386> C:\SEM386>abin Este programa encuentra la suma, la resta, el producto, el cociente entero y su residuo de dos nmeros decimales enteros. Teclear primero el mayor de ellos. Teclear primer nmero decimal: 29990217983 Teclear segundo nmero decimal: 1602070822 La suma es..: 31592288805 La resta es : 28388147161 El producto es: 000048046453175983992026 El cociente es.: 00000000018 El residuo es: 01152943187 C:\SEM386>
AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIN: PROFESOR PABLO FUENTES RAMOS

11-14

LENGUAJE ENSAMBLADOR 80386

PRCTICA 11

C:\SEM386>abin Este programa encuentra la suma, la resta, el producto, el cociente entero y su residuo de dos nmeros decimales enteros. Teclear primero el mayor de ellos. Teclear primer nmero decimal: 1125899906842624 Teclear segundo nmero decimal: 281474977056334 La suma es..: 1407374883898958 La resta es : 844424929786290 El producto es: 316912650446256178371720380416 El cociente es.: 00000000003 El residuo es: 281474975673622 C:\SEM386>

3.4.

Este programa se puede depurar con turbo debugger mediante el siguiente comando: C>TD ABIN.EXE Ejecutar paso a paso las rutinas Dec64 y MBinASC y estudiar cmo trabajan

3.5.

Poner los registros en 32 bits y visualizar las variables fuente y destino, en decimal.

4.

TAREAS
4.1.
Introducir al programa el procedimiento Confirma y llamarlo para verificar la opcin de realizar otro clculo.
2n 256 512 1 024 2 048 4 096 8 192 16 384 32 768 65 536 131 072 262 144 524 288 1 048 576 2 097 152 4 194 304 8 388 608 16 777 216 n 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 20 24 28 212 216 220 224 228 232 236 240 244 248 252 256 260 264 = = = = = = = = = = = = = = = = = 160 161 162 163 164 165 166 167 168 169 1610 1611 1612 1613 1614 1615 1616 n 1 0 16 1 256 2 4 096 3 65 536 4 1 048 576 5 16 777 216 6 268 435 456 7 4 294 967 296 8 68 719 476 736 9 1 099 511 627 776 10 17 592 186 044 416 11 281 474 976 710 656 12 4 503 599 627 370 496 13 72 057 594 037 927 936 14 1 152 921 504 606 846 976 15 16n

4.2.

Verificar los valores de la tabla dada corriendo ABIN.


11-15

AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIN: PROFESOR PABLO FUENTES RAMOS

LENGUAJE ENSAMBLADOR 80386

PRCTICA 11

4.3.

Agregar al programa la capacidad de recibir los dos nmeros en la lnea de comandos.

4.4.

En el mdulo MBIN.ASM aadir una rutina para recibir nmeros decimales enteros negativos y otra para recibir enteros decimales de hasta 32 bits.

4.5.

Hacer que el programa ABIN elimine todos los ceros delanteros al desplegar los resultados.

AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIN: PROFESOR PABLO FUENTES RAMOS

11-16