Red de conocimiento informático - Conocimiento del nombre de dominio - Principios y tecnología de los microcontroladores Respuestas de Michael Chou a los ejercicios extraescolares

Principios y tecnología de los microcontroladores Respuestas de Michael Chou a los ejercicios extraescolares

Capítulo 1 Respuestas a la tarea

1.1 ¿Cuál es la diferencia entre un microprocesador, una microcomputadora y un sistema de microcomputadora?

Explicación:

La CPU (calculadora y controlador) se fabrica en un chip utilizando tecnología de circuito integrado a gran escala, es decir, microprocesador.

. Un microprocesador más una cierta cantidad de memoria y dispositivos externos (o interfaces a dispositivos externos) constituyen una microcomputadora. Cuando una microcomputadora se combina con hardware y software para administración, mantenimiento y soporte de aplicaciones, se convierte en un sistema de microcomputadora.

1.2. ¿Cuáles son los componentes internos de la CPU y cuáles son las funciones principales de la CPU?

Explicación:

La CPU se compone de muchos registros, como la unidad lógica aritmética como unidad aritmética, el registro de instrucciones como controlador, el decodificador de instrucciones, la matriz lógica programable y registros de banderas. Su función principal es realizar operaciones aritméticas y lógicas y controlar la computadora para que se ejecute automáticamente de acuerdo con el programa.

1.3 ¿Cuáles son las ventajas de utilizar una estructura de bus para microcomputadoras?

Solución:

El uso de la estructura de bus aumenta la flexibilidad de la transmisión de datos y reduce el número de cables. Además, el autobús se puede estandarizar

para facilitar la compatibilidad y la producción industrial.

1.4 ¿Cuál es la diferencia estructural entre el bus de datos y el bus de direcciones? Si los datos y la dirección de un sistema se combinan en un bus o parte de un bus, ¿cuál es la diferencia entre dirección y datos?

Solución:

El bus de datos es bidireccional (los datos se pueden leer o escribir), mientras que el bus de direcciones es unidireccional.

Para reducir el número de pines en el chip, el 8086CPU adopta el método de multiplexación de líneas de datos y líneas de direcciones, que sirve como bus de datos y

bus de direcciones. . Se distinguen principalmente por la sincronización de las señales. Por lo general, al leer o escribir datos, siempre envíe primero la dirección

(especifique la unidad para leer o escribir datos) y luego lea o escriba los datos después de un período de tiempo.

1.8 En el modelo dado, escriba un programa para implementar 15×15 usando un acumulador.

Solución:

LD A, 0

LD H, 15

BUCLE: AÑADIR A, 15

DEC H

JP NZ, LOOP

HALT

Hoja de respuestas de tareas del Capítulo 2

2.1 Microprocesador de arquitectura IA-32 para Pentillm4 So hasta ahora cuales hay?

Solución:

80386, 30486, Pentium, Pentium Pro, Peruium II, PentiumIII, Pentium4.

2.6 ¿Cuáles son los modos de trabajo de los microprocesadores de arquitectura IA-32?

Respuesta:

La arquitectura IA-32 admite tres modos de funcionamiento: modo de protección, modo de dirección de campo y modo de gestión del sistema. El modo de funcionamiento

determina a qué instrucciones y características estructurales se puede acceder.

2.8 ¿Cómo se forma el espacio de direcciones del microprocesador de arquitectura IA-32?

Solución:

La dirección base del segmento determinada por el registro de segmento y la dirección efectiva determinada por varios modos de direccionamiento se suman para formar una dirección lineal. Si la paginación no está habilitada, la dirección lineal es la dirección física; si la paginación está habilitada, la dirección lineal se convierte en una dirección física.

2.15. ¿De qué partes se compone la parte de interfaz de bus del microprocesador 8086?

Solución:

La Unidad de Interfaz de Bus (BIU) en el microprocesador 8086 es responsable de transmitir información entre la CPU y la memoria

.

Específicamente, la BIU es responsable de eliminar instrucciones de una parte designada de la memoria y organizarlas en una cola de instrucciones (la cola de instrucciones del 8086 tiene 6 bytes, mientras que la cola de instrucciones del 8088 tiene solo 4 bytes) y transferir los operandos necesarios para ejecutar

una instrucción. Una unidad de ejecución (UE) es responsable de realizar las operaciones especificadas en la instrucción.

2.16 Registro de segmento CS=120OH, registro de puntero de instrucción IP=FFOOH, ¿cuál es la dirección física de la instrucción en este momento?

¿Qué es?

Solución:

La dirección física de la instrucción = 12000H FFOOH = 21FOOH

Respuestas de la tarea del Capítulo 3

3.1 Señale cuál de las siguientes instrucciones Modo de direccionamiento para operandos de origen y destino.

(1)MOV SI, 30O

(2)MOV CX, DATOS[DI]

(3)AÑADIR AX, [BX][SI]

(4)AND AX, CX

(5)MOV [BP], AX

(6)PUSHF

Solución:

(l) El operando de origen se direcciona inmediatamente y se direcciona el registro del operando de destino.

(2) El operando de origen es el registro de índice más el direccionamiento de desplazamiento, y el operando de destino es el direccionamiento de registro.

(3) El operando de origen es la dirección base más el direccionamiento de índice, y el operando de destino es el direccionamiento de registro.

(4) Tanto el operando de origen como el de destino tienen direcciones de registro.

(5) El operando de origen es el direccionamiento de registro y el operando de destino es el direccionamiento indirecto.

(6) Operación de apilamiento.

3.2 Explique la diferencia entre las instrucciones MOV AX, 2000H y MOV AX, DSz[2000H].

Solución: La instrucción anterior es direccionamiento inmediato, es decir, se transfiere el valor inmediato 2000H al registro AX. La última instrucción

es direccionamiento directo, es decir, el contenido del segmento de datos (DS) en la unidad de dirección 200OH se transfiere al registro AX.

3.3 Escribe la dirección del operando de memoria en la siguiente instrucción.

(1) MOV AL, [BX 10]

(2) MOV [BP 10], AX

(3) INC BYTE PTR [SI TEN Cinco]

(4) MOV DL, ES: [BX SI]

(5) MOV BX, [BP DI 2]

Solución: p>

(1) Segmento de datos BX 10 unidades.

(2) Segmento de pila BP de 10 celdas.

(3) Segmento de datos Unidad SI de 5 bytes.

(4) Segmento de datos adicional (segmento de datos ES) Unidad BX SI.

(5) Segmento de pila BP DI 2 unidades.

3.4 Determinar si las siguientes instrucciones están escritas correctamente.

(1) MOV AL, BX

(2) MOV AL, CL

(3) INC [BX]

( 4) MOV 5, AL

(5) MOV [BX], [SI]

(6) M0V BL, OF5H

(7) MOV DX , 2000H

(8) POP CS

(9) PUSH CS

Solución:

(l) Incorrecto, AL Los datos El ancho es diferente al de BX.

(2) es correcta.

(3) es incorrecto porque no está claro si incrementar bytes o palabras.

(4) Incorrecto, los datos inmediatos no se pueden utilizar como operando de destino.

(5) es incorrecto porque no está claro si se están transfiriendo bytes o palabras.

(6) Correcto.

(7) Correcto.

(8) Incorrecto, CS no se puede utilizar como operando de la instrucción :pop.

(9) Incorrecto, CS no se puede utilizar como operando de una instrucción PUSH.

3.5 Supongamos que el valor inicial del puntero de moneda del montón SP es 1000H, AX=2000H, BX=3000H Pregunta:

(1) ¿Cuál es el valor de SP después de ejecutar? ¿La instrucción PUSH AX?

(2) Después de ejecutar las instrucciones PUSH BX y POP AX, ¿cuáles son los valores de SP, AX y BX respectivamente?

Solución:

(1) SP=OFFEH.

(2) SP=OFFEH AX=3000H, BX=3000H.

3.6 Para completar la operación de envío de [3000H] a [2000H], utilice el comando:

MOM [200OH], [300OH]

¿Es correcto? Si no, ¿qué método debería utilizarse para lograrlo?

Solución: Incorrecta.

El método correcto es:

MOV AL, [300OH]

MOV [2000H], AL

3.7 Si desea comience desde 200 Reste el contenido de AL y use SUB 200. ¿AL es correcto? Si no, ¿qué método debería utilizarse

?

Solución: Incorrecta.

El método correcto es:

MOV BL, 200

SUB BL, AL

3.8 Pruebe dos métodos para escribir el puerto esclavo Instrucción 8OH para leer información. Luego use dos métodos para escribir instrucciones para generar

10OH desde el puerto 4OH.

Solución:

(1) EN AL, 80H

(2) MOV DX, 8OH

IN AL, DX p>

(3) MOV, AL, lOOH

SALIDA 40H, AL

(4) MOV AL, 10OH

MOV DX. 4OH

OUT DX, AL

3.9Si: AL=20H, BL=1OH, luego de ejecutar CMP AL, BL, pregunte:

(1) AL , BL El contenido son dos números sin signo ¿Cuál es el resultado de la comparación? ¿Qué bandera se ve afectada?

(2) El contenido de AL y BL son dos números con signo. ¿Cuál es el resultado de la comparación y qué bit de bandera se ve afectado?

Solución:

(l) AL=2OH, BL=1OH, O=0, S=0, Z=0, A=0, P=0, C=0 .

(2) Debido a que ambos son números positivos con signo, el resultado es el mismo que (l).

3.10 Para encontrar AL × 10, ¿intenta escribir el segmento de programa correspondiente?

Solución:

(1) Usar instrucciones de multiplicación:

MOV BL, 10

MUL BI,

(2) Utilice instrucciones de cambio:

SHL AL, 1

MOV BL, AL

SHL AL, 2

ADD AL , BL<

(3) Utilice instrucciones de suma:

AÑADIR AL, AL

MOV BL, AL

AÑADIR AL, AL

AÑADIR AL, AL

AÑADIR AL, AL

AÑADIR AL, BL

3.11 ¿Cuáles son las instrucciones en lenguaje ensamblador 8086? ¿modo? ¿Qué método de direccionamiento ejecuta las instrucciones más rápido?

Solución: Los modos de direccionamiento se dividen en direccionamiento de datos inmediato, direccionamiento de operando de registro y direccionamiento de operando de memoria

. Entre ellos, el direccionamiento de operandos de registro es la forma más rápida de ejecutar instrucciones.

3.12 En el direccionamiento directo, solo se representa la dirección de desplazamiento del operando, entonces, ¿cómo se determina la dirección del segmento? Si se utiliza un registro de segmento para representar la dirección del segmento, ¿cómo debería representarse en la instrucción?

Solución:

Acceso a datos predeterminado, el operando se encuentra en el segmento DS; la operación de pila se encuentra en el segmento SS; el operando fuente (SI) de la operación se encuentra en el DS; segmento, y el operando de destino (DI) se encuentra en el segmento ES usando BP como puntero se encuentra en el segmento SS; Si desea especificar la dirección del segmento explícitamente, especifique el registro del segmento en el operando. Por ejemplo:

MOV AX, ES: (BX 10H)

3.13 En el modo de direccionamiento indirecto de registro, si el registro de segmento no se especifica en la instrucción, cómo determinar la dirección del segmento ?

Solución:

En el direccionamiento indirecto de registro, si el registro de segmento no se especifica en la instrucción, la dirección del segmento

se acuerda implícitamente, es decir, implícitamente Seleccionar registro de segmento. Si el tipo de operación es una instrucción, especifique el registro de segmento de código CS,

Si el tipo de operación es una operación de pila, especifique el registro de segmento de búsqueda de pila SS,..., como se muestra en la Tabla 3-1 .

Cuando es necesario exceder el acuerdo, generalmente se agregan dos puntos ":" antes del reemplazo del segmento de código para indicar la anulación del segmento de código, lo que permite al programador desviarse de cualquier código acordado. segmento.

Por ejemplo:

MOV ES: [BX], AX

En este momento, los datos se transferirán desde el registro EAX a la unidad de almacenamiento direccionada. por EBX en el segmento adicional, en lugar de transmitir

al segmento de datos.

3.14 ¿Cuáles son las funciones de BX, BP, SI y DI cuando se utiliza el direccionamiento de registro indirecto? Cuando estos cuatro registros se combinan para el direccionamiento indirecto, ¿cómo se calcula la dirección? Por favor dé un ejemplo.

Respuesta: En el direccionamiento de registros indirecto, BX y BP se utilizan como registros entre direcciones, mientras que SI y DI se utilizan como

registros de índice. A excepción del direccionamiento entre BP, que de forma predeterminada es el segmento de pila, otros registros utilizan de forma predeterminada el segmento de datos.

Todos se pueden utilizar individualmente, desplazados o combinados.

Por ejemplo:

[BX n]

LBP n]

[SI n]

[DI n]

[BX SI n]

[BX DI n]

[BP SI n]

[BP DI n]

3.15 Configure DS=2100H, SS=5200H, BX=1400H, BP=6200H y describa las operaciones específicas de las dos instrucciones siguientes:

MOV BYTE PTR[BP], 200

MOV WORD PTR[BX], 2000

Solución: La instrucción anterior transfiere el valor inmediato (debe ser un byte) a (debe ser un byte) 200 al segmento de la pila (segmento predeterminado de BP)

La unidad de bytes especificada por BP, la dirección es: 52000H+620OH=58200H

La segunda instrucción es transferir el valor inmediato .2000 al segmento de datos (el segmento predeterminado de BX ), el desplazamiento lo especifica BX. La dirección es: 21000H + 1400H = 58200H 1400H = 22400H 3.16 ¿A qué se debe prestar atención al utilizar instrucciones de operación de moneda del montón? ¿Intercambiar instrucciones?

Solución: la instrucción de la pila puede usar la unidad de memoria como operando (de memoria a memoria, pero la instrucción MOV no puede). transferir datos entre unidades de memoria La instrucción XCHG debe ser un registro

3.17 ¿Cuál de las siguientes instrucciones es correcta? Si es incorrecta, explique por qué

(1)XCHG. CS, AX

(2)MOV [BX], [1000]

( 3)XCHG BX, IP

(4)PUSH CS

(5)POP CS

(6)IN BX, DX

(7)MOV BYTE[BX], 100O

(8) MOV CS, [1000]

Solución:

(1) Error, no se puede intercambiar CS

(2) Error, la instrucción MOV no se puede transferir entre. memorias

(3) Error, IP no se puede intercambiar

(4) Error, CS se puede utilizar como operando de la instrucción PUSH. >(5) Error, CS se puede utilizar como operando de la instrucción POP

(6) Error, la operación objetivo de la instrucción IN Los números son acumuladores.

(7) Error, el operando de destino está en bytes.

(8) Error, CS no se puede utilizar como operando de destino de la instrucción MOV.

3.18 La siguiente es la tabla de codificación del código Gray:

O 0000

1 0001

2 0011

3 0010

4 0110

5 0111

6 0101

7 0100

8 1100

Diseñe un segmento de programa que utilice conversión de código y otras instrucciones para convertir código Gray a código ASCII.

Solución:

MOV BX, TABLA

MOV SI, ASCII_TAB

MOV AL, 0

MOV CX, 10

TRAN: TABLA XLAT

MOV DL, AL

AÑADIR DL, 30H

MOV [SI], DL

INC AL

LOOP TRAN

3.19 ¿Por qué necesitamos usar la instrucción de multiplicación para determinar si es una instrucción de multiplicación con o sin signo?

Solución: Porque las operaciones de multiplicación de números con y sin signo son las mismas. Pero el signo del resultado depende de los signos de los dos operandos.

3.20 ¿Cuáles son los usos generales de las instrucciones de extensión de bytes y de las instrucciones de extensión de palabras? Por favor dé un ejemplo.

Solución: Se utiliza principalmente para expandir el dividendo al doble del ancho del operando antes de la división de bytes y de palabras.

3.21. ¿Qué es el código BCD? ¿Qué es un código BCD combinado? ¿Qué es un código BCD no combinado? ¿Cuál es el método para sumar, restar, multiplicar y dividir códigos BCD en lenguaje ensamblador 8086?

Respuesta: El código BCD es un número binario codificado en decimal. El código BCD combinado son dos BCD en un byte, con el más alto en los 4 bits superiores. El código BCD no combinado son los 4 bits inferiores de un número BCD en un byte, y los 4 bits superiores son 0. 8086 utiliza la instrucción de ajuste BCD para ajustar el resultado al número BCD correcto después de realizar sumas, restas y operaciones en BCD. operaciones de multiplicacion. Utilice la instrucción de ajuste BCD para realizar la operación de división antes de realizar la operación de división BCD.

3.22 ¿Por qué es necesario el ajuste decimal cuando se utilizan instrucciones aritméticas ordinarias para realizar operaciones BCD? Específicamente, ¿en qué parte del segmento del programa se debe agregar una instrucción de ajuste decimal al realizar operaciones de suma, resta, multiplicación y división en código BCD?

Solución: Debido a que la instrucción 8086 trata los operandos como números binarios para operaciones binarias, es necesario realizar ajustes para obtener el resultado BCD correcto. Las instrucciones de ajuste BCD se agregan después de las instrucciones de suma, resta y multiplicación, mientras que las instrucciones de ajuste BCD se usan antes de las instrucciones de división.

Respuestas a la Tarea del Capítulo 4

4.1 Luego de ejecutar el siguiente programa, complete los registros y unidades de almacenamiento correspondientes con los resultados:

MOV AL, 1OH

MOV CX, 100OH

MOV BX, 2000H

MOV [CX], AL

XCHG CX, BX

MOV DH, [BX]

MOV DL, 01H

XCHG CX, BX

MOV [BX], DL

HLT

SOLUCIÓN: El contenido del registro y unidad de almacenamiento es el siguiente:

AL = 1OH

BL = OOH

BH = 2OH

p>

CL = OOH

CH = 1OH

DH = 1OH

(10O0H) = lOH

(200OH) = 0lH

2. Los requisitos son los mismos que en la pregunta 4.

1. El procedimiento es el siguiente:

MOV AL, 50H

MOV BP, 100OH

MOV BX, 200OH

MOV [ BP], AL

MOV DH, 20H

MOV [BX], DH

MOV DL, OlH

MOV DL, [ BX]

MOV DL, [BX]

MOV CX, 300OH

HLT

Solución: Los registros y unidades de almacenamiento son como siguiente:

AL = 5OH

BL = OOH

BH = 20H

CL = OOH

CH = 30H

DL = 20H

DH = 2OH

BP = 100OH

(10OOH) = 5OH

(20OOH) = 20H

4.3 Hay un bloque de datos de 100 cuentas a partir de la unidad 1000H. Si desea transferirlo al área de almacenamiento a partir de la unidad 200OH, la transferencia del bloque de datos debe realizarse mediante. los siguientes tres métodos. Un programa que prepara bloques de datos para su transmisión.

(1) Transmitir instrucciones sin bloques de datos

(2) Transmitir instrucciones con bloques de datos individuales

(3) Transmitir instrucciones con instrucciones de bloques de datos agrupados.

Solución:

(1) LEA SI, 1OOOH

LEA DI, 200OH

MOV CX, 100

L1: MOV AX, [SI]

MOV [DI], AX

BUCLE Ll

HLT

(2 ) LEA SI, 100OH

LEA DI, 2000H

MOV CX, 100

CLD

L1: MOVSB

BUCLE L1

HLT

(3) LEA SI, 100OH

LEA DI, 200OH

MOV CX, 100

p>

CLD

REP MOVSB

HLT

4.4 Escriba un programa para transferir 100 números comenzando en la ubicación 1000H usando registros de direcciones variables a la memoria área a partir de 1070H

.

Solución:

LEA SI, 100OH

LEA DI, 1070H

MOV CX, 100

CLD

REP MOVSB

HLT

4.5 Los requisitos son los mismos que los de la pregunta 4.4, la dirección de origen es 2050H, la dirección de destino es 2000H y la longitud del bloque es 50.

Solución:

LEA SI, 205OH

LEA DI, 200OH

MOV CX, 50

CLD

REP MOVSB

HLT

4.6 Escribe un programa para convertir 100 números a partir de la celda 100OH en 100 números. Convierta 100 números que comienzan en la celda 100OH a un rango de almacenamiento que comienza en 105OH

(Nota: hay superposición en los rangos de datos).

Solución:

LEA SI, 100OH

LEA DI, 1050H

AÑADIR SI, 63H

AÑADIR DI, 63H

MOV CX, 100

STD

REP MOVSB

HLT

4.7.

4.7.p>

Transfiera 100 números desde la posición inicial de la unidad 100 al área de almacenamiento a partir de 105OH

(Nota: las áreas de datos se superponen). p>

4.7 En la celda 0500H, hay 100 números. Debe transferirse al área de almacenamiento a partir de las 1000 H,

Pero el valor del número debe verificarse durante el proceso de transferencia. Cuando se encuentre el primer 0, la transferencia se detendrá.

Solución:

LEA SI, 050OH

LEA DI, 10OOH

MOV CX, 100

N1 : MOV AL, [SI]

CMP AL, 0

JZ N2

MOV [DI], AL

INC SI

INC DI

LOOP N1

N2: HLT

4.14 Si hay un número en la celda 0500H

(1)Utilice la instrucción de suma para multiplicarlo por 2 y enviarlo de regreso a la unidad de almacenamiento original (suponiendo que X×2 sigue siendo un byte);

(2)X×4;

(3)X×10 (asumiendo X×l0≤255).

Solución:

(1) LEA BX, 050OH

MOV AL, [BX]

AÑADIR AL, AL

MOV [BX], AL

(2) LEA BX, 0500H

MOV AL, [BX]

AÑADIR AL, AL p>

(3)X×10 (asumiendo X×l0≤255). AL

AÑADIR AL, AL

MOV [BX], AL

(3) LEA BX, 050OH

MOV AL, [ BX]

AÑADIR AL, AL

MOV DL, AL

AÑADIR AL, AL

AÑADIR AL, AL

AÑADIR AL, AL

AÑADIR AL, AL.AL

AÑADIR AL, DL

MOV [BX], AL

Capítulo 5 Respuestas a la tarea

5.1 ¿Cuál es el significado de las bicicletas de autobús? ¿De cuántos relojes consta el ciclo de bus básico de una CPU 8086/8088? Si la CPU tiene una frecuencia de 8 MHz, ¿cuál es uno de sus ciclos de reloj? ¿Qué es una bicicleta de autobús básica? Si la frecuencia principal es de 5MHz, ¿cómo calcularla?

Respuesta: El tiempo necesario para que CPLI acceda al bus (lectura/escritura de bytes o palabras de la memoria interna o del puerto E/S) se denomina ciclo de bus. El ciclo de bus básico de una CPU 8086/8088 consta de 4 relojes.

Si la frecuencia de reloj de la CPU es 8 (5) MHz, el ciclo de reloj es 1/8 MHz = 125 (1/5 MHz = 2O) ns y el ciclo de bus básico es 4 × 125 (200) ns = 500 (800) ns

5.2 ¿Qué operaciones realiza la CPU en los estados TI, T2, T3 y T4 del ciclo del bus? ¿Cuándo es necesario insertar

estado de espera Tw? ¿Dónde se inserta Tw? ¿Cómo insertar?

Respuesta: El siguiente es un ejemplo de lectura de memoria.

En el ciclo Tl: señales de dirección de salida, señales de habilitación de pestillo de dirección, señales de control de acceso a puerto de E/S o memoria;

En el ciclo T2: CPIJ comienza a realizar operaciones de transferencia de datos En este momento, el interruptor multiplexor dentro del 8086CPU cambia a las líneas de dirección/datos AD15 ~ AD0, cancela la dirección y cambia al bus de datos para prepararse para leer y escribir datos. El controlador de bus 8288 envía información al controlador de bus de datos. La señal de habilitación del bus de datos y la señal de control del transceptor de datos DT/R enviada por el controlador del bus 8288 permiten que el transceptor de datos funcione, conecta el bus de datos a la línea de datos de la CPU 8086 y controla la dirección de transmisión de datos. De manera similar, las líneas de dirección/estado A19/S6~A16/S3 se conmutan a información de estado relacionada con el ciclo del bus, indicando algunas condiciones relacionadas con el ciclo.

En el flanco descendente del reloj al comienzo del ciclo T3, la CPU 8086 muestrea la línea READY. Si la señal READY está activa (alta), se ingresa al estado TA al final del estado T3. En el flanco descendente del reloj al comienzo del estado T4, los datos del bus de datos se leen en la CPU o se escriben en la unidad de selección de direcciones.

En estado T4: fin del ciclo del autobús. Si se accede a una memoria lenta o a una interfaz periférica, la señal LISTO debe reducirse inmediatamente después de emitir la dirección en el estado Tl y decodificar la unidad o dispositivo seleccionado. Cuando la señal READY muestreada por la CPU 8086 en el estado T3 no es válida, se insertará un período de espera Tw. En el estado Tw, la CPU continúa muestreando la señal READY y no entrará en el estado T4 hasta que sea válida. completar el ciclo del bus de datos. En el estado T4, la transferencia de datos se completa y finaliza el ciclo del bus. En el estado T4, la CPU 8086 completa la transmisión de datos y la señal de estado cambia a un estado de transición sin operación. Durante este período, la CPU 8086 finaliza el ciclo del bus, restaura el estado inicial de cada línea de señal y se prepara para el siguiente ciclo del bus.

Respuestas del Capítulo 6

6.1 Si hay una computadora de placa única con 8 bloques de 2114 4KBRAM, el cableado es como se muestra en la figura.

¿Cuáles son las direcciones base de cada uno de los 4 grupos de 1 KB de RAM? ¿Hay áreas superpuestas en las direcciones? ¿Cuál es el rango de direcciones para cada grupo?

Respuesta: La dirección básica de la RAM es:

Grupo 1 OOOOH ~ 03FFH

Grupo 2 4000H ~ 43FFH

Grupo 3 8000H ~ 83FFH

Grupo 4 COOOH ~ C3FFH

Estas direcciones tienen áreas superpuestas. El rango de direcciones de cada grupo es OOOH ~ 3FFH (1024 bytes).

6.4 Si desea expandir 1 KB de RAM (2114 segmentos) y especificar la dirección 8000H ~ 83FFH, ¿cómo se deben conectar las líneas de dirección?

Solución: expanda lKB RAM a la dirección especificada 8000H ~ 83FFH, conecte los 10 bits inferiores de la línea de dirección al chip y los 6 bits superiores de la dirección (Al5 ~ A10 = 100000) generen un señal de selección de grupo.

Clave de respuestas del Capítulo 7

7.1 ¿Por qué los dispositivos externos están conectados al sistema host a través de circuitos de interfaz?

Respuesta: Debido a que existen muchos tipos de dispositivos externos, la información de entrada puede ser digital, analógica o de conmutación, y la velocidad, el nivel y la potencia de entrada son muy diferentes a los de la CPU. Por lo tanto, normalmente se conecta al sistema anfitrión a través de un circuito de interfaz.

7.4 ¿Qué tipos de información se transfieren entre la CPU y los dispositivos de entrada/salida?

Solución: Hay tres tipos principales de información transmitida entre la CPU y los dispositivos de entrada/salida.

(l) Datos

En las microcomputadoras, los datos suelen ser de 8, 16 o 32 bits.

(2) Información de estado

Al ingresar, hay información sobre si el dispositivo de entrada está listo; al emitir, hay información sobre si el dispositivo de salida está inactivo y si la salida; el dispositivo está emitiendo una indicación de ocupado, etc.

(3) Información de control

Por ejemplo, controlar los dispositivos de entrada y salida para iniciar o detener.

7.9 Supongamos que la dirección del puerto de entrada de una interfaz es 0100H, la dirección del puerto de estado es 0104H y el quinto bit en el puerto de estado es 1, lo que significa que un determinado byte en el búfer de entrada está listo para aporte. Diseñar un programa específico para implementar consultas de tipo

entrada.

Solución: El segmento del programa de entrada de consulta es:

POLl: IN AL, 0104H

AND AL, 20H

JZ POLl

IN AL, 0100H

Capítulo 8 Respuestas a las tareas

8.1 Durante el proceso de respuesta a la interrupción, la CPU 8086 envía dos R al 8259A. ¿Cuáles son las funciones de las dos señales RT enviadas por la CPU 8086 al 8259A durante el proceso de respuesta a la interrupción?

Solución: El primer pulso enviado por la CPU le dice al circuito externo que su solicitud de interrupción ha sido respondida y

debe prepararse para enviar el número de tipo a la CPU. Después de que el 8259A recibe este pulso, establece la solicitud de interrupción de mayor prioridad en el Registro de estado de interrupción (ISR) y restablece el bit correspondiente en el IRR (Registro de solicitud de interrupción).

El segundo pulso de la CPU le indica al circuito externo que coloque el número del tipo de interrupción en el bus de datos.

8.2 ¿Cuántos tipos de interrupciones puede tener como máximo la CPU 8086? ¿Cuáles son las dos categorías según el método de generación de interrupciones?

Solución: La CPU 8086 puede tener hasta 256 tipos de interrupciones. Dependiendo del método de generación de interrupciones, se pueden dividir en dos categorías: interrupciones internas (interrupciones de software) y externas (interrupciones de hardware).

8.9 Al escribir una subrutina de manejo de interrupciones, ¿por qué necesitamos proteger muchos registros en la subrutina?

Solución: porque al ejecutar el programa de usuario, habrá resultados intermedios en los registros, y cuando estos registros se vayan a utilizar en la rutina del servicio de interrupción, el contenido de estos registros se enviará a la pila. para almacenamiento (llamado Para proteger el sitio). Cuando el programa de usuario regresa de la rutina del servicio de interrupción, el contenido de estos registros se restaura desde la pila a los registros (llamado sitio de restauración).

8.12 Si hay cinco fuentes de interrupción en el sistema, sus prioridades son: 1, 2, 3, 4, 5, 6, 7, 8: 1, 2, 3, 4, 5, La entrada La dirección del programa de servicio de interrupción es respectivamente. Escriba un programa. Cuando una interrupción solicita a la CPU que responda, puede consultar la fuente del programa de servicio de interrupción de la interrupción de mayor prioridad.

Programa.

Solución: si las solicitudes de interrupción de cinco fuentes de interrupción se colocan en un registro de estado de interrupción, colóquelas en los bits de estado 7 (prioridad más alta) a 3 en orden de prioridad.

El segmento del programa del método de consulta es:

IN AL, STATUS

CMP AL, 80H

JNE N1

JMP 3000H

N1: EN AL, ESTADO

CMP AL, 40H

JNE N2

JMP 3020H

N2: EN AL , ESTADO

CMP AL, 20H

JNE N3

JMP 3050H

N3: EN AL, ESTADO

CMP AL, 10H

JNE N4

JMP 3080H

N4: EN AL, ESTADO

CMP AL, 08H

JNE N5

JMP 30A0H

N5: RET

HOJA DE RESPUESTAS DE ASIGNACIONES DEL CAPÍTULO 9

9.3 En un sistema de aplicación, la dirección del contador/temporizador 8253 es 340H~343H, el tiempo se usa como divisor de frecuencia (N es el coeficiente de división de frecuencia), el temporizador 2 se usa como contador de eventos externo, ¿cómo escribir el programa de inicialización?

Solución:

Se utiliza el temporizador 0 como divisor de frecuencia, el modo de trabajo es 2 y su programa de inicialización es:

MOV AL, 34H

SALIDA 343H, AL

MOV AL, N1

SALIDA 342H, AL

MOV AL, N2

SALIDA 342H, AL

El temporizador 2 se utiliza como contador de eventos externo y el modo de trabajo es 0. El programa de inicialización es:

MOV AL, 0B0H

OUT 343H, AL

MOV AL, N1

OUT 342H, AL

MOV AL, N2

OUT 342H, AL

9.4 Si ya tienes un generador de frecuencia con una frecuencia de 1 MHZ, entonces si quieres pasar el El contador/temporizador 8253 oscila, el punto clave es generar una señal cada segundo, ¿cómo debo conectar el 8253? Por favor escriba un programa de inicialización.

Solución:

Para que la señal de 1MHZ se convierta en una vez por segundo, es necesario dividirla por 106. El recuento de un canal es de 16 bits y el valor máximo es 65536, por lo que necesitamos dos canales en cascada y luego cada canal cuenta 1000. Utilice el canal 0 y el canal 1 para conectar en cascada, ambos trabajando en modo 2, el procedimiento de inicialización es el siguiente:

MOV AL, 34H

OUT 343H, AL

MOV AL, 0E8H

SALIDA 342H, AL

MOV AL, 03

SALIDA 342H, AL

MOV AL, 74H

SALIDA 343H, AL

MOV AL, 0E8H

SALIDA 342H, AL

MOV AL, 03

SALIDA 342H , AL

SALIDA 342H, AL

MOV AL, 04

MOV AL, 03