PRÁCTICA 2 CONVERSIÓN DE UN NÚMERO DECIMAL A BINARIO Y HEXADECIMAL Y VICEVERSA 1. INTRODUCCIÓN 2. OBJETIVOS 3. DESARROLLO

LENGUAJE ENSAMBLADOR 80386 PRÁCTICA 2 PRÁCTICA 2 CONVERSIÓN DE UN NÚMERO DECIMAL A BINARIO Y HEXADECIMAL Y VICEVERSA 1. INTRODUCCIÓN En esta práct

1 downloads 22 Views 80KB Size

Recommend Stories


Conversión decimal->binario
Manual de conversión de sistemas numéricos www.sagraramirez.es Conversión decimal->binario 1- Se divide el número decimal entre 2 sin sacar decimale

ÍNDICE 1. INTRODUCCIÓN >>> 1 2. OBJETIVOS >>> 2 3. CONTENIDOS >>> 2 4. ACTIVIDADES >>> 3
1. Si quieres lucir un tatuaje, acude a un centro que te garantice unas correctas normas de higiene y prevención de riesgos sanitarios, de lo contrari

1. PRESENTACIÓN 2. OBJETIVOS
BASES FONDOS CONCURSABLES QUINTERO CONVOCATORIA 2016 1. PRESENTACIÓN GNL Quintero es una empresa consciente del valor de la relación con la comunida

Story Transcript

LENGUAJE ENSAMBLADOR 80386

PRÁCTICA 2

PRÁCTICA 2 CONVERSIÓN DE UN NÚMERO DECIMAL A BINARIO Y HEXADECIMAL Y VICEVERSA 1.

INTRODUCCIÓN

En esta práctica convertiremos un número decimal, introducido por el teclado, a binario y hexadecimal y viceversa. Usaremos módulos anteriores y veremos módulos nuevos.

2.

OBJETIVOS Al término de esta práctica el alumno sabrá: 2.1

Leer una cadena de caracteres mediante servicio 0AH, de la interrupción 21H.

2.2

Realizar conversiones entre diferentes bases.

2.3

Hacer que un programa sea más informativo con el usuario.

2.4

Hacer que un programa acepte parámetros del usuario.

3.

DESARROLLO

3.1

Procedimiento para leer cadenas.

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

PROC

LeeCadena

LEE CADENA CON TECLAS DE EDICIÓN DI = dirección destino de la cadena CL = límite máximo de cadena sin incluir terminador nulo Si CL = 0, LeeCadena no hace nada Cadena copiada de la entrada estándar en el buffer ninguno

LeeCadena and jz push

cl,cl @@99 ax

AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIÓN: PROFESOR PABLO FUENTES RAMOS

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

LENGUAJE ENSAMBLADOR 80386

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

PRÁCTICA 2

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 máximo ;Entrada de cadenas con DOS ;DS:DX apunta a la estructura ;DOS captura la cadena ;Parte alta de BX a cero ;BX = número 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

ENDP

;Regresa a programa fuente

LeeCadena

Mediante este procedimiento se introducirá el número a convertir. Utilizaremos la interrupción 21H, servicio 0AH para introducir caracteres por el teclado y para capturar la cadena oprimimos RETURN.

3.2

Capturar el módulo anterior en el programa CADENAS.ASM; ensamblarlo y meterlo a la librería 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, MueveIzq

COPIA UNA CADENA EN OTRA

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

SI = dirección de cadena fuente, cad1 DI = dirección de cadena destino, cad2 Caracteres en cad1 copiados en cad2 Ninguno

PROC

CopiaCad push push push xchg call

bx cx dx si,di LargoCad

AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIÓN: PROFESOR PABLO FUENTES RAMOS

;Salva registros

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

LENGUAJE ENSAMBLADOR 80386

inc xchg xor xor call pop pop pop ret

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

PRÁCTICA 2

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

ENDP

CopiaCad

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

MUEVE BLOQUE DE BYTES A LA IZQ. (HACIA ABAJO) EN MEMORIA SI = dirección de cadena fuente, cad1 DI = dirección de cadena destino, cad2 BX = índice de cad1,i1 DX = índice de cad2,i2 CX = número 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 módulos en el programa MANCADE.ASM, ensamblarlos y agregarlos a la librería REM.

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

AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIÓN: PROFESOR PABLO FUENTES RAMOS

2-3

LENGUAJE ENSAMBLADOR 80386

3.5

PRÁCTICA 2

Procedimientos para convertir cadenas de números binarios a y viceversa.

PUBLIC PUBLIC

BinSAscDec, ValCar, AscNum BinAscBin, AscBin, CarBas

CONVERTIR BINARIO CON SIGNO A CADENA ASCII DECIMAL

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

Misma que BinAscHex (AX es ahora de 16 bits, signado) Ninguna AX, CX

PROC

BinSAscDec push push cmp jge neg mov inc

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

;Salva BX y DI

bx,10 NumAsc di bx

;Pone base igual a 10 ;Convierte AX a ASCII ;Recupera registros

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

@@10: mov call pop ret

ENDP

BinSAscDec

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

CONVIERTE VALOR BINARIO A CADENA ASCII DE DÍGITOS BINARIOS Misma que BinAscHex Ninguna AX, CX (indirectamente)

PROC

BinAscBin push mov call pop ret

ENDP

bx bx,2 NumAsc bx

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

BinAscBin

AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIÓN: PROFESOR PABLO FUENTES RAMOS

2-4

LENGUAJE ENSAMBLADOR 80386

PRÁCTICA 2

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

CONVIERTE CADENA ASCII A BINARIO

PROC

AscBin

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 número negativo No se permiten blancos en la cadena CF = 1: carácter ilegal. AX es irrelevante CF = 0: AX = valor binario AX

push call call xor jcxz mov add cmp pushf jne inc

bx cx dx si MayusCad LargoCad ax,ax @@99 si,di si,cx [byte di],'-' @@10 di

;Salva registros ;Convierte cadena a mayúscula ;CX = largo de cadena en DI ;Resultado parcial = 0 ;Sí largo = cero. AX= 0 CF= 0 ;Dirección cadena con SI ;Avanza Si al terminador nulo ;Verifica si es negativo ;Salva banderas de comparación ;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 = número base. SI = último digito ;Convierte ASCII a número ;Salva CF en BX ;Repone banderas de comparación ;Forma complemento a 2s de AX ;Repone DI a cabeza de cadena

@@20: rcr

bx,1

;Repone CF desde BX

si dx cx bx

;Repone registros ;Regresa

@@99: pop ret

ENDP

AscBin

AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIÓN: PROFESOR PABLO FUENTES RAMOS

2-5

LENGUAJE ENSAMBLADOR 80386

PRÁCTICA 2

RETORNA BASE A UNA CADENA ASCII

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

SI apunta al terminador nulo al fin de la cadena BX = 2 (binario), 10 (decimal), 16 (hexadecimal) SI = dirección del último dígito de la cadena BX, DL, SI

PROC

CarBase mov mov cmp je mov cmp je mov cmp jne

Rutina privada para AscBin. No llamarla directamente

dl,[byte si-1] bx,16 dl,'H' @@10 bx,2 dl,'B' @@10 bx,10 dl,'D' @@20

;

;Trae último carácter 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

CarBase

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

CONVIERTE CARACTERES ASCII A BINARIO

AX = valor inicial (0) BX = base (2=binario, 10=decimal, 16=hexadecimal) DI = dirección de cadena no asignada (cualquier formato) SI = dirección de último dígito de la cadena CF = 0: AX valor binario sin signo CF = 1: conversión no fue posible AX, CX, DX, SI

PROC

AscNum mov

Rutina privada para AscBin. No llamarla directamente

cx,1

;Inicia multiplicador

si,di @@99 si dl,[byte si] ValCar @@99

;Al inicio de la cadena

@@10: cmp je dec mov call jc

AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIÓN: PROFESOR PABLO FUENTES RAMOS

;Procesa siguiente carácter a la izquierda ;Pone carácter en DL ;Convierte a valor en DX ;Sale si error (carácter ilegal) 2-6

LENGUAJE ENSAMBLADOR 80386

push xchg mul add pop mul xchg jmp

PRÁCTICA 2

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

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

@@99: ret

ENDP

AscNum

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

PROC

CONVIERTE DE DÍGITO EN ASCII A VALOR BINARIO DL = dígito ASCII ‘0’….’9’, ‘A’….’F’’ BX = base (2= binario, 10=decimal, 16=hexadecimal) CF = 0: DX = valor binario equivalente CF = 1: mal carácter para esta base (DX es irrelevante) DX

ValCar cmp jbe sub

dl,'9' @@10 dl,7

;Verifica si es dígito hex ;Brinca si no ;Ajusta dígito hex a rango 3A..3F

dl,'0' dl,0f0h @@99 dh,dh dx,bx

;Convierte ASCII a decimal ;Verifica 4 bits altos (CF = 0) ;Brinca si error (no dígito o A-F) ;Convierte DL a 16 bits ;Compara con no. base (CF = 1 si bien)

@@10: sub test jnz xor cmp

@@99: cmc ret

ENDP

;Complementa para fijar bandera de error ;Regresa

ValCar

El procedimiento BinSASCDec convierte un número negativo a cadena ASCII decimal anteponiendo el signo negativo al exhibirlo. El procedimiento BinASCBin convierte una cadena binaria a cadena ASCII de números binarios, colocando en el registro BX la base de conversión. El procedimiento ASCBin convierte la cadena de entrada a mayúsculas, luego cuenta los AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIÓN: PROFESOR PABLO FUENTES RAMOS

2-7

LENGUAJE ENSAMBLADOR 80386

PRÁCTICA 2

caracteres de la cadena; si no hay caracteres este procedimiento no hace nada y sale. Además 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 carácter encontrado es ilegal. El procedimiento ValCar convierte dígito ASCII a binario, CF es uno el carácter es ilegal.

3.6

Capturar los módulos anteriores en el programa BINASC.ASM.

3.7

Ensamblar y poner en librería el programa BINASC.ASM

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

Procedimientos para procesar parámetros en líneas de comandos de DOS.

%TITLE

"PROCESADOR (PARSER) DE PARÁMETROS EN LÍNEA DE COMANDOS DE DOS"

IDEAL DOSSEG MODEL ;

small

EQUs

LargoCola ColaCmndo

EQU EQU

0080h 0081h

;Sesgo del byte de longitud de parámetro ;Sesgo de parámetros

? 128 DUP (?)

;Número de parámetros ;128 bytes para las cadenas

DATASEG NumParam params

DW DB

CODESEG PUBLIC ;Separa ; ;Entrada: ;Salida:

CuentaPar, TraePar, TraeUnPar

RUTINA PRIVADA QUE BUSCA ESPACIOS, TABULADORES Y RETORNO DE CARRO

;Registros:

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

PROC

Separa mov cmp

al,[si] al,20h

AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIÓN: PROFESOR PABLO FUENTES RAMOS

;Trae carácter en DS:SI ;¿Espacio ? 2-8

LENGUAJE ENSAMBLADOR 80386

je cmp je cmp

PRÁCTICA 2

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

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

@@10: ret

ENDP

;Regresa

Separa

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

PROC

REGRESA CONTEO DE LOS PARÁMETROS INTRODUCIDOS Ninguna DX = número de parámetros en línea de comando Al usar TraeUnPar, CX debe ser menor que el valor retornado DX

CuentaPar mov ret

dx,[NumParam]

;Trae valor de la variable ;Regresa

ENDP

CuentaPar

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

OBTIENE LOS PARÁMETROS DE LA LÍNEA DE COMANDOS DS = PSP = prefijo del segmento del programa ES = segmento de datos del programa Llamar esta rutina antes de iniciar DS Parámetros 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 = número de bytes introducidos ;Incluir RC al final ;Apunta a parámetros con SI

Salta espacios y tabs delanteros.

@@10: call jne inc

Separa @@20 si

AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIÓN: PROFESOR PABLO FUENTES RAMOS

;Salta tabs. y espacios ;Brinca si no espacio ni tabulador ;Salta este carácter 2-9

LENGUAJE ENSAMBLADOR 80386

loop ;

PRÁCTICA 2

@@10

Copia cadenas de parámetros a parámetros globales.

@@20: push jcxz cld rep ;

cx @@30 movsb

;Salva CX para más 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

Separa @@50 [byte ptr si],0 bx

;Verifica si blanco, tabulador o retorno de carro

si @@40

;Apunta a siguiente carácter ;Sigue hasta agotar CX

[NumParam],bx

; Salva número de parámetros

;Inicia conteo de parámetros ;Omite bucle si largo = 0 ;Apunta a parámetros con SI

@@40: call jne mov inc

;Brinca si no es separador ;Cambia separador a nulo ;Incrementa conteo de parámetros

@@50: inc loop

@@60: mov ret

ENDP

TraePar

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

OBTIENE DIRECCIÓN DEL PARÁMETRO PEDIDO POR NÚMERO

PROC

CS = número de parámetros (0 = primero) NOTA: CX debe ser menor que el número de parámetros

DI = sesgo de cadena ASCIIZ del parámetro AL, CX, DI

TraeUnPar xor mov

al,al di,offset params

AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIÓN: PROFESOR PABLO FUENTES RAMOS

;AL = ASCII de terminador ;Apunta a cadena de parámetros 2-10

LENGUAJE ENSAMBLADOR 80386

jcxz cmp jae cld

PRÁCTICA 2

@@99 CX,[NumParam] @@99

;Si CX = 0, ya está hecho ;Salir si CX > número máximo ;Autoincrementa DI

@@10: scasb jnz @@10 loop @@10

;Examina si es nulo ;Repite hasta hallarlo ;Hasta agotar CX

@@99: ret

ENDP

TraeUnPar

END

;Fin de módulo PARAMS.ASM

3.9

Capturar los módulos anteriores con el nombre PARAMS.ASM

3.10

Ensamblarlos e introducirlos a la librería REM:

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

Verificar la librería REM

C>TLIB REM,CON 3.12

Capturar el programa para convertir un número decimal a binario, hexadecimal; decimal sin signo y con signo.

%TITLE

"CONVIERTE NÚMEROS DECIMALES, BINARIOS Y HEXADECIMALES"

IDEAL DOSSEG MODEL STACK ;

small 256

EQUs

FDC rc nl LarMax

EQU EQU EQU EQU

0 13 10 40

AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIÓN: PROFESOR PABLO FUENTES RAMOS

;Fin de cadena ;Ret. de carro ;ASCII para nueva línea ;Máximo largo de cadena de entrada

2-11

LENGUAJE ENSAMBLADOR 80386

PRÁCTICA 2

DATASEG ClaveFin Saludo

apronta error binario hex decimal decimalS valor Respuesta

DB DB DB DB DB DB DB DB DB DB DW DB

;Código de error de DOS 0 valores decimales, binarios y hex' rc,nl,'Convierte rc,nl,'Dar el número a convertir en decimal' rc,nl,'Dar ENTER para salir',rc,nl,FDC rc,nl,nl,nl,'¿Número a convertir? ',FDC rc,nl,'ERROR: carácter ilegal en línea',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

CODESEG ;

De MANCADE.OBJ

EXTRN ;

De CADENAS.OBJ

EXTRN ;

LeeCadena:proc,SacaCadena:proc,NuevaLinea:proc

De BINASC.OBJ

EXTRN EXTRN ;

LargoCad:proc,CopiaCad:proc

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

De PARAMS.OBJ

EXTRN

TraePar:proc,CuentaPar:proc,TraeUnPar:proc

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

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

di,offset saludo

;Apunta a bienvenida

;Trae parámetros de línea de comando ;inicia segmento ;¿Hubo parámetros ? ;No, brinca ;Trae primer parámetro ;SI apunta a buffer de entrada ;1er parámetro en cadena de entrada ;Salta a repetir (omite saludo)

normal: mov

AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIÓN: PROFESOR PABLO FUENTES RAMOS

2-12

LENGUAJE ENSAMBLADOR 80386

call ;

SacaCadena

PRÁCTICA 2

;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 ;Máxima longitud

call call jcxz call mov jnc mov call jmp

NuevaLinea LargoCad Salir AscBin [valor],ax seguir di,offset error SacaCadena repite

;Exhibe otra línea ;¿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.

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 dígitos por lo menos ;Usa misma cadena de resultado ;Halla dígitos binarios ;Exhíbelos ;Apunta a etiqueta para hexadecimal ;Exhibe cadena ;Trae valor a convertir ;Exhibe 4 dígitos por lo menos ;Usa misma cadena de resultado ;Halla dígitos hex. call Sacacadena ;Exhíbelos ;Apunta a etiqueta para decimal ;Exhibe cadena ;Trae valor a convertir ;Exhibe un dígito por lo menos ;Usa misma cadena de resultado ;Halla dígitos decimales ;Exhíbelos ;Apunta a cadena ;Exhibe cadena ;Trae valor a convertir ;Exhibe un dígito ;Usa misma cadena de resultado ;Halla dígitos decimales ;Exhíbelos

rep1:

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

AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIÓN: PROFESOR PABLO FUENTES RAMOS

2-13

LENGUAJE ENSAMBLADOR 80386

PRÁCTICA 2

Salir: mov mov int

ah,4ch al,[ClaveFin] 21h

END inicia

; Fin de módulo CONVI.ASM

El programa exhibe el saludo y comentarios, por medio de otro letrero espera la entrada del número a convertir; una vez introducido el número, se llama a los procedimientos que se encuentran en el módulo 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 opción REGS oprimir la tecla ENTER, hacer más chica la ventana con el ratón. Con F8 correr un procedimiento, con F7 ir paso a paso y con F9 correr el programa. Analizar con cuidado la conversión de un número ASCII a binario.

4.

TAREAS

4.1

Extender hasta 24 bits los números binarios soportados, según sugiere la tabla dada más abajo.

4.2

Hacer que el programa pueda convertir más de un parámetro.

AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIÓN: PROFESOR PABLO FUENTES RAMOS

2-14

LENGUAJE ENSAMBLADOR 80386

PRÁCTICA 2

4.3

Hacer que el programa sea más informativo con el usuario y exhibir un letrero con opción de realizar otro cálculo 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.

4.5

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.

NOTA:

Cuando se hagan modificaciones en un programa hay que ensamblarlo, meterlo a la librería o crear el ejecutable, según sea el caso.

COLUMNAS DEL NUMERO HEXADECIMAL 6 H E X 0 1 2 3 4 5 6 7 8 9 A B C D E F

5

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

4

3

2

H E X

DEC

H E X

DEC

H E X

DEC

H E X

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

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

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

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

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

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

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

3 2 1 0

BYTE MAYOR

7654

3210

BYTE MEDIANO

1

DEC

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

H E X

DEC

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

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

BYTE MENOR

Tabla para conversión de hexadecimal a decimal de 24 bits

AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIÓN: PROFESOR PABLO FUENTES RAMOS

2-15

LENGUAJE ENSAMBLADOR 80386

PRÁCTICA 2

EJEMPLOS DE CORRIDAS C:\SEM386>convi

Convierte valores decimales, binarios y hexadecimales Dar ENTER para salir

¿Número a convertir? 11001110101b Binario Hexadecimal Decimal sin signo Decimal con signo

0000011001110101 0675 1653 1653

¿Número a convertir? 1a3eh Binario Hexadecimal Decimal sin signo Decimal con signo

0001101000111110 1A3E 6718 6718

¿Número a convertir? C:\SEM386> C:\SEM386>convi 34567 Binario Hexadecimal Decimal sin signo Decimal con signo

1000011100000111 8707 34567 -30969

¿Número a convertir? -9817 Binario Hexadecimal Decimal sin signo Decimal con signo

1101100110100111 D9A7 55719 -9817

¿Número a convertir? 234d Binario Hexadecimal Decimal sin signo Decimal con signo

AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIÓN: PROFESOR PABLO FUENTES RAMOS

0000000011101010 00EA 234 234

2-16

LENGUAJE ENSAMBLADOR 80386

PRÁCTICA 2

¿Número a convertir? ff00h Binario Hexadecimal Decimal sin signo Decimal con signo

1111111100000000 FF00 65280 -256

¿Número a convertir? 11111 Binario Hexadecimal Decimal sin signo Decimal con signo

0010101101100111 2B67 11111 11111

¿Número a convertir? 12a3 -- ERROR: carácter ilegal en línea

¿Número a convertir? C:\SEM386>

AUTOR: PROFESOR SALVADOR SAUCEDO FLORES EDICIÓN: 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 Título: PRÁCTICA 2 Asunto: Prácticas de laboratorio de Computación V Autor: M. en C. Salvador Saucedo Flores Palabras clave: Comentarios: Fecha de creación: 05/07/02 04:00 P.M. Cambio número: 31 Guardado el: 22/07/02 12:46 P.M. Guardado por: Pablo Fuentes Ramos Tiempo de edición: 646 minutos Impreso el: 29/07/02 01:46 P.M. Última impresión completa Número de páginas: 17 Número de palabras: 2,442 (aprox.) Número de caracteres: 13,925 (aprox.)

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.