Vous êtes sur la page 1sur 18

LENGUAJE ENSAMBLADOR 80386

PRCTICA 2

PRCTICA 2
CONVERSIN DE UN NMERO DECIMAL A BINARIO Y HEXADECIMAL Y VICEVERSA
1. INTRODUCCIN

En esta prctica convertiremos un nmero decimal, introducido por el teclado, a binario y hexadecimal y viceversa. Usaremos mdulos anteriores y veremos mdulos nuevos.

2.

OBJETIVOS
Al trmino de esta prctica el alumno sabr:
2.1 Leer una cadena de caracteres mediante servicio 0AH, de la interrupcin 21H.

2.2

Realizar conversiones entre diferentes bases.

2.3

Hacer que un programa sea ms informativo con el usuario.

2.4

Hacer que un programa acepte parmetros del usuario.

3.
3.1

DESARROLLO
Procedimiento para leer cadenas.

PUBLIC
;LeeCadena ; ;Entrada: ; ; ;Salida: ;Registros:

LeeCadena

LEE CADENA CON TECLAS DE EDICIN DI = direccin destino de la cadena CL = lmite mximo de cadena sin incluir terminador nulo Si CL = 0, LeeCadena no hace nada Cadena copiada de la entrada estndar en el buffer ninguno

PROC
and jz push

LeeCadena cl,cl @@99 ax


;Es CL = 0 ? ;si, sale ;Salva registros usados
2-1

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

LENGUAJE ENSAMBLADOR 80386

PRCTICA 2

push push push mov mov mov int xor mov mov mov call pop pop

bx dx si [Buffer.maxlon],cl ah,0ah dx,offset Buffer.maxlon 21h bh,bh bl,[Buffer.cadlon] [bx + Buffer.carac],ASCnulo si,offset Buffer.carac CopiaCad si dx bx ax

;Pone byte de largo mximo ;Entrada de cadenas con DOS ;DS:DX apunta a la estructura ;DOS captura la cadena ;Parte alta de BX a cero ;BX = nmero de caracteres en el Buffer ;Cambia RC a ASCII nulo (0) ;Apunta al buffer con SI ;Copia cadena al buffer del ;usuario ;Repone registros

@@99:
ret
;Regresa a programa fuente

ENDP

LeeCadena

Mediante este procedimiento se introducir el nmero a convertir. Utilizaremos la interrupcin 21H, servicio 0AH para introducir caracteres por el teclado y para capturar la cadena oprimimos RETURN.

3.2

Capturar el mdulo anterior en el programa CADENAS.ASM; ensamblarlo y meterlo a la librera REM:

C>TASM /zi CADENAS C>TLIB /E REM -+CADENAS


3.3 Procedimientos para copiar una cadena en otra y moverla a la izquierda.

PUBLIC
;CopiaCad ; ;Entrada: ; ;Salida ;Registros:

CopiaCad, MueveIzq

COPIA UNA CADENA EN OTRA SI = direccin de cadena fuente, cad1 DI = direccin de cadena destino, cad2 Caracteres en cad1 copiados en cad2 Ninguno

PROC
push push push xchg call

CopiaCad bx cx dx si,di LargoCad


;Salva registros

;Trueca SI y DI ;Halla largo de cad1 (fuente)


2-2

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

LENGUAJE ENSAMBLADOR 80386

PRCTICA 2

inc xchg xor xor call pop pop pop ret

cx si,di bx,bx dx,dx MueveIzq dx cx bx

;Ms uno para incluir terminador ;Repone SI y DI ;ndice de la fuente = 0 ;ndice del destino = 0 ;Copia fuente a destino ;Repone registros

ENDP
;MueveIzq ; ;Entrada: ; ; ; ; ;Salida: ;Registros:

CopiaCad
MUEVE BLOQUE DE BYTES A LA IZQ. (HACIA ABAJO) EN MEMORIA SI = direccin de cadena fuente, cad1 DI = direccin de cadena destino, cad2 BX = ndice de cad1,i1 DX = ndice de cad2,i2 CX = nmero de bytes a mover (K) Se mueven K bytes de cad1 [i1] a cad2 [i2] Ninguno

PROC

MueveIzq jcxz @@99 push cx push si push di add si,bx add di,dx cld rep movsb pop di pop si cx
;Salir si K = 0 ;Salva registros modificados

;Agrega ndice ;Agrega ndice al destino ;incrementando direcciones ;Mover mientras CX <> 0

@@99:
ret

ENDP

MueveIzq

Con estos procedimientos copiamos la cadena original en otra para posteriormente eliminar ceros delanteros (ceros a la izquierda).

3.4

Capturar estos mdulos en el programa MANCADE.ASM, ensamblarlos y agregarlos a la librera REM.

C>TASM /zi MANCADE C>TLIB /E REM +-MANCADE

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

2-3

LENGUAJE ENSAMBLADOR 80386

PRCTICA 2

3.5

Procedimientos para convertir cadenas de nmeros binarios a y viceversa.

PUBLIC PUBLIC
;BinSAscDec ; ;Entrada: ;Salida: ;Registros:

BinSAscDec, ValCar, AscNum BinAscBin, AscBin, CarBas

CONVERTIR BINARIO CON SIGNO A CADENA ASCII DECIMAL Misma que BinAscHex (AX es ahora de 16 bits, signado) Ninguna AX, CX

PROC
push push cmp jge neg mov inc

BinSAscDec bx di ax,0 @@10 ax [byte di],'-' di


;Salva BX y DI ;Es AX negativo ;Brinca si >= 0 ;Forma complemento a 2 de AX ;Pone un "-" en la cadena

@@10:
mov call pop ret bx,10 NumAsc di bx
;Pone base igual a 10 ;Convierte AX a ASCII ;Recupera registros

ENDP
;BinSscBin ; ;Entrada: ;Salida: ;Registros:

BinSAscDec
CONVIERTE VALOR BINARIO A CADENA ASCII DE DGITOS BINARIOS Misma que BinAscHex Ninguna AX, CX (indirectamente)

PROC
push mov call pop ret

BinAscBin bx bx,2 NumAsc bx


;Salva en la pila ;Base = 2 ;Pasa a ASCII

ENDP

BinAscBin

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

2-4

LENGUAJE ENSAMBLADOR 80386

PRCTICA 2

;AscBin ; ;Entrada: ; ; ; ; ; ;Salida: ; ;Registro:

CONVIERTE CADENA ASCII A BINARIO DI = cadena ASCII a convertir a binario H al fin de cadena = hexadecimal B al fin de cadena = binario D al fin de cadena = decimal _ indica nmero negativo No se permiten blancos en la cadena CF = 1: carcter ilegal. AX es irrelevante CF = 0: AX = valor binario AX

PROC
push call call xor jcxz mov add cmp pushf jne inc

AscBin bx cx dx si MayusCad LargoCad ax,ax @@99 si,di si,cx [byte di],'-' @@10 di
;Salva registros ;Convierte cadena a mayscula ;CX = largo de cadena en DI ;Resultado parcial = 0 ;S largo = cero. AX= 0 CF= 0 ;Direccin cadena con SI ;Avanza Si al terminador nulo ;Verifica si es negativo ;Salva banderas de comparacin ;Brinca si es positivo ;Brinca al signo de menos

@@10:
call call rcl popf jne neg dec CarBase AscNum bx,1 @@20 ax di
;Pone BX = nmero base. SI = ltimo digito ;Convierte ASCII a nmero ;Salva CF en BX ;Repone banderas de comparacin ;Forma complemento a 2s de AX ;Repone DI a cabeza de cadena

@@20:
rcr bx,1
;Repone CF desde BX

@@99:
pop ret si dx cx bx
;Repone registros ;Regresa

ENDP

AscBin

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

2-5

LENGUAJE ENSAMBLADOR 80386

PRCTICA 2

;CarBase ; ;NOTA: ;Entrada: ;Salida: ; ;Registros:

RETORNA BASE A UNA CADENA ASCII


Rutina privada para AscBin. No llamarla directamente

SI apunta al terminador nulo al fin de la cadena BX = 2 (binario), 10 (decimal), 16 (hexadecimal) SI = direccin del ltimo dgito de la cadena BX, DL, SI

PROC
mov mov cmp je mov cmp je mov cmp jne

CarBase dl,[byte si-1] bx,16 dl,'H' @@10 bx,2 dl,'B' @@10 bx,10 dl,'D' @@20 ;
;Trae ltimo carcter de la cadena ;Pone si es hexadecimal ;Es cadena hex ? ;Si, brinca ;Por si es binario ;Es binario? ;Si, brinca ;Pon si es decimal ;Es decimal ? ;Brinca si no

@@10:
dec si
;Ajusta SI

@@20:
ret

ENDP
;AscNum ; ;NOTA: ;Entrada: ; ; ; ;Salida: ; ;Registros:

CarBase
CONVIERTE CARACTERES ASCII A BINARIO
Rutina privada para AscBin. No llamarla directamente

AX = valor inicial (0) BX = base (2=binario, 10=decimal, 16=hexadecimal) DI = direccin de cadena no asignada (cualquier formato) SI = direccin de ltimo dgito de la cadena CF = 0: AX valor binario sin signo CF = 1: conversin no fue posible AX, CX, DX, SI

PROC
mov

AscNum cx,1
;Inicia multiplicador

@@10:
cmp je dec mov call jc si,di @@99 si dl,[byte si] ValCar @@99
;Al inicio de la cadena ;Procesa siguiente carcter a la izquierda ;Pone carcter en DL ;Convierte a valor en DX ;Sale si error (carcter ilegal)
2-6

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

LENGUAJE ENSAMBLADOR 80386

PRCTICA 2

push xchg mul add pop mul xchg jmp

cx ax,cx dx cx,ax ax bx ax,cx @@10

;AX = multiplicador CX = res. parcial ;DX,AX = valor dgito*multiplicador ;CX = nuevo valor parcial ;Repone multiplicador ;DX.AX = mult*base ;AX = res. parcial CX = nuevo ;multiplicador

@@99:
ret

ENDP
;VarCar ; Entrada: ; ;Salida: ; ;Registros:

AscNum
CONVIERTE DE DGITO EN ASCII A VALOR BINARIO DL = dgito ASCII 0.9, A.F BX = base (2= binario, 10=decimal, 16=hexadecimal) CF = 0: DX = valor binario equivalente CF = 1: mal carcter para esta base (DX es irrelevante) DX

PROC
cmp jbe sub

ValCar dl,'9' @@10 dl,7


;Verifica si es dgito hex ;Brinca si no ;Ajusta dgito hex a rango 3A..3F

@@10:
sub test jnz xor cmp dl,'0' dl,0f0h @@99 dh,dh dx,bx
;Convierte ASCII a decimal ;Verifica 4 bits altos (CF = 0) ;Brinca si error (no dgito o A-F) ;Convierte DL a 16 bits ;Compara con no. base (CF = 1 si bien)

@@99:
cmc ret
;Complementa para fijar bandera de error ;Regresa

ENDP

ValCar

El procedimiento BinSASCDec convierte un nmero negativo a cadena ASCII decimal anteponiendo el signo negativo al exhibirlo. El procedimiento BinASCBin convierte una cadena binaria a cadena ASCII de nmeros binarios, colocando en el registro BX la base de conversin. El procedimiento ASCBin convierte la cadena de entrada a maysculas, luego cuenta los
AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIN: PROFESOR PABLO FUENTES RAMOS

2-7

LENGUAJE ENSAMBLADOR 80386

PRCTICA 2

caracteres de la cadena; si no hay caracteres este procedimiento no hace nada y sale. Adems prueba si la cadena tiene el signo "-", si es as salva el signo y llama a CarBase. Luego llama al procedimiento ASCNum, el cual convierte caracteres ASCII a binario; si CF es uno el carcter encontrado es ilegal. El procedimiento ValCar convierte dgito ASCII a binario, CF es uno el carcter es ilegal.

3.6

Capturar los mdulos anteriores en el programa BINASC.ASM.

3.7

Ensamblar y poner en librera el programa BINASC.ASM

C>TASM /zi BINASC C>TLIB /E REM -+BINASC


3.8 Procedimientos para procesar parmetros en lneas de comandos de DOS.

%TITLE

"PROCESADOR (PARSER) DE PARMETROS EN LNEA DE COMANDOS DE DOS"

IDEAL DOSSEG MODEL


; EQUs

small

LargoCola ColaCmndo

EQU EQU

0080h 0081h

;Sesgo del byte de longitud de parmetro ;Sesgo de parmetros

DATASEG
NumParam params DW DB ? 128 DUP (?)
;Nmero de parmetros ;128 bytes para las cadenas

CODESEG PUBLIC
;Separa ; ;Entrada: ;Salida: ;Registros:

CuentaPar, TraePar, TraeUnPar

RUTINA PRIVADA QUE BUSCA ESPACIOS, TABULADORES Y RETORNO DE CARRO

DS: SI apunta a carcter a verificar ZF = 1 (je) carcter es blanco, tabulador o retorno de carro ZF = 0 (jne) carcter separador AC

PROC
mov cmp

Separa al,[si] al,20h


;Trae carcter en DS:SI ;Espacio ?
2-8

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

LENGUAJE ENSAMBLADOR 80386

PRCTICA 2

je cmp je cmp

@@10 al,09h @@10 al,0dh

;Si, brinca ;Tabulador ? ;Si, brinca ;Retorno de car.?

@@10:
ret
;Regresa

ENDP

Separa

;CuentaPar ; ;Entrada: ;Salida: ; ;Registros:

REGRESA CONTEO DE LOS PARMETROS INTRODUCIDOS Ninguna DX = nmero de parmetros en lnea de comando Al usar TraeUnPar, CX debe ser menor que el valor retornado DX

PROC
mov ret

CuentaPar dx,[NumParam]
;Trae valor de la variable ;Regresa

ENDP
;TraePar ; ;Entrada: ; ; ;Salida: ; ;Registros:

CuentaPar

OBTIENE LOS PARMETROS DE LA LNEA DE COMANDOS DS = PSP = prefijo del segmento del programa ES = segmento de datos del programa Llamar esta rutina antes de iniciar DS Parmetros globales llenos de cadenas ASCIIZ DS = segmento de datos del programa AL, BX, DX, SI, DS

PROC
;

TraePar
Inicia contador (CX), y registros ndice (SI,DI)

xor mov inc mov mov


;

ch,ch cl,[ds:LargoCola] cx si,ColaCmndo di,offset params

;Parte alta de CX a cero ;CX = nmero de bytes introducidos ;Incluir RC al final ;Apunta a parmetros con SI

Salta espacios y tabs delanteros.

@@10:
call jne inc Separa @@20 si
;Salta tabs. y espacios ;Brinca si no espacio ni tabulador ;Salta este carcter
2-9

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

LENGUAJE ENSAMBLADOR 80386

PRCTICA 2

loop
;

@@10

Copia cadenas de parmetros a parmetros globales.

@@20:
push jcxz cld rep
;

cx @@30 movsb

;Salva CX para ms tarde ;Omite movsb si cuenta = 0 ;Autoincrementa ;Copia CX bytes de DS:SI a ES:DI

Convierte blancos a nulos y pone NumParam.

@@30:
push pop pop xor jcxz mov es ds cx bx,bx @@60 si,offset params
;Salva ES en pila ;Hace DS = ES ;Inicia conteo de parmetros ;Omite bucle si largo = 0 ;Apunta a parmetros con SI

@@40:
call jne mov inc Separa @@50 [byte ptr si],0 bx
;Verifica si blanco, tabulador o retorno de carro

;Brinca si no es separador ;Cambia separador a nulo ;Incrementa conteo de parmetros

@@50:
inc loop si @@40
;Apunta a siguiente carcter ;Sigue hasta agotar CX

@@60:
mov ret [NumParam],bx
; Salva nmero de parmetros

ENDP
;TraeUnPar ; Entrada: ; ;Salida: ;Registros:

TraePar
OBTIENE DIRECCIN DEL PARMETRO PEDIDO POR NMERO CS = nmero de parmetros (0 = primero)
NOTA: CX debe ser menor que el nmero de parmetros

DI = sesgo de cadena ASCIIZ del parmetro AL, CX, DI

PROC
xor mov

TraeUnPar al,al di,offset params


;AL = ASCII de terminador ;Apunta a cadena de parmetros
2-10

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

LENGUAJE ENSAMBLADOR 80386

PRCTICA 2

jcxz cmp jae cld

@@99 CX,[NumParam] @@99

;Si CX = 0, ya est hecho ;Salir si CX > nmero mximo ;Autoincrementa DI

@@10:
scasb jnz @@10 loop @@10
;Examina si es nulo ;Repite hasta hallarlo ;Hasta agotar CX

@@99:
ret

ENDP END
3.9

TraeUnPar
;Fin de mdulo PARAMS.ASM

Capturar los mdulos anteriores con el nombre PARAMS.ASM

3.10

Ensamblarlos e introducirlos a la librera REM:

C>TASM /zi PARAMS C>TLIB /E REM -+PARAMS


3.11 Verificar la librera REM

C>TLIB REM,CON
3.12 Capturar el programa para convertir un nmero decimal a binario, hexadecimal; decimal sin signo y con signo.

%TITLE

"CONVIERTE NMEROS DECIMALES, BINARIOS Y HEXADECIMALES"

IDEAL DOSSEG MODEL STACK


; EQUs

small 256

FDC rc nl LarMax

EQU EQU EQU EQU

0 13 10 40

;Fin de cadena ;Ret. de carro ;ASCII para nueva lnea ;Mximo largo de cadena de entrada

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

2-11

LENGUAJE ENSAMBLADOR 80386

PRCTICA 2

DATASEG
ClaveFin Saludo DB DB DB DB DB DB DB DB DB DB DW DB
;Cdigo de error de DOS 0 Convierte valores decimales, binarios y hex' rc,nl,' rc,nl,'Dar el nmero a convertir en decimal' rc,nl,'Dar ENTER para salir',rc,nl,FDC rc,nl,nl,nl,'Nmero a convertir? ',FDC rc,nl,'ERROR: carcter ilegal en lnea',FDC rc,nl,'Binario ............ :',FDC rc,nl,'Hexadecimal ........ :',FDC rc,nl,'Decimal sin signo .. :',FDC rc,nl,'Decimal con signo .. :',FDC ;Resultado de AscBin ? LarMax +1 DUP (?) ;Cadena para entrada/respuesta del ;usuario

apronta error binario hex decimal decimalS valor Respuesta

CODESEG
; De MANCADE.OBJ

EXTRN
;

LargoCad:proc,CopiaCad:proc

De CADENAS.OBJ

EXTRN
;

LeeCadena:proc,SacaCadena:proc,NuevaLinea:proc

De BINASC.OBJ

EXTRN EXTRN
;

BinAscHex:proc,BinSAscDec:proc,BinAscDec:proc BinAscBin:proc,AscBin:proc

De PARAMS.OBJ

EXTRN Inicia:
mov mov call mov call and je mov call mov xchg call jmp

TraePar:proc,CuentaPar:proc,TraeUnPar:proc

ax,@data es,ax TraePar ds,ax CuentaPar dx,dx normal cx,0 TraeUnPar si,offset Respuesta di,si CopiaCad short rep1

;Inicia ES con segmento de datos ;Trae parmetros de lnea de comando ;inicia segmento ;Hubo parmetros ? ;No, brinca ;Trae primer parmetro ;SI apunta a buffer de entrada ;1er parmetro en cadena de entrada ;Salta a repetir (omite saludo)

normal:
mov di,offset saludo
;Apunta a bienvenida
2-12

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

LENGUAJE ENSAMBLADOR 80386

PRCTICA 2

call
;

SacaCadena

;Exhibe bienvenida

Apronta al usuario

Repite:
mov call mov mov call di,offset apronta SacaCadena di,offset Respuesta cx,LarMax LeeCadena
;Apunta apronta ;Exhibe apronta ;Trae respuesta del usuario ;Mxima longitud

rep1:
call call jcxz call mov jnc mov call jmp NuevaLinea LargoCad Salir AscBin [valor],ax seguir di,offset error SacaCadena repite
;Exhibe otra lnea ;Usuario dio ENTER ? ;Si, sale (CX = 0) ;Convierte cadena a AX ;Pone resultado en variable ;Brinca si CF es 0 (no error) ;Caso contrario saca mensaje error. ;Exhibe error.

seguir:
mov call mov mov mov call call mov call mov mov mov call mov call mov mov mov call call mov call mov mov mov call call di,offset binario Sacacadena ax,[valor] cx,16 di,offset respuesta BinAscBin Sacacadena di,offset hex Sacacadena ax,[valor] cx,4 di,offset respuesta BinAscHex di,offset decimal Sacacadena ax,[valor] cx,1 di,offset respuesta BinAscDec Sacacadena di,offset decimalS Sacacadena ax,[valor] cx,1 di,offset respuesta BinSAscDec Sacacadena
;Apunta a etiqueta para binario ;Exhibe cadena ;Trae valor a convertir ;Exhibe 16 dgitos por lo menos ;Usa misma cadena de resultado ;Halla dgitos binarios ;Exhbelos ;Apunta a etiqueta para hexadecimal ;Exhibe cadena ;Trae valor a convertir ;Exhibe 4 dgitos por lo menos ;Usa misma cadena de resultado ;Halla dgitos hex. call Sacacadena ;Exhbelos ;Apunta a etiqueta para decimal ;Exhibe cadena ;Trae valor a convertir ;Exhibe un dgito por lo menos ;Usa misma cadena de resultado ;Halla dgitos decimales ;Exhbelos ;Apunta a cadena ;Exhibe cadena ;Trae valor a convertir ;Exhibe un dgito ;Usa misma cadena de resultado ;Halla dgitos decimales ;Exhbelos

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

2-13

LENGUAJE ENSAMBLADOR 80386

PRCTICA 2

Salir:
mov mov int ah,4ch al,[ClaveFin] 21h
; Fin de mdulo CONVI.ASM

END inicia

El programa exhibe el saludo y comentarios, por medio de otro letrero espera la entrada del nmero a convertir; una vez introducido el nmero, se llama a los procedimientos que se encuentran en el mdulo BINASC.ASM, los cuales se encargan de hacer las operaciones pertinentes.

3.13

Ensamblar y crear el programa ejecutable mediante los comandos:

C>TASM /zi CONVI C>TLINK /v CONVI,,,REM.


Si no se tiene el archivo TLINK, teclear:

C>LINK CONVI,,,REM
3.14 Ejecutar el programa con el comando:

C>CONVI
y:

C>CONVI 34567
3.15 Este programa se puede depurar con Turbo Debugger mediante el siguiente comando:

C>TD CONVI.EXE
3.16 Ir a la ventana VIEW, en la opcin REGS oprimir la tecla ENTER, hacer ms chica la ventana con el ratn. Con F8 correr un procedimiento, con F7 ir paso a paso y con F9 correr el programa. Analizar con cuidado la conversin de un nmero ASCII a binario.

4.
4.1

TAREAS
Extender hasta 24 bits los nmeros binarios soportados, segn sugiere la tabla dada ms abajo.

4.2

Hacer que el programa pueda convertir ms de un parmetro.


2-14

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

LENGUAJE ENSAMBLADOR 80386

PRCTICA 2

4.3

Hacer que el programa sea ms informativo con el usuario y exhibir un letrero con opcin de realizar otro clculo antes de salir del programa.

4.4

Introducir al programa el procedimiento Confirma y llamarlo para verificar la salida del programa, por si hay error. Hacer un programa que escriba su propio nombre, incluyendo la ruta, de tal modo que si es cambiado de nombre con el comando REN de DOS reporte en nombre nuevo. Lo mismo si es movido o copiado a otro directorio.
Cuando se hagan modificaciones en un programa hay que ensamblarlo, meterlo a la librera o crear el ejecutable, segn sea el caso.

4.5

NOTA:

COLUMNAS DEL NUMERO HEXADECIMAL


6
H E X 0 1 2 3 4 5 6 7 8 9 A B C D E F DEC H E X 0 1 2 3 4 5 6 7 8 9 A B C D E F

5
DEC H E X 0 1 2 3 4 5 6 7 8 9 A B C D E F

4
DEC H E X 0 1 2 3 4 5 6 7 8 9 A B C D E F

3
DEC H E X 0 1 2 3 4 5 6 7 8 9 A B C D E F

2
DEC H E X 0 1 2 3 4 5 6 7 8 9 A B C D E F

1
DEC

0 1,048,576 2,097,152 3,145,728 4,194,304 5,242,880 6,291,456 7,340,032 8,388,608 9,437,184 10,485,760 11,534,336 12,582,912 13,631,488 14,680,064 15,728,640 7 6 5 4

0 65,536 131,072 196,608 262,144 327,680 393,216 458,752 524,288 589,824 655,360 720,896 786,432 851,968 917,504 983,040 3 2 1 0

0 4,096 8,192 12,288 16,384 20,480 24,576 28,672 32,768 36,864 40,960 45,056 49,152 53,248 57,344 61,440 7654

0 256 512 768 1,024 1,280 1,536 1,792 2,048 2,304 2,560 2,816 3,072 3,328 3,584 3,840 3210

0 16 32 48 64 80 96 112 128 144 160 176 192 208 224 240 7654

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 3210

BYTE MAYOR

BYTE MEDIANO

BYTE MENOR

Tabla para conversin de hexadecimal a decimal de 24 bits

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

2-15

LENGUAJE ENSAMBLADOR 80386

PRCTICA 2

EJEMPLOS DE CORRIDAS
C:\SEM386>convi

Convierte valores decimales, binarios y hexadecimales


Dar ENTER para salir

Nmero a convertir? 11001110101b


Binario Hexadecimal Decimal sin signo Decimal con signo 0000011001110101 0675 1653 1653

Nmero a convertir? 1a3eh


Binario Hexadecimal Decimal sin signo Decimal con signo 0001101000111110 1A3E 6718 6718

Nmero a convertir?
C:\SEM386> C:\SEM386>convi 34567 Binario Hexadecimal Decimal sin signo Decimal con signo 1000011100000111 8707 34567 -30969

Nmero a convertir? -9817


Binario Hexadecimal Decimal sin signo Decimal con signo 1101100110100111 D9A7 55719 -9817

Nmero a convertir? 234d


Binario Hexadecimal Decimal sin signo Decimal con signo 0000000011101010 00EA 234 234

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

2-16

LENGUAJE ENSAMBLADOR 80386

PRCTICA 2

Nmero a convertir? ff00h


Binario Hexadecimal Decimal sin signo Decimal con signo 1111111100000000 FF00 65280 -256

Nmero a convertir? 11111


Binario Hexadecimal Decimal sin signo Decimal con signo 0010101101100111 2B67 11111 11111

Nmero a convertir? 12a3


-- ERROR: carcter ilegal en lnea

Nmero a convertir?
C:\SEM386>

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

2-17

Nombre de archivo: practica 2 ensamblador 80386 Directorio: C:\Computacion V\practicas 80386 Plantilla: C:\WINDOWS\Application Data\Microsoft\Plantillas\Normal.dot Ttulo: PRCTICA 2 Asunto: Prcticas de laboratorio de Computacin V Autor: M. en C. Salvador Saucedo Flores Palabras clave: Comentarios: Fecha de creacin: 05/07/02 04:00 P.M. Cambio nmero: 31 Guardado el: 22/07/02 12:46 P.M. Guardado por: Pablo Fuentes Ramos Tiempo de edicin: 646 minutos Impreso el: 29/07/02 01:46 P.M. ltima impresin completa Nmero de pginas: 17 Nmero de palabras: 2,442 (aprox.) Nmero de caracteres: 13,925 (aprox.)

Vous aimerez peut-être aussi