Вы находитесь на странице: 1из 7

LABORATORIO #1

Memoria Técnica

Asignatura: Arquitectura de Ordenadores.

Docente: Ing. Eduardo Suárez.

Carrera: Ingeniería Informática.

Fecha: 08 de octubre del 2018.

Hemisemestre: Primero

Facultad: Facultad de Ingeniería, Ciencias Físicas y Matemática

Universidad: Universidad Central del Ecuador

Estudiante: Núñez Carvajal Bryan Stalin

Cédula de Identidad: 1726121930

Descripción del programa

El presente programa realiza la conversión de un número de 10 dígitos, que representa la


cédula de identidad del usuario, a decimal, binario, y hexadecimal.

El usuario ingresas su número de cédula, y el programa realiza la conversión del número en


aproximadamente 1min y 30 segundos.

Una vez ingresado un dígito, no es permitido hacer rectificaciones, es decir, borrar el digito.

El algoritmo utilizado para transformar de decimal a binario fue proporcionado por Víctor
Rocha (1), y modificado para que cumpla con los requisitos del programa. El algoritmo
utilizado para la conversión de binario a hexadecimal, es de autoría propia.

Código fuente :

name "Convertidor"

org 100h

jmp start

msg db "Ingrese su numero de cedula: ",'$' ;0Dh,0Ah,24h


msg2 db 10,13,"Decimal: ",'$'
msg3 db 10,13,"Binario:",'$'
msg4 db 10,13,"Hexadecimal: ",'$'

ced db 10 DUP(?),'$'
xced db 10 DUP(?),'$'
bin db 32 DUP(?),10,13,'$'

hex db 8 DUP(?),'$'
residuo db ?
numero db ?
aux db ?
i dw ?
j db ?
acum db ?

start:

;Desplego por pantalla el mensaje


mov dx,offset msg
mov ah,09h
int 21h

mov cx,0Ah
mov si,0h

ingresar:

;Leo un caracter sin eco


mov ah,07h
int 21h

;Validar si es un numero
cmp al,2Fh
jl ingresar

cmp al,3Ah
jg ingresar

;Desplegar por pantalla el numero


mov dl,al
mov ah,02h
int 21h

;Poner el numero en el arrelo


;sub al,30h
mov ced[si],al
mov xced[si],al
inc si

loop ingresar

mov i,si

1. Tomado de : http://mis-algoritmos.com/ejemplos/asm-6.html
sub i,1

mov cx,32

Binario:

push cx

mov si,0

;mov residuo,0 ;Residuo de cero


mov al,xced[si]
sub al,30h ;Obtención de valor real
mov numero,al ;Número con que trabajaremos

;
mov Ah,00h;Aseguramos residuo de 0
mov Al,numero
mov Bl,2
div Bl
mov residuo,Ah
mov numero,Al

mov al,numero
add al,30h

mov xced[si],al

mov al,residuo
mov bl,10 ;Movemos a bl 10
mul bl ;Multiplicamos 10 por el número a convertir
mov aux,al ;Asignamos a aux el residuo
inc si
;

mov cx,i

ciclo:

mov al,xced[si]
sub al,30h ;;Obtención de valor real
add aux,al ;Lo agregamos al número anterior multiplicado por 10
mov bl,aux ;Éste ya no necesita ser multiplicado
mov numero,bl ;El número resultante a bl

1. Tomado de : http://mis-algoritmos.com/ejemplos/asm-6.html
mov Ah,00h;Aseguramos residuo de 0
mov Al,numero
mov Bl,2
div Bl
mov residuo,Ah
mov numero,Al

mov al,numero
add al,30h

mov xced[si],al
inc si

mov al,residuo
mov bl,10
mul bl
mov aux,al

loop ciclo

dec si
mov i,si
pop cx

mov di,cx
mov al,residuo
add al,30h
mov bin[di],al

loop Binario

mov di,32
push si

mov cx,8
mov si,7

hexdeci:
push cx

mov j,0
mov acum,0

mov cx,4

hexad:

mov al,bin[di]
sub al,30h

1. Tomado de : http://mis-algoritmos.com/ejemplos/asm-6.html
cmp j,0
jz x0
cmp j,1
jz x1
cmp j,2
jz x2
cmp j,3
jz x3

x0:
mov bl,1
mul bl
jmp sig

x1:
mov bl,2
mul bl
jmp sig
x2:
mov bl,4
mul bl
jmp sig
x3:
mov bl,8
mul bl
jmp sig

sig:

add acum,al
dec di
inc j

loop hexad

cmp acum,0Ah
jz s1
jnge sum
jnle sum3

s1:
add acum,55
mov al,acum
mov hex[si],al
jmp sali

sum:

add acum,30h

1. Tomado de : http://mis-algoritmos.com/ejemplos/asm-6.html
mov al,acum
mov hex[si],al
jmp sali

sum3:

add acum,37h
mov al,acum
mov hex[si],al
jmp sali

sali:
pop cx
dec si

loop hexdeci

;Desplego por pantalla el mensaje


mov dx,offset msg2
mov ah,09h
int 21h

mov dx,offset ced


mov ah,09h
int 21h

;Desplego por pantalla el mensaje


mov dx,offset msg3
mov ah,09h
int 21h

mov dx,offset bin


mov ah,09h
int 21h

;Desplego por pantalla el mensaje


mov dx,offset msg4
mov ah,09h
int 21h

mov dx,offset hex


mov ah,09h
int 21h

;Teclear para salir


mov ah,0h
int 16h

mov ax,4c00h ;.exit(Opcional)


int 21h

1. Tomado de : http://mis-algoritmos.com/ejemplos/asm-6.html
ret

1. Tomado de : http://mis-algoritmos.com/ejemplos/asm-6.html