Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Programaenemu8086 160623181147 PDF
Programaenemu8086 160623181147 PDF
CURSO: ARQUITECTURA DE
COMPUTADORAS
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.
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
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.
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
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'
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.
; COMIENZO bucle; - SI CL es 2
; - Primera bucle producirá 10 ^ 0
; - Segundo bucle producirá 10 ^ 1
; - Tercera bucle producirá 10 ^ 2
while3:
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
endwhile2:
; Fin del proceso de La entrada del usuario.
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
greater:
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:
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:
exit:
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