Ejercicios adicionales para el Examen Final
Tabla a
utilizar en el examen para los ejercicios de programación:
|
Mnemotécnico |
Mnemotécnico |
Mnemotécnico |
Mnemotécnico |
|
MOV destino,origen ADD destino,origen ADC destino,origen DAA SUB destino,origen INC registro DEC registro CMP destino,origen |
RCL registro RCR registro SHL registro SHR registro ROL registro ROR registro |
NOT registro AND destino,origen OR destino,origen XOR destino,origen CLC STC HLT |
JZ dirección JNZ dirección JO dirección JNO dirección JS dirección JNS dirección JB dirección JNB dirección JE dirección JNE dirección JLE dirección JL dirección JGE dirección JG dirección Jmp direccion |
1. Complete:
a. Se entiende por vector de interrupciones ___________________________
b. La pila es ______________________________________
c. El controlador de interrupciones tiene la siguiente funcionalidad: ____________________
d. La bandera IF se utiliza para ________________________________________
e. Los cuatro registros utilizados para el manejo de los segmentos de memoria en el microprocesador 8086 son _____________.
f. Los métodos utilizados por el CPU para conectarse con los puertos son: _________________ y ___________________.
g. La pila LIFO funciona de la siguiente manera: ______________________________.
h. Cuando en un programa se salta a una subrutina, la dirección de retorno de la subrutina se guarda en un segmento de memoria llamado _____________________.
i. La transferencia por DMA se puede realizar de dos formas: _____________ y _____________.
j. En presencia de una interrupción automáticamente se apila lo siguiente: ______________________
2. Explique detalladamente los diferentes métodos que utiliza un microprocesador para comunicarse con los puertos.
3.
Realice un programa en lenguaje
ensamblador que revisa si el número de bits es par para cada byte que se
encuentra en un segmento de memoria. Si encuentra en el segmento de memoria un
byte con un número par de bits, pone en uno el bit más significativo de la
posición 0A11 (este bit debe ponerse en 0 antes de comenzar a analizar el
segmento de memoria).
En la dirección 0A12 y 0A13 está almacenada la parte baja y alta
respectivamente de la dirección donde se inicia el segmento. En 0A0F se encuentra
la longitud de este segmento.
Ej: 01101101 tiene un número impar de unos ( 5
unos).
10111101 tiene un número par de
unos ( 6 unos).
4. Explique detalladamente como funciona el DMA
5. Realice un programa en lenguaje ensamblador que indique la cantidad de números pares y la cantidad de números impares que se encuentran en un segmento de memoria. Al final del programa en la dirección 0A10 debe quedar la cantidad de números pares que encontró en el segmento y en la dirección 0A11 la cantidad de números impares que encontró en el segmento. En la dirección 0A12 y 0A13 está almacenada la parte baja y alta respectivamente de la dirección donde se inicia el segmento. En 0A0F se encuentra la longitud de este segmento.
6.
Realice un programa en lenguaje
ensamblador que compara un número almacenado en la posición 0A10 con un
segmento de memoria que contiene números. Cada vez que encuentra en el segmento
de memoria un número mayor al de la posición 0A10 incrementa un contador que
está en la posición 0A11.
En la dirección 0A12 y 0A13 está almacenada la parte baja y alta
respectivamente de la dirección donde se inicia el segmento. En 0A0F se
encuentra la longitud de este segmento.
7. Explique detalladamente los diferentes métodos que utiliza un microprocesador para comunicarse con los puertos.
8. Explique por medio de un diagrama cada uno de los siguientes modos de direccionamiento:
Implícito:
Inmediato:
Directo:
Indirecto:
9.
Realice
un programa en lenguaje ensamblador que compara un número almacenado en la
posición 0A10 con un segmento de memoria que contiene números. Cada vez que
encuentra en el segmento de memoria un número igual al de la posición 0A10
incrementa un contador que está en la posición 0A11.
En la dirección 0A12 y 0A13 está almacenada la parte baja y alta
respectivamente de la dirección donde se inicia el segmento. En 0A0F se
encuentra la longitud de este segmento
10. Realice un programa en lenguaje
ensamblador que compara un número almacenado en la posición 0A10 con un
segmento de memoria que contiene números. Cada vez que encuentra en el segmento
de memoria un número cuyos tres bits más significativos sean iguales a los tres
bits más significativos del número almacenado en la posición 0A10 incrementa un
contador que está en la posición 0A11.
En la dirección 0A12 y 0A13 está almacenada la parte baja y alta
respectivamente de la dirección donde se inicia el segmento. En 0A0F se
encuentra la longitud de este segmento.
11. Por medio de en un dibujo, explique detalladamente el proceso de atención de interrupciones. Incluya en su explicación la definición y uso de cada uno de los siguientes términos: INTR, NMI, Subrutina de interrupciones, Pila, vector de interrupciones.
12. Por medio de un dibujo explique claramente como los diferentes dispositivos I/O pueden interrumpir al CPU y como responde este. Dentro de este esquema se debe mencionar el uso del vector de interrupciones, el programa de atención de interrupciones y la bandera de interrupciones.
13. Realice un programa en lenguaje ensamblador que examina byte a byte el contenido de un segmento de memoria. En la dirección 0A12 y 0A13 está almacenada la parte baja y alta respectivamente de la dirección donde se inicia el segmento. En 0A0F se encuentra la longitud de este segmento. Cada vez que el programa encuentra dentro de este segmento, un byte cuyo MSB (bit más significativo) tiene el valor de uno, copia este byte en otro segmento de memoria. La parte baja y alta respectivamente de la dirección donde se inicia este segundo segmento está almacenada en la dirección 3F14 y 3F15. En 0A10 se encuentra la longitud de este segundo segmento.