Arquitectura de computadores Lab Tema 4 ENTRADASALIDA USANDO
Arquitectura de computadores Lab Tema 4 “ ENTRADA/SALIDA USANDO EL SISTEMA OPERATIVO “
INT 21 H • La mayoría de servicios o funciones del sistema operativo MSDOS se obtienen a través de la interrupción software 21 H. Es por esto que se le denomina DOS-API: DOS-APPLICATIONPROGRAM-INTERFACE. • La INT 21 H está compuesta por un grupo de funciones. • Cuando se accede a la INT 21 H, hay que indicar el número de función queremos ejecutar. • La llamada a la INT 21 H se realizará como sigue: Ø - Introducimos en (AH) el número de función a la que deseamos acceder. Ø - En caso de que deseemos acceder a una sub-función dentro de una función, debemos indicarlo introduciendo en (AL) el número de esa sub-función. Ø - Llamar a la INT 21 H.
• INT 21 H Función 01 H Entrada de Carácter con Eco (ó salida) • INT 21 H Función 02 H Salida de Carácter • INT 21 H Función 05 H Envío de Carácter a la Impresora • INT 21 H Función 06 H Envío de Carácter a la pantalla como símbolo INT 21 H AH = 0 AH Leer una línea Obtiene una línea de datos del teclado (que finaliza al pulsar el retorno de carro). Entrada: AH = 0 AH 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. En el segundo byte (DX) del área se almacena el número de caracteres tecleados sin contar el retorno de carro.
Función 01 H Leer un carácter del teclado y desplegarlo. Registros de llamada: AH = 01 H Registros de retorno: AL = Carácter leído El código hexadecimal del carácter leído se guarda en el registro AL. Función 09 H Despliega una cadena de caracteres en la pantalla. Registros de llamada: AH = 09 H DS: DX = Dirección de inicio de una cadena de caracteres Registros de retorno: Ninguno. Esta función despliega los caracteres, uno a uno, desde la dirección indicada en el registro DS: DX hasta encontrar un caracter $, que es interpretado como el final de la cadena. Función 02 H Despliega un carácter a la pantalla. Registros de llamada: AH = 02 H DL = Valor del carácter a desplegar. Registros de retorno: Ninguno Esta función nos despliega el carácter cuyo código hexadecimal corresponde al valor almacenado en el registro DL, no se modifica ningún registro al utilizar este comando. CR (retorno de carro) LF (salto de línea)
Ejemplo de entrega de prog: Al contestar la pregunta ¿Qué hace el programa? , deberás explicar lo que hace, cómo lo hace, línea a línea y por bloque de acciones.
(1) Introduce, ensambla y ejecuta el código siguiente: (Presta atención especial al valor que tendrá el registro BL al final del programa y especifica lo que hace el programa). (2) Modifica la actividad anterior para que lea un número de 4 cifras hexadecimales.
(3) Escribe, ensambla y ejecuta el código siguiente: AND SHR
(4) ¿Que hace el programa? (explica cómo lo hace, línea a línea y por bloque de acciones) Ejemplo de entrega de prog: (5) Cambia el número 17 h por los números 34 h y 0 Fh. ¿Qué ocurre?
(7) Realiza un programa en ensamblador que solicite dos números de dos cifras hexadecimales como máximo cada uno, y que luego realice: Sumar y la Resta. ORG 100 H. MODEL SMALL. . STACK 100 H. DATA ……. CODE INICIO: MOV AX, @DATA MOV DS, AX ; imprime texto ESCRIBE UN NUMERO DEL 0 AL 9 ; lee el dato y guarda en AL ; restar (30 H) para ajustar el dato ; guarda el dato en "X" ; imprime texto ESCRIBE UN NUMERO DEL 0 AL 9 ; lee el dato y guarda en AL ; restar (30 H) para ajustar el dato ; guarda el dato en "Y" ; impime msg ((1)suma) ; impime msg ((2)resta) Este es un ejemplo de una serie de pasos para la suma y resta sencilla de números de un digito. ; imprime texto ESCRIBE opcion ; lee la opcion y guarda en AL ; restar (30 H) para ajustar el dato ; guarda el dato(1, 2, 3 o 4) en "op" ; compara DL con 01 (para hacer la suma) ; salto si los operandos son iguales (JE suma) ; compara DL con 02 (para hacer la resta) ; salto si los operandos son iguales (JE resta) ; etiqueta suma ; suma op 1 con op 2 ; carga msj de "la suma es" (LEA DX, msj") Y lo despliega por pantalla ; mueve el resultado a DL ; ajusta el valor sumando 30 H ; imprime el valor “resultado” por pantalla ; salto FIN RESTA: ………. FIN: MOV AH, 4 CH INT 21 H END INICIO
(explica cómo lo hace, línea a (8) Introduce y ensambla el código siguiente: línea y por bloque de acciones) INT 21 H AH = 0 AH Leer una línea Obtiene una línea de datos del teclado (que finaliza al pulsar el retorno de carro). Entrada: AH = 0 AH 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. En el segundo byte (DX) del área se almacena el número de caracteres tecleados sin contar el retorno de carro.
(9) Modifica el programa anterior para que la frase pueda almacenar 20 caracteres. (10) Introduce el código siguiente SUB DL, 20 H dentro del bucle justamente detrás de la instrucción MOV DL, CADENA[SI]. ¿Qué función realiza el programa? (11) Realiza un programa que lea una cadena de 15 caracteres como máximo. Los debe sacar por pantalla de uno en uno, y en orden inverso.
- Slides: 11