Práctica No IV (MUM) - Facultad de Ciencias de la Computación

Anuncio
BENEMÉRITA UNIVERSIDAD AUTÓNOMA
DE PUEBLA
FACULTAD DE CIENCIAS DE LA
COMPUTACIÓN
PRÁCTICA DE LABORATORIO No IV
NOMBRE DE LA PRÁCTICA:
CONVERSIONES
OBJETIVO: APRENDER A CONVERTIR NÚMEROS HEXADECIMALES A
BINARIO ASÍ COMO LA CONVERSIÓN DE DÍGITOS HEXADECIMALES A
CÓDIGO ASCII
DESARROLLO DE LA PRÁCTICA:
Problema: hacer un programa que dado un número en hexadecimal, lo convierta e
imprima en binario.
Algoritmo
Paso 1.
Problema: Convertir 3A, a binario, o cualquier número hexadecimal.
BL <- 3A
0 0 1 1 1 0 1 0 <= BL
--------- ---------Conversión de los dígitos 0 y 1 a ASCII, (en ensamblador no hay tipos de datos, solo
hay código ASCII),
No. Código ASCII
0
30
1
31
Si tengo 0 o 1 sumar 30 se obtendrá su respectivo código ASCII.
Paso 2.
Se utilizará la bandera de acarreo, para determinar que número es el que corresponde a
cada bit.
Para depositar el carácter, se necesita que DL <- DL + 30 + CF
DL debe tener 0 + 30 + CF, determinará el numero.
Instrucción ADC (Suma con acarreo)
La instrucción ADC hace lo mismo que ADD, excepto que ADC incluye en el indicador
de acarreo (CF) en la suma. Simbólicamente
destino = destino + fuente + acarreo
NOTA : ADC es usada en la aritmética de alta precisión.
Realiza una suma normal, incluyendo la bandera de acarreo
Paso 3
Hacer un recorrido de bits, de la siguiente manera:
Rota los bits a la bandera de acarreo por el lado izquierdo y a la bandera de CF.
Instrucción RCL(Rota con acarreo a la izquierda)
Con las instrucciones rotar a la izquierda hasta el acarreo (RCL), el valor de CF pasa al
extremo opuesto del operando. Las instrucciones de rotación afectan sólo a los
indicadores CF y OF.
Ejemplo:
RCL AL, 1 si sólo es una rotación
Las instrucciones de desplazamiento y de rotación tienen dos operandos: un operando
de destino y un número. El operando de destino puede ser un registro general de 8 o de
16 bits, o una posición de memoria. El número puede ser un valor comprendido entre 1
y 31, contenido bien en la instrucción o en el registro CL.

Ejemplo:
MOV CL, 4
RCL AL,CL
Paso 4
INSTRUCCIONES DE BUCLE
Las instrucciones de bucle pueden hacer que el 286 repita secciones completas de un
programa. En estas instrucciones el registro CX sirve como contador de repetición.
Cada instrucción de bucle reduce CX en 1; después de una decisión de salto/no salto
basándose en el nuevo valor.
La instrucción básica de este grupo, repetir hasta completar el contador (LOOP), reduce
CX en 1 y transfiere el control a un operando de destino "etiqueta corta" si CX no es
cero. por ejemplo, para repetir 100 veces un bloque de instrucciones, se podría usar la
siguiente secuencia:
MOV
CX,100
;
Carga
en
CX
el
contador
de
repetición
COMIENZO:
....
;
Aquí
van
las
instrucciones
que
se
van
a
repetir
....
;
LOOP
COMIENZO
;
si
CX
no
es
cero,
salta
a
COMIENZO
.... ; En caso contrario sigue aquí
La instrucción LOOP sólo termina el bucle si CX ha sido reducido hasta llegar a cero.
Sin embargo, muchas aplicaciones requieren bucles que además han de terminar si
sucede algo antes de que CX llegue a ser cero.
dir ______
______
______
______
LOOP dir
CX <- CX -1
Ejercicio No. 1:
Hacer un programa que haga lo siguiente:
Número hexadecimal a convertir: 3A
El número convertido en binario es: 00111010
Conversiones
Problema:
Imprimir un sólo dígito hexadecimal del 0..9 y A..F
Algortimo
Conversión de un caracter a código ASCII:
Para convertir un sólo dígito debemos sumar 30.
Para caracteres se le suman 37.
INSTRUCCIÓN CMP:
COMPARAR EL DESTINO CON LA FUENTE (CMP )
Al igual que la instrucción SUB, CMP resta un valor fuente de un valor de destino, y
activa o desactiva los indicadores según el resultado. Pero al contrario que la instrucción
SUB, la instrucción CMP no guarda el resultado de la tarea; es decir, no altera el valor
de destino. El único propósito de la instrucción CMP es asignar valores a los
indicadores para que las instrucciones de salto condicional puedan tomar decisiones.
Compara los valores de dos registros, un registro y dato inmediato o
registro y memoria. Realiza una resta virtual.
Ejemplo:
-CMP AL, DL
-AL = DL
-AL > DL
-AL < DL
ejemplo
-CMP AL, 3A
INSTRUCCION JL.- Salta si es menor
Ejemplo:
-MOV AH, 02
-MOV BL, 0A
-MOV DL, BL
-ADD DL, 30
-CMP DL, 3A
-JL (dirección)
-ADD DL,7
(dirección) INT 21
INT 20
Ejercicio 2:
Hacer un programa que dados 2 números de un solo digito, los sume e
imprima el resultado en pantalla, de la siguiente manera:
El primer número es: 7.
El segundo número es: 4.
El resultado de la suma es: B.
Descargar