Se pide desarrollar una rutina, que convierta el número contenido
en un registro en una cadena de números decimales. El número
a convertir se pasará a través del registro AX y el resultado
se escribirá a partir de la posición de memoria indicada
en el registro CX.
El juego consiste en buscar una clave compuesta por cuatro cifras. Para ello es necesario ir introduciendo pruebas sobre la clave. El programa indicará cuantos muertos y cuantos heridos hay. Un muerto indica que una cifra pertenece a la clave y además está en el lugar correcto. Un herido indica que la cifra pertenece a la clave pero no está en su lugar.
Clave : 4481
Pruebas:
1284 1 muerto y 2 heridos
1244 0 muertos y 3 heridos
1844 0 muertos y 4 heridos
1482 2 muertos y 1 herido
1484 2 muertos y 2 heridos
4418 2 muertos y 2 heridos
4481 4 muertos y 0 heridos
Recursos
del sistema necesarios en estos ejercicios
El DOS y el BIOS del PC proveen de algunas rutinas de servicio que se pueden utilizar para incrementar la versatilidad de los programas del usuario. A estas rutinas se las llama utilizando las características de la interrupción por software del microprocesador 8086.
INT 21H AH = 0BH
Descripción: La función de esta rutina es detectar si se ha pulsado una tecla.
Uso: Entrada: AH = 0BH
Salida:
AL = FF si caracter disponible
AL = 0 si caracter no disponible
Registros
afectados: AL
Entrada de un carácter desde teclado
INT 21H AH = 8H
Descripción: La función de esta rutina es esperar
un carácter del teclado sin escribirlo por pantalla y almacenarlo
en el
registro AL en forma de código ASCII.
Uso: Entrada: AH = 8H
Salida: AL = car cter ASCII de la tecla pulsada
Registros afectados: AL
Leer una línea de programa
INT 21H AH = 0AH
Descripción: La función de esta rutina es la de
obtener una línea de datos del teclado (que finaliza al pulsar el
retorno de
carro) y almacenarlos en un rea de memoria. Los caracteres son
mostrados en la pantalla al ser tecleados.
Uso: Entrada: AH = 0AH
DS contiene la dirección del segmento de memoria en el cual se almacenan
los datos introducidos.
DX contiene la dirección del offset de la zona de memoria del segmento
anterior en la que se almacenan
los datos.
En el primer byte del área debe indicarse el máximo número
de caracteres a introducir sin superar 255.
Salida: Ninguna en registro
En el segundo byte del área se almacena el número de caracteres
tecleados sin contar el retorno de carro.
Registros afectados: Ninguno
Salida de un carácter por pantalla
INT 21H AH = 2H
Descripción: La función de esta rutina es visualizar un carácter.
Uso: Entrada: AH = 2H
DL contiene el código ASCII del carácter a visualizar.
Salida: Ninguna
Registros afectados: Ninguno
Sacar un string a la pantalla
INT 21H AH = 9H
Descripción: Su función es la de sacar una cadena de caracteres ASCII por pantalla.
Uso: Entrada: AH = 9H
DS contiene el valor de la dirección del segmento del comienzo de
la cadena de caracteres a sacar.
DX contiene el offset de dicha cadena en el segmento anterior.
El último byte de la cadena de caracteres debe ser el caracter $,
que no se muestra en pantalla.
Salida: Ninguna
Registros afectados: AX
Códigos ANSI
Esc[2J
Borra la pantalla
Esc[x;yf
Posiciona el cursor en las coordenadas x,
y.
El caracter Esc es el código escape cuyo valor ASCII es el 27
(1BH).