Download - ensamblador 80386
LENGUAJE ENSAMBLADOR 80386
PRCTICA 11
PRCTICA 11SUMA, RESTA, MULTIPLICACIN Y DIVISIN DE DOS NMEROS ENTEROS POSITIVOS DE HASTA 20 DGITOS DECIMALES1. INTRODUCCINMediante 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.
OBJETIVOSAl 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.
DESARROLLO3.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
PROCpush 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 RestaBinMULTIPLICA 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 axLimpia 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
PROCpush 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 diLimpia 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
PROCshl 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 diLimpia 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
PROCpush 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
PROCpush 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
PROCpush 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
PROCmov 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.
TAREAS4.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