SlideShare una empresa de Scribd logo
UNIVERSIDAD NACIONAL DE SAN AGUSTIN
FACULTAD INGENIERA DE PRODUCCIÓN
Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERA DE
SISTEMAS
CURSO: ARQUITECTURA DE
COMPUTADORAS
DOCENTE: ING. PEDRO RODRIGUEZ
PROPIO:
-SONCCO CHUTAYA FREDY
Informe de mi Programa en Emu8086
Tipo de programa: Juego
Introducción:
Este programa consiste en adivinar un número almacenado en nuestro programa, para esto el
usuario tendrá que ingresar el número que él cree que sea correcto. Y Nuestro programa le
brindara respuestas como; El número buscado es mayor o menor; de esta manera pueda llegar
al número correcto.
Recibirá otro mensaje si acierta con el numero buscando. Automáticamente Se le preguntara al
Usuario si desea continuar jugando (y/n).
Si se Escoge la opción el programa se seguirá ejecutando caso contrario el programa culminara.
Código fuente y breve explicación del Programa:
En nuestras tres primeras líneas de código: son instrucciones del modelo de memoria, segmento
de banderas, segmentos de datos y segmentos de Código respectivamente.
.model small ; Modelo de Memoria.
.stack 100h ; Segmentos de banderas.
.data ; Segmentos de datos.
//Declaración de variables
…
.code ; Segmentos de código.
Las siguientes instrucciones corresponden a la declaración de todas las variables utilizadas en
nuestro programa.
I. Constantes:
- CR y LF
II. Variables:
- number: esta variable será el número que el usuario debe adivinar.
- Guess: Guardara el numero ingresado por el usuario.
- erroChk: Esta variable la utilizaremos para comparar y verificar que guess no esté
fuera de rango.
III. Mensajes:
- Prompt, LessMsg, MoreMsg, equalMsg, OverflowMsg y retry.
number db 51d ;variable 'number' Se almacena el valor aleatorio
;Declaración de Constantes
CR equ 13d
LF equ 10d
;Mensajes que dará nuestro programa cuando se esté ejecutando
prompt db CR, LF,'Ingrese numero : $'
lessMsg db CR, LF,'El numero buscado es Menor','$'
moreMsg db CR, LF,'El numero buscado es Mayor ', '$'
equalMsg db CR, LF,'El numero es Correcto!', '$'
overflowMsg db CR, LF,'Error - Numero fuera de rango', '$'
retry db CR, LF,'Continuar [y/n] ? ' ,'$'
guess db 0d ;Variable guardara el valor introducido por el usuario
errorChk db 0d ;Variable se utilizara para comparar si el numero introducido esta
Fuera de rango.
param label Byte
Función start:
- Las primeras 4 líneas de código a los registros ax, bx, cx y dx,se les da el valor de 0.
- Las siguientes líneas de código realizamos movimientos donde guardaremos el valor
de nuestras variables creadas anteriormente en nuestros registros mencionados.
start: ; Inicio de START
MOV ax, 0h
MOV bx, 0h
MOV cx, 0h
MOV dx, 0h
MOV BX, OFFSET guess ; obtener la dirección de la variable guess en BX.
MOV BYTE PTR [BX], 0d ; establecer 'guess' a 0 (decimal) // BYTE PTR valor de 8 bits
MOV BX, OFFSET errorChk ; obtener la dirección de la variable errorChk en BX.
MOV BYTE PTR [BX], 0d ; establecer 'errorChk' a 0 (decimal) // BYTE PTR valor de 8 bits
MOV ax, @data ; carga en AX la dirección del segmento de datos
MOV ds, ax ; mueve la dirección al registro de segmento por medio de AX
MOV dx, offset prompt ; Carga prompt en DX
MOV ah, 9h ; Escribe cadena a STDOUT en ah
INT 21h ; Interrupción ( para DOS)
MOV cl, 0h ; Carga en CL 0 (Contador)
MOV dx, 0h ; Carga en DX 0 (Datos registro utilizado para almacenar la entrada
del usuario)
; END START
Función while:
- Esta función se encarga de leer la entrada del usuario donde primero se valida que
no superen los 5 dígitos para comparar usa el registro CL (que sería nuestro
contador).
- Después se procede a preguntar si la última tecla que el usuario presiono sea
‘ENTER’, si es así se salta a la función ‘endwhile’. Caso contrario pasara a la siguiente
instrucción.
- Las siguientes instrucciones se encargan de almacenar el valor ingresado por el
usuario en DL.
- Se incrementa en 1 a nuestro Contador que es CL.
- Finalmente hace un salto hacia la misma función.
- Para salir de esta función el usuario tendría que presionar la tecla ENTER.
; -- leyendo la entrada del usuario
while:
CMP cl, 5d ;Compara CL y 5d ( porque 5 es el número máximo de dígitos
permitidos)
JG endwhile ; Si CL > 5 entonces salta a la función 'endwhile'.
MOV ah, 1h ; Leer valor de STDIN en ah
INT 21h ; Interrupción ( para DOS)
CMP al, 0Dh ; comparar el valor leído con 0Dh que es el código ASCII para la tecla
ENTER
JE endwhile ; Si AL = 0Dh, Significa que ha presionado ENTER entonces se salta la
función 'endwhile'
SUB al, 30h ; 30h se resta el valor ASCII de entrada para obtener el numero real.
(ya que 30h ASCII = número '0')
MOV dl, al ; Mueve el valor de la entrada a dl.
PUSH dx ; saca DX en la pila, para conseguir que leer para leer la próxima
entrada
INC cl ; Incrementa CL
JMP while ; Sala de nuevo a la función while.
Función endwhile:
- En esta función retorna el mensaje contenido en la variable errorChk.
- Esta función solo se activara en caso la entrada ingresada no cumple con el límite
de dígitos pedidos por nuestro programa.
- En la Primera línea de instrucción se decrementa nuestro contador porque en la
función anterior hicimos un incremento más.
- En las últimas instrucciones de guarda la dirección del valor de ‘errorChk’ en BX y al
final nuestro contador se hace en 0 nuevamente.
- Para comenzar nuevamente a procesar la entrada del usuario.
endwhile:
; Fin de la entrada del usuario
DEC cl ; decremento CL por uno para reducir el incremento hecho en la última
iteración
CMP cl, 02h ; comparar CL con 02, ya que solo 3 números pueden ser aceptados
como EN RANGO
JG overflow ; si CL (número de caracteres de entrada) es mayor que 3 Cambiar a la
label 'overflow'
MOV BX, OFFSET errorChk ; obtener la dirección de la variable 'errorChk' en BX.
MOV BYTE PTR [BX], cl ; establecer "errorChk 'al valor de CL
MOV cl, 0h ; CL fijado a 0, porque contador se utiliza en la siguiente sección de
nuevo
Función while2:
- Esta función Crea la representación numérica real del número ingresado por el
usuario como tres caracteres.
- Esta representación se envía a la función while3 que hará la conversión de estos
caracteres a decimal.
- Para después poder hacer la comparaciones con nuestra variable ‘number’ y poder
saber si el usuario ha ingresado el numero o correcto o aun no.
; Comenzar a procesar la entrada del usuario
; Crea la representación numérica real del número ingresado por el usuario como tres
caracteres.
while2:
CMP cl,errorChk
JG endwhile2
POP dx ; POP DX valor almacenado en la pila, (del digito menos significativo m
para el digito más significativo)
MOV ch, 0h ; limpia CH y se utiliza en este bucle interior como contador
MOV al, 1d ; inicializa AL en 1 (decimal)
MOV dh, 10d ; establece a DH el 10 (decimal)
Función While3:
- Esta función se encarga de convertir los caracteres ingresados por el usuario y
convertirlos.
- Esta conversión se realizara por ciclos, dependiendo de nuestra variable CL (nuestro
contador).
- Para esto usaremos otro contador que será CH. Para recorre CL.
- Saldremos de while3 cuando CH iguale a CL.
; COMIENZO bucle; - SI CL es 2
; - Primera bucle producirá 10 ^ 0
; - Segundo bucle producirá 10 ^ 1
; - Tercera bucle producirá 10 ^ 2
while3:
CMP ch, cl ; Compara CH y CL
JGE endwhile3 ; si CH >= CL, salta a 'endwhile3
MUL dh ; AX = AL * DH donde DH es = to (AL * 10)
INC ch ; incremento CH
JMP while3 ; Salto a 'while3'
Función Endwhile3:
; Fin del cálculo de la potencia
; AL ahora contiene 10 ^ 0, 1 o 10 ^ 10 ^ 2 en función del valor de CL
MUL dl ; AX = AL * DL, que es el valor real de posición de número
JO overflow ; Si hay un salto de desbordamiento en 'overflow' label (para valores
por encima de 300)
MOV dl, al ; mover el resultado de la multiplicación a DL
ADD dl, guess ; añadir resultado (valor posicional real del numero) al valor de
'adivinar' la variable
JC overflow ; Si hay un salto de desbordamiento en label 'overflow' (para valores
por encima de 255 a 300)
MOV BX, OFFSET guess ; obtener la dirección de la variable 'guess' en BX.
MOV BYTE PTR [BX], dl ; Establecer el valor de 'errorChk' a DL
INC cl ; Incrementa CL contador
JMP while2 ; Salta hacia atrás a 'while2'
Función Endwhile2:
- Esta función se encarga de comparar nuestro entrada del usuario ya convertida a
decimal
- Si guess (Valor ingresado por el usuario) es igual a number(valor buscado) entonces
se hace un salto a la función ‘equal’.
- Si guess (Valor ingresado por el usuario) es mayor number(valor buscado) entonces
se hace un salto a la función ‘greater’.
- Si guess (Valor ingresado por el usuario) es menor a number(valor buscado)
entonces se hace un salto a la función ‘lower’.
endwhile2:
; Fin del proceso de La entrada del usuario.
MOV ax, @data ; obtener la dirección de los datos a AX
MOV ds, ax ; obtener 'data segment' al valor de AX que es 'address of data'.
MOV dl, number ; Carga 'number' a DL
MOV dh, guess ; Carga 'guess' a DH
CMP dh, dl ; Compara DH y DL (DH - DL)
JC greater ; si DH (GUESS) > DL (NUMBER) salta a la función greater
JE equal ; si DH (GUESS) = DL (NUMBER) salta a la función equal
JG lower ; si DH (GUESS) < DL (NUMBER) salta a la función lower
Función Equal:
- Esta función imprime el mensaje almacenado en la variable ‘equalMsg’.
- Posteriormente sala a la función ‘exit.’
-
equal:
;Carga el contenido de la variable equalMsg
MOV dx, offset equalMsg ; Carga la dirección del mensaje de 'equalMsg' a DX
MOV ah, 9h ; Escribe una cadena de STDOUT (para DOS interrupt)
INT 21h ; (Interrupción DOS)
JMP exit ; Salta a 'exit'
Función Greater:
- Esta función imprime el mensaje almacenado en la variable ‘moreMsg’.
- Posteriormente salta al inicio del programa para que el usuario pueda ingresar otro
número. ‘start’
greater:
MOV dx, offset moreMsg ; Carga la dirección del mensaje de 'moreMsg' a DX
MOV ah, 9h ; Escribe una cadena de STDOUT (para DOS interrupt)
INT 21h ; (Interrupción DOS)
JMP start ; Salta al inicio del programa(start)
Función Lower:
- Esta función imprime el mensaje almacenado en la variable ‘lessMsg’.
- Posteriormente salta al inicio del programa para que el usuario pueda ingresar otro
número. ‘start’
lower:
MOV dx, offset lessMsg ; Carga la dirección del mensaje de 'lessMsg' a DX
MOV ah, 9h ; Escribe una cadena de STDOUT (para DOS interrupt)
INT 21h ; (Interrupción DOS)
JMP start ; Salta al inicio del programa(start)
Función Overflow:
- Esta función imprime el mensaje almacenado en la variable ‘overflowMsg’.
- Posteriormente salta al inicio del programa para que el usuario pueda ingresar otro
número. ‘start’
overflow:
MOV dx, offset overflowMsg ; Carga la dirección del mensaje de 'overflowMsg' a DX
MOV ah, 9h ; Escribe una cadena de STDOUT (para DOS interrupt)
INT 21h ; (Interrupción DOS)
JMP start ; Salta al inicio del programa(start)
Funciónes Exit y retry_while:
Retry_while:
- En esta función se muestra un mensaje preguntando al usuario si desea seguir
ejecutando el programa.
- Donde el usuario solo puede responder con ‘y’ y ‘n’. Si el ingresa otro carácter
nuestro programa volverá a preguntar si desea continuar.
- Si el usuario ingresa ’n’ se salta a la función ‘return_to_DOS’. Caso contrario ingrese
‘y’ se salta a la función ‘restart’.
exit:
; Preguntar al usuario si necesita volver a intentarlo
retry_while:
MOV dx, offset retry ; Carga la dirección del mensaje de 'prompt' a DX
MOV ah, 9h ; Escribe una cadena de STDOUT (para DOS interrupt)
INT 21h ; (Interrupción DOS)
MOV ah, 1h ; lee un carácter de STDIN en AL (para DOS interrupt)
INT 21h ; (Interrupción DOS)
CMP al, 6Eh ; Compara si la entrada es 'n'
JE return_to_DOS ; llama a 'return_to_DOS' si la entrada es 'n'
CMP al, 79h ; revisa si la entrada es'y'
JE restart ; llamar a 'restart' si la entrada es 'y'
; salta a "restart"
JMP retry_while ; Si la entrada no es 'y' ni 'n', se vuelve a preguntar
Funciónes retry_endwhile , restart y return_to_DOS:
restat:
- Esta función nos envía al inicio del programa.
Return_to_DOS:
- Esta función finaliza nuestro programa.
retry_endwhile:
restart:
JMP start ; Salta al inicio del programa(start)
return_to_DOS:
MOV ax, 4c00h ; Retorna ms-dos
INT 21h ; (Interrupcion DOS)
end start ;finaliza start
RET
Programa en emu8086

Más contenido relacionado

La actualidad más candente

03 Modelo Relacional
03 Modelo Relacional03 Modelo Relacional
03 Modelo Relacional
Kudos S.A.S
 
Estructura de un compilador 2
Estructura de un compilador 2Estructura de un compilador 2
Estructura de un compilador 2
perlallamas
 
Ejercicios
EjerciciosEjercicios
Ejercicios
Ricardo Tejera
 
Investigacion errores lexicos
Investigacion errores lexicosInvestigacion errores lexicos
Investigacion errores lexicos
Borreguito Inolvidable
 
Generador de codigo intermedio
Generador de codigo intermedioGenerador de codigo intermedio
Generador de codigo intermedio
Guillermo
 
Modelo Entidad Relación
Modelo Entidad RelaciónModelo Entidad Relación
Modelo Entidad Relación
josecuartas
 
Modos de direccionamiento y formatos
Modos de direccionamiento y formatosModos de direccionamiento y formatos
Modos de direccionamiento y formatos
Aldo Antonio Blanco Villalobos
 
Sumador de 4 bits
Sumador de 4 bitsSumador de 4 bits
Sumador de 4 bits
Abril Bello
 
Taller de Base de Datos - Unidad 7 Conectividad
Taller de Base de Datos - Unidad 7 ConectividadTaller de Base de Datos - Unidad 7 Conectividad
Taller de Base de Datos - Unidad 7 Conectividad
José Antonio Sandoval Acosta
 
Unidad 2 expresiones regulares
Unidad 2 expresiones regularesUnidad 2 expresiones regulares
Unidad 2 expresiones regulares
ROSA IMELDA GARCIA CHI
 
Analisis lexico automatas i
Analisis lexico automatas iAnalisis lexico automatas i
Analisis lexico automatas i
rubiyanetvalenciavelazquez
 
DISEÑO DE SALIDA DEL SISTEMA
DISEÑO DE SALIDA DEL SISTEMADISEÑO DE SALIDA DEL SISTEMA
DISEÑO DE SALIDA DEL SISTEMA
Diana Marcela Hernandez Amaya
 
Ejercicios resueltos diagramas de claseaula (1)
Ejercicios resueltos diagramas de claseaula (1)Ejercicios resueltos diagramas de claseaula (1)
Ejercicios resueltos diagramas de claseaula (1)
William Lozano
 
Normalización de la base de datos (3 formas normales)
Normalización de la base de datos (3 formas normales)Normalización de la base de datos (3 formas normales)
Normalización de la base de datos (3 formas normales)
michell_quitian
 
Bases de datos my sql
Bases de datos my sqlBases de datos my sql
Bases de datos my sql
evavivez
 
Control de flujo en Telecomunicaciones
Control de flujo en TelecomunicacionesControl de flujo en Telecomunicaciones
Control de flujo en Telecomunicaciones
Daniel Morales
 
Guía rápida tmr0 e interrupciones
Guía rápida tmr0 e interrupcionesGuía rápida tmr0 e interrupciones
Guía rápida tmr0 e interrupciones
Luis Zurita
 
Unidad 2 ensamblador
Unidad 2   ensambladorUnidad 2   ensamblador
Unidad 2 ensamblador
eveTalavera
 
Automatas Finitos Deterministicos y No Deterministicos
Automatas Finitos Deterministicos y No DeterministicosAutomatas Finitos Deterministicos y No Deterministicos
Automatas Finitos Deterministicos y No Deterministicos
Rosviannis Barreiro
 
Lenguajes regulares
Lenguajes regularesLenguajes regulares
Lenguajes regulares
Kenia Adams
 

La actualidad más candente (20)

03 Modelo Relacional
03 Modelo Relacional03 Modelo Relacional
03 Modelo Relacional
 
Estructura de un compilador 2
Estructura de un compilador 2Estructura de un compilador 2
Estructura de un compilador 2
 
Ejercicios
EjerciciosEjercicios
Ejercicios
 
Investigacion errores lexicos
Investigacion errores lexicosInvestigacion errores lexicos
Investigacion errores lexicos
 
Generador de codigo intermedio
Generador de codigo intermedioGenerador de codigo intermedio
Generador de codigo intermedio
 
Modelo Entidad Relación
Modelo Entidad RelaciónModelo Entidad Relación
Modelo Entidad Relación
 
Modos de direccionamiento y formatos
Modos de direccionamiento y formatosModos de direccionamiento y formatos
Modos de direccionamiento y formatos
 
Sumador de 4 bits
Sumador de 4 bitsSumador de 4 bits
Sumador de 4 bits
 
Taller de Base de Datos - Unidad 7 Conectividad
Taller de Base de Datos - Unidad 7 ConectividadTaller de Base de Datos - Unidad 7 Conectividad
Taller de Base de Datos - Unidad 7 Conectividad
 
Unidad 2 expresiones regulares
Unidad 2 expresiones regularesUnidad 2 expresiones regulares
Unidad 2 expresiones regulares
 
Analisis lexico automatas i
Analisis lexico automatas iAnalisis lexico automatas i
Analisis lexico automatas i
 
DISEÑO DE SALIDA DEL SISTEMA
DISEÑO DE SALIDA DEL SISTEMADISEÑO DE SALIDA DEL SISTEMA
DISEÑO DE SALIDA DEL SISTEMA
 
Ejercicios resueltos diagramas de claseaula (1)
Ejercicios resueltos diagramas de claseaula (1)Ejercicios resueltos diagramas de claseaula (1)
Ejercicios resueltos diagramas de claseaula (1)
 
Normalización de la base de datos (3 formas normales)
Normalización de la base de datos (3 formas normales)Normalización de la base de datos (3 formas normales)
Normalización de la base de datos (3 formas normales)
 
Bases de datos my sql
Bases de datos my sqlBases de datos my sql
Bases de datos my sql
 
Control de flujo en Telecomunicaciones
Control de flujo en TelecomunicacionesControl de flujo en Telecomunicaciones
Control de flujo en Telecomunicaciones
 
Guía rápida tmr0 e interrupciones
Guía rápida tmr0 e interrupcionesGuía rápida tmr0 e interrupciones
Guía rápida tmr0 e interrupciones
 
Unidad 2 ensamblador
Unidad 2   ensambladorUnidad 2   ensamblador
Unidad 2 ensamblador
 
Automatas Finitos Deterministicos y No Deterministicos
Automatas Finitos Deterministicos y No DeterministicosAutomatas Finitos Deterministicos y No Deterministicos
Automatas Finitos Deterministicos y No Deterministicos
 
Lenguajes regulares
Lenguajes regularesLenguajes regulares
Lenguajes regulares
 

Destacado

Emulador 8086.
Emulador 8086.Emulador 8086.
Emulador 8086.
Cesar Sandoval
 
Tutorial ensamblador
Tutorial ensambladorTutorial ensamblador
Tutorial ensamblador
ÄsTrid RäNgël
 
Programa Emu8086
Programa Emu8086Programa Emu8086
Programa Emu8086
Santy Bolo
 
1978 microprocesador 8086
1978 microprocesador 80861978 microprocesador 8086
1978 microprocesador 8086
Arturo Iglesias Castro
 
Emulador emu8086
Emulador emu8086Emulador emu8086
Emulador emu8086
Alberto Jacome
 
Programacion ensamblador-procesadoresk
Programacion ensamblador-procesadoreskProgramacion ensamblador-procesadoresk
Programacion ensamblador-procesadoresk
Johann Chambilla
 
Curso básico de ensamblador
Curso básico de ensambladorCurso básico de ensamblador
Curso básico de ensamblador
Andres Justiniano De la Cruz
 
Temario lenguaje ensamblador
Temario lenguaje ensambladorTemario lenguaje ensamblador
Temario lenguaje ensamblador
Francisco Cardona
 
Procesador intel 8086
Procesador intel 8086 Procesador intel 8086
Procesador intel 8086
MCRBTALLER
 
Lenguaje ensamblador basico
Lenguaje ensamblador basicoLenguaje ensamblador basico
Lenguaje ensamblador basico
Gustavo Davila
 
Lenguaje Ensamblador
Lenguaje EnsambladorLenguaje Ensamblador
Lenguaje Ensamblador
Jesus Cuellar Sanchez
 

Destacado (11)

Emulador 8086.
Emulador 8086.Emulador 8086.
Emulador 8086.
 
Tutorial ensamblador
Tutorial ensambladorTutorial ensamblador
Tutorial ensamblador
 
Programa Emu8086
Programa Emu8086Programa Emu8086
Programa Emu8086
 
1978 microprocesador 8086
1978 microprocesador 80861978 microprocesador 8086
1978 microprocesador 8086
 
Emulador emu8086
Emulador emu8086Emulador emu8086
Emulador emu8086
 
Programacion ensamblador-procesadoresk
Programacion ensamblador-procesadoreskProgramacion ensamblador-procesadoresk
Programacion ensamblador-procesadoresk
 
Curso básico de ensamblador
Curso básico de ensambladorCurso básico de ensamblador
Curso básico de ensamblador
 
Temario lenguaje ensamblador
Temario lenguaje ensambladorTemario lenguaje ensamblador
Temario lenguaje ensamblador
 
Procesador intel 8086
Procesador intel 8086 Procesador intel 8086
Procesador intel 8086
 
Lenguaje ensamblador basico
Lenguaje ensamblador basicoLenguaje ensamblador basico
Lenguaje ensamblador basico
 
Lenguaje Ensamblador
Lenguaje EnsambladorLenguaje Ensamblador
Lenguaje Ensamblador
 

Similar a Programa en emu8086

Informe técnico 1
Informe técnico 1Informe técnico 1
Informe técnico 1
Saya Paredes
 
5.quinto ejercicio emu8086
5.quinto ejercicio emu80865.quinto ejercicio emu8086
5.quinto ejercicio emu8086
Sebastian Gonzalez
 
Comandos de Raptor,C# y Java
Comandos de Raptor,C# y JavaComandos de Raptor,C# y Java
Comandos de Raptor,C# y Java
Ana Ruth G H
 
2.introducción a las aplicaciones en c++
2.introducción a las aplicaciones en c++2.introducción a las aplicaciones en c++
2.introducción a las aplicaciones en c++
Ramiro Estigarribia Canese
 
TAREA 04_removed.pdf
TAREA 04_removed.pdfTAREA 04_removed.pdf
TAREA 04_removed.pdf
GUILLERMOROBERTOPAZJ
 
Programación en lenguaje C
Programación en  lenguaje C Programación en  lenguaje C
Programación en lenguaje C
Fer Torres
 
Abc algoritmos
Abc algoritmos Abc algoritmos
Abc algoritmos
Juan Carlos Avalo Gómez
 
Manual De Pascal
Manual De PascalManual De Pascal
Manual De Pascal
MANUELRSG
 
Pseudocodigo
PseudocodigoPseudocodigo
Pseudocodigo
josuedelangel
 
Registros de la cpu
Registros de la cpuRegistros de la cpu
Registros de la cpu
Criistina RoOjas
 
1: funciones matematicas y cadena de caracteres 2:operacion de asignacion: ar...
1: funciones matematicas y cadena de caracteres 2:operacion de asignacion: ar...1: funciones matematicas y cadena de caracteres 2:operacion de asignacion: ar...
1: funciones matematicas y cadena de caracteres 2:operacion de asignacion: ar...
Anderson Urbina Coronado
 
ACTIVIDAD 4.docx
ACTIVIDAD 4.docxACTIVIDAD 4.docx
ACTIVIDAD 4.docx
PabloLoenardoDA
 
Escuela
EscuelaEscuela
Escuela
judithely
 
Escuela
EscuelaEscuela
Escuela
judithely
 
Teorico2
Teorico2Teorico2
Teorico2
equisyolo27
 
1: funciones matematicas y cadena de caracteres 2:operacion de asignacion: ar...
1: funciones matematicas y cadena de caracteres 2:operacion de asignacion: ar...1: funciones matematicas y cadena de caracteres 2:operacion de asignacion: ar...
1: funciones matematicas y cadena de caracteres 2:operacion de asignacion: ar...
Anderson Urbina Coronado
 
Emulador de ensamblador emu8086
Emulador de ensamblador emu8086Emulador de ensamblador emu8086
Emulador de ensamblador emu8086
Anthony Benalcazar
 
Manual Practico de Pascal
Manual Practico de PascalManual Practico de Pascal
Manual Practico de Pascal
apohlo
 
Capítulo 1 Qbasic entrada y salida básica
Capítulo 1  Qbasic entrada y salida básicaCapítulo 1  Qbasic entrada y salida básica
Capítulo 1 Qbasic entrada y salida básica
Julio Ayala Rolón
 
Clase 7
Clase 7Clase 7
Clase 7
esvin Rey
 

Similar a Programa en emu8086 (20)

Informe técnico 1
Informe técnico 1Informe técnico 1
Informe técnico 1
 
5.quinto ejercicio emu8086
5.quinto ejercicio emu80865.quinto ejercicio emu8086
5.quinto ejercicio emu8086
 
Comandos de Raptor,C# y Java
Comandos de Raptor,C# y JavaComandos de Raptor,C# y Java
Comandos de Raptor,C# y Java
 
2.introducción a las aplicaciones en c++
2.introducción a las aplicaciones en c++2.introducción a las aplicaciones en c++
2.introducción a las aplicaciones en c++
 
TAREA 04_removed.pdf
TAREA 04_removed.pdfTAREA 04_removed.pdf
TAREA 04_removed.pdf
 
Programación en lenguaje C
Programación en  lenguaje C Programación en  lenguaje C
Programación en lenguaje C
 
Abc algoritmos
Abc algoritmos Abc algoritmos
Abc algoritmos
 
Manual De Pascal
Manual De PascalManual De Pascal
Manual De Pascal
 
Pseudocodigo
PseudocodigoPseudocodigo
Pseudocodigo
 
Registros de la cpu
Registros de la cpuRegistros de la cpu
Registros de la cpu
 
1: funciones matematicas y cadena de caracteres 2:operacion de asignacion: ar...
1: funciones matematicas y cadena de caracteres 2:operacion de asignacion: ar...1: funciones matematicas y cadena de caracteres 2:operacion de asignacion: ar...
1: funciones matematicas y cadena de caracteres 2:operacion de asignacion: ar...
 
ACTIVIDAD 4.docx
ACTIVIDAD 4.docxACTIVIDAD 4.docx
ACTIVIDAD 4.docx
 
Escuela
EscuelaEscuela
Escuela
 
Escuela
EscuelaEscuela
Escuela
 
Teorico2
Teorico2Teorico2
Teorico2
 
1: funciones matematicas y cadena de caracteres 2:operacion de asignacion: ar...
1: funciones matematicas y cadena de caracteres 2:operacion de asignacion: ar...1: funciones matematicas y cadena de caracteres 2:operacion de asignacion: ar...
1: funciones matematicas y cadena de caracteres 2:operacion de asignacion: ar...
 
Emulador de ensamblador emu8086
Emulador de ensamblador emu8086Emulador de ensamblador emu8086
Emulador de ensamblador emu8086
 
Manual Practico de Pascal
Manual Practico de PascalManual Practico de Pascal
Manual Practico de Pascal
 
Capítulo 1 Qbasic entrada y salida básica
Capítulo 1  Qbasic entrada y salida básicaCapítulo 1  Qbasic entrada y salida básica
Capítulo 1 Qbasic entrada y salida básica
 
Clase 7
Clase 7Clase 7
Clase 7
 

Más de Fredy Soncco

Preguntas tc
Preguntas tcPreguntas tc
Preguntas tc
Fredy Soncco
 
Analisis Lexico
Analisis  LexicoAnalisis  Lexico
Analisis Lexico
Fredy Soncco
 
Introduccion a la ingenieria de SW
Introduccion a la ingenieria de SWIntroduccion a la ingenieria de SW
Introduccion a la ingenieria de SW
Fredy Soncco
 
Introduccion a la ingenieria de SW
Introduccion a la ingenieria de SWIntroduccion a la ingenieria de SW
Introduccion a la ingenieria de SW
Fredy Soncco
 
Arquitectura de Computadoras
Arquitectura de ComputadorasArquitectura de Computadoras
Arquitectura de Computadoras
Fredy Soncco
 
Contrato de transaccion de bienes muebles
Contrato de transaccion de bienes mueblesContrato de transaccion de bienes muebles
Contrato de transaccion de bienes muebles
Fredy Soncco
 
Base de Datos- Toad
Base de Datos- ToadBase de Datos- Toad
Base de Datos- Toad
Fredy Soncco
 
Guia 3
Guia 3Guia 3
Guia 3
Fredy Soncco
 
Guia2 ac
Guia2 acGuia2 ac
Guia2 ac
Fredy Soncco
 
2 eficiencia
2 eficiencia2 eficiencia
2 eficiencia
Fredy Soncco
 

Más de Fredy Soncco (10)

Preguntas tc
Preguntas tcPreguntas tc
Preguntas tc
 
Analisis Lexico
Analisis  LexicoAnalisis  Lexico
Analisis Lexico
 
Introduccion a la ingenieria de SW
Introduccion a la ingenieria de SWIntroduccion a la ingenieria de SW
Introduccion a la ingenieria de SW
 
Introduccion a la ingenieria de SW
Introduccion a la ingenieria de SWIntroduccion a la ingenieria de SW
Introduccion a la ingenieria de SW
 
Arquitectura de Computadoras
Arquitectura de ComputadorasArquitectura de Computadoras
Arquitectura de Computadoras
 
Contrato de transaccion de bienes muebles
Contrato de transaccion de bienes mueblesContrato de transaccion de bienes muebles
Contrato de transaccion de bienes muebles
 
Base de Datos- Toad
Base de Datos- ToadBase de Datos- Toad
Base de Datos- Toad
 
Guia 3
Guia 3Guia 3
Guia 3
 
Guia2 ac
Guia2 acGuia2 ac
Guia2 ac
 
2 eficiencia
2 eficiencia2 eficiencia
2 eficiencia
 

Último

sistema paralingüística fhdjsjsbsnnssnnsbs
sistema paralingüística fhdjsjsbsnnssnnsbssistema paralingüística fhdjsjsbsnnssnnsbs
sistema paralingüística fhdjsjsbsnnssnnsbs
SantiagoMejia99
 
vivienda segura concreto, construcción y métodos
vivienda segura concreto, construcción y métodosvivienda segura concreto, construcción y métodos
vivienda segura concreto, construcción y métodos
DilmerCarranza
 
nombres de las unidades y situacion significativa 2024.docx
nombres de las unidades y situacion significativa 2024.docxnombres de las unidades y situacion significativa 2024.docx
nombres de las unidades y situacion significativa 2024.docx
silvanasotos
 
Sistema informatico, power point asir 1 curso
Sistema informatico, power point asir 1 cursoSistema informatico, power point asir 1 curso
Sistema informatico, power point asir 1 curso
NereaMolina10
 
Obligaciones_de_los_Municipios_y_Departamentos_en_los_Determinantes_Ambiental...
Obligaciones_de_los_Municipios_y_Departamentos_en_los_Determinantes_Ambiental...Obligaciones_de_los_Municipios_y_Departamentos_en_los_Determinantes_Ambiental...
Obligaciones_de_los_Municipios_y_Departamentos_en_los_Determinantes_Ambiental...
defola5717
 
3-Modelamiento de Procesos usando BPMN.ppt
3-Modelamiento de Procesos usando BPMN.ppt3-Modelamiento de Procesos usando BPMN.ppt
3-Modelamiento de Procesos usando BPMN.ppt
nahumrondanurbano
 
Plan Emergencia solicitado en obras de construccion
Plan Emergencia  solicitado en obras de construccionPlan Emergencia  solicitado en obras de construccion
Plan Emergencia solicitado en obras de construccion
christianllacchasand
 
Minería de Datos e IA Conceptos, Fundamentos y Aplicaciones.pdf
Minería de Datos e IA  Conceptos, Fundamentos y Aplicaciones.pdfMinería de Datos e IA  Conceptos, Fundamentos y Aplicaciones.pdf
Minería de Datos e IA Conceptos, Fundamentos y Aplicaciones.pdf
MedTechBiz
 
Encuesta CATI Verdad Venezuela abril 2024 (PÚBLICO).pdf
Encuesta CATI Verdad Venezuela abril 2024 (PÚBLICO).pdfEncuesta CATI Verdad Venezuela abril 2024 (PÚBLICO).pdf
Encuesta CATI Verdad Venezuela abril 2024 (PÚBLICO).pdf
DivergenteDespierto
 
04 capital interes simple.pdf de la clase métodos cuantitativos
04 capital interes simple.pdf de la clase métodos cuantitativos04 capital interes simple.pdf de la clase métodos cuantitativos
04 capital interes simple.pdf de la clase métodos cuantitativos
MarcoPolo545324
 
10 colonias - Análisis socio-demográfico 2024.pdf
10 colonias - Análisis socio-demográfico 2024.pdf10 colonias - Análisis socio-demográfico 2024.pdf
10 colonias - Análisis socio-demográfico 2024.pdf
IrapuatoCmovamos
 
contraguerrilla.pdf sobre anti emboscadas
contraguerrilla.pdf sobre anti emboscadascontraguerrilla.pdf sobre anti emboscadas
contraguerrilla.pdf sobre anti emboscadas
DieguinhoSalazar
 
Semana 09 - Tema 02 Dinámica de cuentas del plan contable.pdf
Semana 09 - Tema 02 Dinámica de cuentas del plan contable.pdfSemana 09 - Tema 02 Dinámica de cuentas del plan contable.pdf
Semana 09 - Tema 02 Dinámica de cuentas del plan contable.pdf
WendyMLaura
 
Informe de violencia mayo 2024 - Multigremial Mayo.pdf
Informe de violencia mayo 2024 - Multigremial Mayo.pdfInforme de violencia mayo 2024 - Multigremial Mayo.pdf
Informe de violencia mayo 2024 - Multigremial Mayo.pdf
Emisor Digital
 
LINEA DE TIEMPO Y PERIODO INTERTESTAMENTARIO
LINEA DE TIEMPO Y PERIODO INTERTESTAMENTARIOLINEA DE TIEMPO Y PERIODO INTERTESTAMENTARIO
LINEA DE TIEMPO Y PERIODO INTERTESTAMENTARIO
AaronPleitez
 
DEFENSA NACIONAL.ppt muy fácil de entender
DEFENSA NACIONAL.ppt muy fácil de entenderDEFENSA NACIONAL.ppt muy fácil de entender
DEFENSA NACIONAL.ppt muy fácil de entender
mvargasleveau
 
e learning^.pptxdieguearmandozuñiga. Comhot
e learning^.pptxdieguearmandozuñiga. Comhote learning^.pptxdieguearmandozuñiga. Comhot
e learning^.pptxdieguearmandozuñiga. Comhot
diegozuniga768
 
MI CECTOR POSTE BLANCO - Paián .pdf
MI  CECTOR  POSTE  BLANCO - Paián   .pdfMI  CECTOR  POSTE  BLANCO - Paián   .pdf
MI CECTOR POSTE BLANCO - Paián .pdf
GustavoTello19
 
REPORTE DE HOMICIDIO DOLOSO-MAYO 2024.pdf
REPORTE DE HOMICIDIO DOLOSO-MAYO 2024.pdfREPORTE DE HOMICIDIO DOLOSO-MAYO 2024.pdf
REPORTE DE HOMICIDIO DOLOSO-MAYO 2024.pdf
IrapuatoCmovamos
 
Comunidades virtuales de aprendizaje o educativas E-LEARNING.pdf
Comunidades virtuales de aprendizaje  o educativas E-LEARNING.pdfComunidades virtuales de aprendizaje  o educativas E-LEARNING.pdf
Comunidades virtuales de aprendizaje o educativas E-LEARNING.pdf
brayansangar73
 

Último (20)

sistema paralingüística fhdjsjsbsnnssnnsbs
sistema paralingüística fhdjsjsbsnnssnnsbssistema paralingüística fhdjsjsbsnnssnnsbs
sistema paralingüística fhdjsjsbsnnssnnsbs
 
vivienda segura concreto, construcción y métodos
vivienda segura concreto, construcción y métodosvivienda segura concreto, construcción y métodos
vivienda segura concreto, construcción y métodos
 
nombres de las unidades y situacion significativa 2024.docx
nombres de las unidades y situacion significativa 2024.docxnombres de las unidades y situacion significativa 2024.docx
nombres de las unidades y situacion significativa 2024.docx
 
Sistema informatico, power point asir 1 curso
Sistema informatico, power point asir 1 cursoSistema informatico, power point asir 1 curso
Sistema informatico, power point asir 1 curso
 
Obligaciones_de_los_Municipios_y_Departamentos_en_los_Determinantes_Ambiental...
Obligaciones_de_los_Municipios_y_Departamentos_en_los_Determinantes_Ambiental...Obligaciones_de_los_Municipios_y_Departamentos_en_los_Determinantes_Ambiental...
Obligaciones_de_los_Municipios_y_Departamentos_en_los_Determinantes_Ambiental...
 
3-Modelamiento de Procesos usando BPMN.ppt
3-Modelamiento de Procesos usando BPMN.ppt3-Modelamiento de Procesos usando BPMN.ppt
3-Modelamiento de Procesos usando BPMN.ppt
 
Plan Emergencia solicitado en obras de construccion
Plan Emergencia  solicitado en obras de construccionPlan Emergencia  solicitado en obras de construccion
Plan Emergencia solicitado en obras de construccion
 
Minería de Datos e IA Conceptos, Fundamentos y Aplicaciones.pdf
Minería de Datos e IA  Conceptos, Fundamentos y Aplicaciones.pdfMinería de Datos e IA  Conceptos, Fundamentos y Aplicaciones.pdf
Minería de Datos e IA Conceptos, Fundamentos y Aplicaciones.pdf
 
Encuesta CATI Verdad Venezuela abril 2024 (PÚBLICO).pdf
Encuesta CATI Verdad Venezuela abril 2024 (PÚBLICO).pdfEncuesta CATI Verdad Venezuela abril 2024 (PÚBLICO).pdf
Encuesta CATI Verdad Venezuela abril 2024 (PÚBLICO).pdf
 
04 capital interes simple.pdf de la clase métodos cuantitativos
04 capital interes simple.pdf de la clase métodos cuantitativos04 capital interes simple.pdf de la clase métodos cuantitativos
04 capital interes simple.pdf de la clase métodos cuantitativos
 
10 colonias - Análisis socio-demográfico 2024.pdf
10 colonias - Análisis socio-demográfico 2024.pdf10 colonias - Análisis socio-demográfico 2024.pdf
10 colonias - Análisis socio-demográfico 2024.pdf
 
contraguerrilla.pdf sobre anti emboscadas
contraguerrilla.pdf sobre anti emboscadascontraguerrilla.pdf sobre anti emboscadas
contraguerrilla.pdf sobre anti emboscadas
 
Semana 09 - Tema 02 Dinámica de cuentas del plan contable.pdf
Semana 09 - Tema 02 Dinámica de cuentas del plan contable.pdfSemana 09 - Tema 02 Dinámica de cuentas del plan contable.pdf
Semana 09 - Tema 02 Dinámica de cuentas del plan contable.pdf
 
Informe de violencia mayo 2024 - Multigremial Mayo.pdf
Informe de violencia mayo 2024 - Multigremial Mayo.pdfInforme de violencia mayo 2024 - Multigremial Mayo.pdf
Informe de violencia mayo 2024 - Multigremial Mayo.pdf
 
LINEA DE TIEMPO Y PERIODO INTERTESTAMENTARIO
LINEA DE TIEMPO Y PERIODO INTERTESTAMENTARIOLINEA DE TIEMPO Y PERIODO INTERTESTAMENTARIO
LINEA DE TIEMPO Y PERIODO INTERTESTAMENTARIO
 
DEFENSA NACIONAL.ppt muy fácil de entender
DEFENSA NACIONAL.ppt muy fácil de entenderDEFENSA NACIONAL.ppt muy fácil de entender
DEFENSA NACIONAL.ppt muy fácil de entender
 
e learning^.pptxdieguearmandozuñiga. Comhot
e learning^.pptxdieguearmandozuñiga. Comhote learning^.pptxdieguearmandozuñiga. Comhot
e learning^.pptxdieguearmandozuñiga. Comhot
 
MI CECTOR POSTE BLANCO - Paián .pdf
MI  CECTOR  POSTE  BLANCO - Paián   .pdfMI  CECTOR  POSTE  BLANCO - Paián   .pdf
MI CECTOR POSTE BLANCO - Paián .pdf
 
REPORTE DE HOMICIDIO DOLOSO-MAYO 2024.pdf
REPORTE DE HOMICIDIO DOLOSO-MAYO 2024.pdfREPORTE DE HOMICIDIO DOLOSO-MAYO 2024.pdf
REPORTE DE HOMICIDIO DOLOSO-MAYO 2024.pdf
 
Comunidades virtuales de aprendizaje o educativas E-LEARNING.pdf
Comunidades virtuales de aprendizaje  o educativas E-LEARNING.pdfComunidades virtuales de aprendizaje  o educativas E-LEARNING.pdf
Comunidades virtuales de aprendizaje o educativas E-LEARNING.pdf
 

Programa en emu8086

  • 1. UNIVERSIDAD NACIONAL DE SAN AGUSTIN FACULTAD INGENIERA DE PRODUCCIÓN Y SERVICIOS ESCUELA PROFESIONAL DE INGENIERA DE SISTEMAS CURSO: ARQUITECTURA DE COMPUTADORAS DOCENTE: ING. PEDRO RODRIGUEZ PROPIO: -SONCCO CHUTAYA FREDY
  • 2. Informe de mi Programa en Emu8086 Tipo de programa: Juego Introducción: Este programa consiste en adivinar un número almacenado en nuestro programa, para esto el usuario tendrá que ingresar el número que él cree que sea correcto. Y Nuestro programa le brindara respuestas como; El número buscado es mayor o menor; de esta manera pueda llegar al número correcto. Recibirá otro mensaje si acierta con el numero buscando. Automáticamente Se le preguntara al Usuario si desea continuar jugando (y/n). Si se Escoge la opción el programa se seguirá ejecutando caso contrario el programa culminara. Código fuente y breve explicación del Programa: En nuestras tres primeras líneas de código: son instrucciones del modelo de memoria, segmento de banderas, segmentos de datos y segmentos de Código respectivamente. .model small ; Modelo de Memoria. .stack 100h ; Segmentos de banderas. .data ; Segmentos de datos. //Declaración de variables … .code ; Segmentos de código. Las siguientes instrucciones corresponden a la declaración de todas las variables utilizadas en nuestro programa. I. Constantes: - CR y LF II. Variables: - number: esta variable será el número que el usuario debe adivinar. - Guess: Guardara el numero ingresado por el usuario. - erroChk: Esta variable la utilizaremos para comparar y verificar que guess no esté fuera de rango. III. Mensajes: - Prompt, LessMsg, MoreMsg, equalMsg, OverflowMsg y retry.
  • 3. number db 51d ;variable 'number' Se almacena el valor aleatorio ;Declaración de Constantes CR equ 13d LF equ 10d ;Mensajes que dará nuestro programa cuando se esté ejecutando prompt db CR, LF,'Ingrese numero : $' lessMsg db CR, LF,'El numero buscado es Menor','$' moreMsg db CR, LF,'El numero buscado es Mayor ', '$' equalMsg db CR, LF,'El numero es Correcto!', '$' overflowMsg db CR, LF,'Error - Numero fuera de rango', '$' retry db CR, LF,'Continuar [y/n] ? ' ,'$' guess db 0d ;Variable guardara el valor introducido por el usuario errorChk db 0d ;Variable se utilizara para comparar si el numero introducido esta Fuera de rango. param label Byte Función start: - Las primeras 4 líneas de código a los registros ax, bx, cx y dx,se les da el valor de 0. - Las siguientes líneas de código realizamos movimientos donde guardaremos el valor de nuestras variables creadas anteriormente en nuestros registros mencionados. start: ; Inicio de START MOV ax, 0h MOV bx, 0h MOV cx, 0h MOV dx, 0h MOV BX, OFFSET guess ; obtener la dirección de la variable guess en BX. MOV BYTE PTR [BX], 0d ; establecer 'guess' a 0 (decimal) // BYTE PTR valor de 8 bits MOV BX, OFFSET errorChk ; obtener la dirección de la variable errorChk en BX. MOV BYTE PTR [BX], 0d ; establecer 'errorChk' a 0 (decimal) // BYTE PTR valor de 8 bits MOV ax, @data ; carga en AX la dirección del segmento de datos MOV ds, ax ; mueve la dirección al registro de segmento por medio de AX MOV dx, offset prompt ; Carga prompt en DX MOV ah, 9h ; Escribe cadena a STDOUT en ah INT 21h ; Interrupción ( para DOS) MOV cl, 0h ; Carga en CL 0 (Contador) MOV dx, 0h ; Carga en DX 0 (Datos registro utilizado para almacenar la entrada del usuario) ; END START
  • 4. Función while: - Esta función se encarga de leer la entrada del usuario donde primero se valida que no superen los 5 dígitos para comparar usa el registro CL (que sería nuestro contador). - Después se procede a preguntar si la última tecla que el usuario presiono sea ‘ENTER’, si es así se salta a la función ‘endwhile’. Caso contrario pasara a la siguiente instrucción. - Las siguientes instrucciones se encargan de almacenar el valor ingresado por el usuario en DL. - Se incrementa en 1 a nuestro Contador que es CL. - Finalmente hace un salto hacia la misma función. - Para salir de esta función el usuario tendría que presionar la tecla ENTER. ; -- leyendo la entrada del usuario while: CMP cl, 5d ;Compara CL y 5d ( porque 5 es el número máximo de dígitos permitidos) JG endwhile ; Si CL > 5 entonces salta a la función 'endwhile'. MOV ah, 1h ; Leer valor de STDIN en ah INT 21h ; Interrupción ( para DOS) CMP al, 0Dh ; comparar el valor leído con 0Dh que es el código ASCII para la tecla ENTER JE endwhile ; Si AL = 0Dh, Significa que ha presionado ENTER entonces se salta la función 'endwhile' SUB al, 30h ; 30h se resta el valor ASCII de entrada para obtener el numero real. (ya que 30h ASCII = número '0') MOV dl, al ; Mueve el valor de la entrada a dl. PUSH dx ; saca DX en la pila, para conseguir que leer para leer la próxima entrada INC cl ; Incrementa CL JMP while ; Sala de nuevo a la función while.
  • 5. Función endwhile: - En esta función retorna el mensaje contenido en la variable errorChk. - Esta función solo se activara en caso la entrada ingresada no cumple con el límite de dígitos pedidos por nuestro programa. - En la Primera línea de instrucción se decrementa nuestro contador porque en la función anterior hicimos un incremento más. - En las últimas instrucciones de guarda la dirección del valor de ‘errorChk’ en BX y al final nuestro contador se hace en 0 nuevamente. - Para comenzar nuevamente a procesar la entrada del usuario. endwhile: ; Fin de la entrada del usuario DEC cl ; decremento CL por uno para reducir el incremento hecho en la última iteración CMP cl, 02h ; comparar CL con 02, ya que solo 3 números pueden ser aceptados como EN RANGO JG overflow ; si CL (número de caracteres de entrada) es mayor que 3 Cambiar a la label 'overflow' MOV BX, OFFSET errorChk ; obtener la dirección de la variable 'errorChk' en BX. MOV BYTE PTR [BX], cl ; establecer "errorChk 'al valor de CL MOV cl, 0h ; CL fijado a 0, porque contador se utiliza en la siguiente sección de nuevo Función while2: - Esta función Crea la representación numérica real del número ingresado por el usuario como tres caracteres. - Esta representación se envía a la función while3 que hará la conversión de estos caracteres a decimal. - Para después poder hacer la comparaciones con nuestra variable ‘number’ y poder saber si el usuario ha ingresado el numero o correcto o aun no. ; Comenzar a procesar la entrada del usuario ; Crea la representación numérica real del número ingresado por el usuario como tres caracteres. while2: CMP cl,errorChk JG endwhile2 POP dx ; POP DX valor almacenado en la pila, (del digito menos significativo m para el digito más significativo) MOV ch, 0h ; limpia CH y se utiliza en este bucle interior como contador MOV al, 1d ; inicializa AL en 1 (decimal) MOV dh, 10d ; establece a DH el 10 (decimal)
  • 6. Función While3: - Esta función se encarga de convertir los caracteres ingresados por el usuario y convertirlos. - Esta conversión se realizara por ciclos, dependiendo de nuestra variable CL (nuestro contador). - Para esto usaremos otro contador que será CH. Para recorre CL. - Saldremos de while3 cuando CH iguale a CL. ; COMIENZO bucle; - SI CL es 2 ; - Primera bucle producirá 10 ^ 0 ; - Segundo bucle producirá 10 ^ 1 ; - Tercera bucle producirá 10 ^ 2 while3: CMP ch, cl ; Compara CH y CL JGE endwhile3 ; si CH >= CL, salta a 'endwhile3 MUL dh ; AX = AL * DH donde DH es = to (AL * 10) INC ch ; incremento CH JMP while3 ; Salto a 'while3' Función Endwhile3: ; Fin del cálculo de la potencia ; AL ahora contiene 10 ^ 0, 1 o 10 ^ 10 ^ 2 en función del valor de CL MUL dl ; AX = AL * DL, que es el valor real de posición de número JO overflow ; Si hay un salto de desbordamiento en 'overflow' label (para valores por encima de 300) MOV dl, al ; mover el resultado de la multiplicación a DL ADD dl, guess ; añadir resultado (valor posicional real del numero) al valor de 'adivinar' la variable JC overflow ; Si hay un salto de desbordamiento en label 'overflow' (para valores por encima de 255 a 300) MOV BX, OFFSET guess ; obtener la dirección de la variable 'guess' en BX. MOV BYTE PTR [BX], dl ; Establecer el valor de 'errorChk' a DL INC cl ; Incrementa CL contador JMP while2 ; Salta hacia atrás a 'while2'
  • 7. Función Endwhile2: - Esta función se encarga de comparar nuestro entrada del usuario ya convertida a decimal - Si guess (Valor ingresado por el usuario) es igual a number(valor buscado) entonces se hace un salto a la función ‘equal’. - Si guess (Valor ingresado por el usuario) es mayor number(valor buscado) entonces se hace un salto a la función ‘greater’. - Si guess (Valor ingresado por el usuario) es menor a number(valor buscado) entonces se hace un salto a la función ‘lower’. endwhile2: ; Fin del proceso de La entrada del usuario. MOV ax, @data ; obtener la dirección de los datos a AX MOV ds, ax ; obtener 'data segment' al valor de AX que es 'address of data'. MOV dl, number ; Carga 'number' a DL MOV dh, guess ; Carga 'guess' a DH CMP dh, dl ; Compara DH y DL (DH - DL) JC greater ; si DH (GUESS) > DL (NUMBER) salta a la función greater JE equal ; si DH (GUESS) = DL (NUMBER) salta a la función equal JG lower ; si DH (GUESS) < DL (NUMBER) salta a la función lower Función Equal: - Esta función imprime el mensaje almacenado en la variable ‘equalMsg’. - Posteriormente sala a la función ‘exit.’ - equal: ;Carga el contenido de la variable equalMsg MOV dx, offset equalMsg ; Carga la dirección del mensaje de 'equalMsg' a DX MOV ah, 9h ; Escribe una cadena de STDOUT (para DOS interrupt) INT 21h ; (Interrupción DOS) JMP exit ; Salta a 'exit'
  • 8. Función Greater: - Esta función imprime el mensaje almacenado en la variable ‘moreMsg’. - Posteriormente salta al inicio del programa para que el usuario pueda ingresar otro número. ‘start’ greater: MOV dx, offset moreMsg ; Carga la dirección del mensaje de 'moreMsg' a DX MOV ah, 9h ; Escribe una cadena de STDOUT (para DOS interrupt) INT 21h ; (Interrupción DOS) JMP start ; Salta al inicio del programa(start) Función Lower: - Esta función imprime el mensaje almacenado en la variable ‘lessMsg’. - Posteriormente salta al inicio del programa para que el usuario pueda ingresar otro número. ‘start’ lower: MOV dx, offset lessMsg ; Carga la dirección del mensaje de 'lessMsg' a DX MOV ah, 9h ; Escribe una cadena de STDOUT (para DOS interrupt) INT 21h ; (Interrupción DOS) JMP start ; Salta al inicio del programa(start) Función Overflow: - Esta función imprime el mensaje almacenado en la variable ‘overflowMsg’. - Posteriormente salta al inicio del programa para que el usuario pueda ingresar otro número. ‘start’ overflow: MOV dx, offset overflowMsg ; Carga la dirección del mensaje de 'overflowMsg' a DX MOV ah, 9h ; Escribe una cadena de STDOUT (para DOS interrupt) INT 21h ; (Interrupción DOS) JMP start ; Salta al inicio del programa(start)
  • 9. Funciónes Exit y retry_while: Retry_while: - En esta función se muestra un mensaje preguntando al usuario si desea seguir ejecutando el programa. - Donde el usuario solo puede responder con ‘y’ y ‘n’. Si el ingresa otro carácter nuestro programa volverá a preguntar si desea continuar. - Si el usuario ingresa ’n’ se salta a la función ‘return_to_DOS’. Caso contrario ingrese ‘y’ se salta a la función ‘restart’. exit: ; Preguntar al usuario si necesita volver a intentarlo retry_while: MOV dx, offset retry ; Carga la dirección del mensaje de 'prompt' a DX MOV ah, 9h ; Escribe una cadena de STDOUT (para DOS interrupt) INT 21h ; (Interrupción DOS) MOV ah, 1h ; lee un carácter de STDIN en AL (para DOS interrupt) INT 21h ; (Interrupción DOS) CMP al, 6Eh ; Compara si la entrada es 'n' JE return_to_DOS ; llama a 'return_to_DOS' si la entrada es 'n' CMP al, 79h ; revisa si la entrada es'y' JE restart ; llamar a 'restart' si la entrada es 'y' ; salta a "restart" JMP retry_while ; Si la entrada no es 'y' ni 'n', se vuelve a preguntar Funciónes retry_endwhile , restart y return_to_DOS: restat: - Esta función nos envía al inicio del programa. Return_to_DOS: - Esta función finaliza nuestro programa. retry_endwhile: restart: JMP start ; Salta al inicio del programa(start) return_to_DOS: MOV ax, 4c00h ; Retorna ms-dos INT 21h ; (Interrupcion DOS) end start ;finaliza start RET