Red de conocimiento del abogados - Preguntas y respuestas jurídicas - Buscamos urgentemente respuestas a los ejercicios extraescolares de Zhou Mingde sobre los principios y la tecnología de los microcontroladores

Buscamos urgentemente respuestas a los ejercicios extraescolares de Zhou Mingde sobre los principios y la tecnología de los microcontroladores

Respuestas a la tarea del Capítulo 1

1.1 ¿Cuáles son las diferencias entre microprocesadores, microcomputadoras y sistemas de microcomputadoras?

Solución:

CPU ( calculadora y controlador) está construido en un chip que utiliza tecnología de circuito integrado a gran escala, que es un microprocesador.

Un microprocesador más una cierta cantidad de memoria y dispositivos externos (o interfaces a dispositivos externos) constituyen una microcomputadora. Las microcomputadoras se combinan con software que administra y mantiene el hardware de la computadora y admite aplicaciones para formar un sistema de microcomputadora.

1.2 ¿De qué partes consta la CPU en términos de estructura interna? ¿Qué funciones principales debe tener la CPU?

Explicación:

La CPU funciona principalmente como una calculadora está compuesta por unidades lógicas aritméticas, registros de instrucciones que funcionan como controladores, decodificadores de instrucciones, matrices lógicas programables y registros de banderas. Su función principal es realizar operaciones aritméticas y lógicas y controlar que la computadora se ejecute automáticamente de acuerdo con las disposiciones del programa.

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

Respuesta:

El uso de una estructura de bus amplía la flexibilidad de la transmisión de datos y reduce alambrado. Además, el autobús puede estandarizarse y ser fácilmente compatible e industrializado.

1.4 ¿Cuáles son las diferencias estructurales entre el bus de datos y el bus de direcciones si se comparten los datos y la dirección de un sistema?

Se comparte un conjunto de buses o parte del bus? Entonces, ¿qué se requiere? ¿Distinguir 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 utiliza líneas de datos y direcciones para multiplexar, sirviendo 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 se genera primero la dirección (especifique la unidad para leer o escribir datos) y luego los datos se leen o escriben 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

Respuestas de la tarea del Capítulo 2

2.1 Microprocesador de estructura IA-32 Hasta Pentillm4, ¿qué ¿Qué tipos hay?

Respuesta:

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

2.6 ¿Cuáles son los modos de funcionamiento del microprocesador de estructura IA-32?

Respuesta:

La estructura IA-32 admite 3 modos de funcionamiento: modo de protección, Modo de dirección real y modo de gestión del sistema. Operación

El modo de operación determina qué instrucciones y características estructurales son accesibles.

2.8 ¿Cómo se forma el espacio de direcciones del microprocesador de estructura 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 el mecanismo de paginación no está habilitado, la dirección lineal es la dirección física; si el mecanismo de paginación está habilitado, convierte la dirección lineal en una dirección física.

2.15 ¿De qué partes consta el componente de interfaz de bus del microprocesador 8086?

Respuesta:

La unidad de interfaz de bus (BIU) en el microprocesador 8086 es responsable para la transmisión de información entre CPU y memoria

. Específicamente, la BIU es responsable de recuperar instrucciones de una parte designada de la memoria y enviarlas a la cola de instrucciones para su puesta en cola (la cola de instrucciones 8086 tiene 6 bytes, mientras que la cola de instrucciones 8088 tiene solo 4 bytes); operandos necesarios para ejecutar la instrucción.

La unidad de ejecución (UE) es responsable de ejecutar las operaciones especificadas por la instrucción.

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

Solución:

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

Respuestas de la tarea del Capítulo 3

3.1 Indique el direccionamiento de los operandos de origen y destino en las siguientes instrucciones respectivamente.

(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 es el direccionamiento inmediato y el operando de destino es el direccionamiento de registro.

(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 operando 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 de registro.

(6) es una operación de pila.

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

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

es el direccionamiento directo, que transfiere el contenido de la dirección 200OH en el segmento de datos (DS) 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 10]

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

(5)MOV BX, [BP+DI+2]

Solución:

(1) Segmento de datos unidad BX+10.

(2)Apilar segmento BP+10 unidades.

(3) Segmento de datos SI+unidad de 5 bytes.

(4) Segmento adicional (segmento 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) es incorrecto, AL y El ancho de los datos BX es diferente.

(2) Correcto.

(3) es incorrecto porque no está claro si el incremento son bytes o palabras.

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

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

(6) Correcto.

(7) Correcto.

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

(9) es incorrecto, CS no se puede utilizar como operando de la instrucción PUSH.

3.5 Supongamos que el valor inicial del puntero de dinero 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 PUSH BX y POP AX, ¿cuáles son los valores de SP, AX y BX?

Solución:

(1) SP =OFFEH.

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

3.6 Para completar el envío de [3000H] a [2000H], use el comando:

MOM [200OH], [300OH]

¿Es correcto si? Incorrecto, ¿qué método se debe utilizar para lograrlo?

Solución: Incorrecto.

El método correcto es:

MOV AL, [300OH]

MOV [2000H], AL

3.7 Si desea empezar desde 200 Resta el contenido en AL de SUB 200. ¿AL es correcto? Si no, ¿qué método se debe utilizar?

Solución: Incorrecta.

El método correcto es:

MOV BL, 200

SUB BL, AL

3.8 Pruebe dos métodos para escribir desde 8OH Instrucciones para leer información del puerto. Luego use dos métodos para escribir el comando para ingresar 10OH desde el puerto 4OH.

Solución:

(1)IN AL, 80H

(2)MOV DX, 8OH

IN AL, DX p>

(3)MOV, AL, lOOH

SALIDA 40H, AL

4)MOV AL, 10OH

MOV DX, 4OH

p>

OUT DX, AL

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

(1) AL, BL Los contenidos de AL y BL son dos números sin signo. ¿Cuál es el resultado de la comparación? ¿Qué bits de bandera se ven afectados?

(2) Los contenidos de AL y BL son dos números con signo. ¿Resultado? ¿Qué bits de bandera se ven afectados?

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 signos positivos, el resultado es el mismo que (l).

3.10 Si desea realizar una instrucción AL:

MOV BL,10

MUL BI,

(2) Utilice la instrucción shift :

SHL AL,1

MOV BL, AL

SHL AL, 2

AÑADIR 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, BL

3.11 ¿Cuáles son los tipos de modos de direccionamiento para las instrucciones en lenguaje ensamblador 8086? ¿Qué modo de direccionamiento tiene la velocidad de ejecución de instrucciones más rápida?

Solución: Los modos de direccionamiento se dividen en: modo de direccionamiento de Número inmediato, modo de direccionamiento de operando de registro y modo de direccionamiento de operando de memoria

modo de direccionamiento. Entre ellas, las instrucciones con modo de direccionamiento de operando de registro son las que se ejecutan más rápido.

3.12 En el modo de direccionamiento directo, generalmente solo se señala 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 señalar la dirección del segmento, ¿cómo debería hacerlo? ¿Se puede expresar en la instrucción?

Solución:

Acceso a datos predeterminado, el operando está en el segmento DS; la operación de pila está en el segmento SS; la operación de cadena está en el segmento DS y el operando de destino (DI) en el segmento ES utiliza BP como puntero 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 el ¿Dirección del segmento?

Explicación:

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

se acuerda implícitamente. , es decir, los registros de segmento se seleccionan implícitamente. 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 pila SS,..., como se muestra en la Tabla 3-1.

Cuando es necesario exceder el acuerdo, el prefijo de reemplazo de segmento más dos puntos ":" generalmente se usa para indicar anulación de segmento, lo que permite al programador desviarse de cualquier segmento acordado.

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 Cuando se utiliza el direccionamiento indirecto de registros, ¿para qué situaciones se utilizan BX, BP, SI y DI? Cuando estos cuatro registros se combinan para el direccionamiento indirecto, ¿cómo se calcula la dirección?

Solución: En el modo de direccionamiento indirecto de registro, BX y BP se utilizan como registros de dirección indirecta, mientras que SI y DI se utilizan como

registros de índice. A excepción de la dirección indirecta de BP, el segmento predeterminado es el segmento de pila y los demás son el segmento de datos de forma predeterminada. Se pueden utilizar solos, con compensaciones o en combinación. Por ejemplo:

[BX +n]

LBP +n]

[SI +n]

[DI +n]

[BX +SI +n]

[BX +DI +n]

[BP +SI +n]

[ BP +DI +n]

3.15 Supongamos DS=2100H, SS=5200H, BX=1400H, BP=6200H, describa las operaciones específicas realizadas por las siguientes dos instrucciones:

p >

MOV BYTE PTR[BP],200

MOV WORD PTR[BX],2000

Solución: La instrucción anterior es un número inmediato (debe ser un byte) 200 , transferido al desplazamiento del segmento de 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) con un desplazamiento especificado por BX. La dirección es: 21000H+1400H = 22400H

3.16. instrucciones de operación? ¿A qué cuestiones se debe prestar atención cuando las instrucciones de transferencia e intercambio involucran operandos de memoria?

Solución: al usar instrucciones de pila, la unidad de memoria se puede usar como un operando (sin embargo, de memoria a memoria). , la pila está fija en el segmento de la pila y solo puede ser señalada por SP. La instrucción MOV no puede implementar la transferencia de datos entre unidades de memoria y debe registrarse un operando.

3.17 ¿Cuál de las siguientes instrucciones? son correctos? ¿Cuáles son incorrectos? Si son incorrectos, explique las razones.

(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:

(l) Error, CS no se puede intercambiar.

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

(3) Error, la 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, el operando destino de la instrucción IN es el acumulador.

(7) Error, el operando destino es una unidad de 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 usando instrucciones de escape y otras instrucciones para convertir de código Gray a código ASCII

Solución:

MOV BX,TABLE

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 Cuando se utilizan instrucciones de multiplicación, se debe prestar especial atención a determinar primero si se utilizan instrucciones de multiplicación con signo o instrucciones de multiplicación sin signo. ¿Por qué es esto?

Solución: Porque la multiplicación de números con signo y números sin signo es la misma, pero el signo del resultado depende de los signos de los dos operandos.

3.20 Cuándo. ¿Se utilizan generalmente instrucciones de expansión de bytes y palabras? Dé un ejemplo

Explicación: Se utiliza principalmente para expandir el dividendo antes de la división de bytes y la división de palabras es un operando con el doble de ancho. p>3.21 ¿Qué es un código BCD? ¿Qué es un código BCD combinado? ¿Qué es un código BCD no combinado? El lenguaje ensamblador 8086 suma, resta y multiplica y ¿qué método se utiliza para la operación de división?

Explicación: El código BCD es un número binario codificado en decimal. El número BCD combinado son dos bits de BCD agregados a un byte, con el dígito alto en los 4 bits superiores. El código BCD combinado coloca un número BCD en los 4 bits inferiores. de un byte y los 4 bits superiores son 0. 8086 usa la instrucción de ajuste BCD para ajustar el resultado al número BCD correcto después de la suma, resta y multiplicación de BCD. Antes de la división BCD, use la instrucción de ajuste BCD y luego realice la división. /p>

3.22 Cuando se utilizan instrucciones de operación ordinarias para realizar operaciones de código BCD, ¿por qué es necesario realizar un ajuste decimal? Específicamente, al realizar la suma, resta y multiplicación de códigos BCD, durante la operación de división, ¿en qué parte del programa? ¿Debe agregarse la instrucción de ajuste decimal en el segmento?

Respuesta: Debido a que la instrucción 8086 usa el operando como un número binario para realizar operaciones binarias, es necesario realizar ajustes para obtener el resultado BCD correcto. Agregue el ajuste BCD. instrucción después de las instrucciones de suma, resta y multiplicación, y use la instrucción de ajuste BCD antes de la instrucción de división y luego la instrucción de división.

Respuestas a la tarea del Capítulo 4

4.1 Después de ejecutar el siguiente programa, complete los resultados de la operación en los registros y unidades de almacenamiento correspondientes:

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 de la unidad de registro y almacenamiento es el siguiente:

AL = 1OH

BL = OOH

BH = 2OH

CL = OOH

CH = 1OH

DH = 1OH

(10O0H) = lOH

(200OH ) = 0lH

2. Igual que 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 CX, 300OH

HLT

Solución : El contenido de los registros y unidades de almacenamiento es el 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 números a partir de la unidad 1000H si desea transferirlo al área de almacenamiento a partir de. 200OH, puede utilizar Se implementan los siguientes tres métodos. Intente escribir programas respectivamente para realizar la transmisión de bloques de datos.

(l) Sin instrucciones de transferencia de bloques de datos

(2) Utilice instrucciones de transferencia de bloques de datos de transferencia única

(3) Utilice instrucciones de transferencia de grupos de bloques de datos.

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

CLD

REP MOVSB

HLT

4.4 Utilice el registro de índice para escribir un programa para transferir 100 números comenzando desde la unidad 1000H para Ir al área de almacenamiento a partir de las 1070H

.

Solución:

LEA SI, 100OH

LEA DI, 1070H

MOV CX, 100

CLD

REP MOVSB

HLT

4.5 requiere la misma pregunta que la pregunta 4.4, la dirección de origen es 2050H, la dirección de destino es 2000H y la longitud del bloque de datos es 50.

Solución:

LEA SI, 205OH

LEA DI, 200OH

MOV CX, 50

CLD

REP MOVSB

HLT

4.6 Escriba un programa para transferir los 100 números comenzando desde la unidad 100OH al área de almacenamiento comenzando desde 105OH

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

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 a las 05:00 H Al comienzo de la unidad, hay 100 números. Es necesario transferirlo al área de almacenamiento a partir de las 1000 H,

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

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 unidad 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

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, DL

MOV [BX], AL

Respuestas a la tarea del Capítulo 5

5.1 ¿Cuál es el significado de ciclo de bus? ¿De cuántos relojes consta el ciclo de bus básico de la CPU 8086/8088? Si la frecuencia de reloj de una CPU es de 8 MHz, ¿cuál es uno de sus ciclos de reloj? ¿Cuánto cuesta un ciclo de bus básico? Si ¿Qué pasa con una frecuencia principal de 5 MHz?

Solución: el tiempo necesario para que CPLI acceda al bus (lectura/escritura de bytes o palabras desde la memoria interna o el puerto I/0). ) se llama ciclo del autobús. El ciclo de bus básico de la 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/8MHz=125(1/5MHz=2O)ns y el ciclo de bus básico es 4×125(200)ns=500(800)ns

5.2 En los estados TI, T2, T3 y T4 del ciclo del bus, ¿qué acciones realiza la CPU? ¿En qué circunstancias es necesario insertarla?

Estado de espera Tw ¿Dónde se inserta Tw? ¿Cómo insertarlo?

Explicación: Lo siguiente toma la lectura de memoria como ejemplo.

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 , esto En este momento, el interruptor multidireccional dentro del 8086CPU cambia, cancela las direcciones en las líneas de dirección / datos AD15 ~ AD0 y cambia al bus de datos para prepararse para la lectura y escritura de datos. El controlador de bus 8288 envía la señal de habilitación del bus de datos y la señal de control de transmisión/recepción de datos DT/R para permitir que funcione el transceptor de datos, conectar el bus de datos a la línea de datos de la CPU 8086 y controlar la dirección de transmisión de datos. De manera similar, las líneas de dirección/estado A19/S6~A16/S3 se cambian a información de estado relacionada con el ciclo del bus para indicar varias situaciones relacionadas con el ciclo.

En el ciclo T3: en el flanco descendente del reloj de inicio, el 8086CPU muestrea la línea READY. Si la señal READY es válida (nivel alto), entrará en el estado TA después del final del estado T3. En el flanco descendente del reloj que comienza en el estado T4, los datos en el bus de datos se leen en la CPU o se escriben en la unidad seleccionada por la dirección.

En estado T4: Fin del ciclo del autobús. Si el acceso es a una memoria lenta o a una interfaz periférica, la dirección que debe emitirse en el estado Tl debe llevar la señal LISTO a un nivel bajo inmediatamente después de decodificar y seleccionar una unidad o dispositivo. Si el 8086CPU muestrea la señal LISTO en el estado T3 y no es válida, insertará el período de espera Tw. En el estado Tw, la CPU continúa muestreando la señal LISTO hasta que sea válida, ingresará al estado T4; complete la transferencia de datos y finalice el ciclo del bus. En el estado T4, el 8086CPU completa la transmisión de datos y la señal de estado. Estado de transición a ninguna 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 ejecutar el siguiente ciclo del bus.

Capítulo 6 Respuestas a la tarea

6.1 Si hay una computadora de placa única con 4 KBRAM compuesta por 8 2114, las conexiones son como se muestra en la figura.

Si cada 1 KB de RAM se toma como un grupo, ¿cuál es la dirección básica de estos cuatro grupos de RAM? ¿Existe un área superpuesta de direcciones? p>

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

El primer grupo OOOOH ~ 03FFH

El segundo grupo 4000H ~ 43FFH

El tercer grupo 8000H ~ 83FFH

El cuarto grupo COOOH ~ C3FFH

Las 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 (usando el chip 2114), la dirección especificada es 8000H~83FFH ¿Cómo deben conectarse las líneas de dirección?

Solución: expandir 1 KB de RAM. Al alcanzar la dirección especificada 8000H ~ 83FFH, los 10 bits inferiores de su línea de dirección se conectan al chip y los 6 bits superiores de la dirección (Al5 ~ A10 = 100000) generan una señal de selección de grupo.

Respuestas a la tarea del Capítulo 7

7.1 ¿Por qué es necesario conectar dispositivos externos al sistema host a través de circuitos de interfaz?

Respuesta: porque hay muchos tipos En el caso de dispositivos externos, la información de entrada puede ser una cantidad digital, una cantidad analógica o una cantidad de conmutación, y la velocidad, el nivel y la potencia de entrada son muy diferentes de 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 transmiten entre la CPU y los dispositivos de entrada y salida?

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

(l) Datos

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

(2) Información de estado

Al ingresar, si la información del dispositivo de entrada está lista; al generar, si el dispositivo de salida está disponible. Si el dispositivo de salida está generando información. luego Espere con indicación de ocupado.

(3) Información de control

Por ejemplo, controlar el inicio o parada de dispositivos de entrada y salida, etc.

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 hay un byte en el búfer de entrada que está listo para la entrada. Diseñar programas específicos para implementar entrada estilo consulta

.

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, ¿cuáles son las funciones de las dos señales mutuas RT enviadas por la CPU 8086 a ¿el 8259A?

Solución: El primer pulso enviado por la CPU le indica al circuito externo que se ha respondido a su solicitud de interrupción.

El número de tipo debe enviarse a la CPU. 8259A recibió esto. Cuando se produce el pulso, la solicitud de interrupción de mayor prioridad se coloca en el Registro de estado de interrupción (ISR) y se restablece el bit correspondiente en el IRR (Registro de solicitud de interrupción). El segundo pulso enviado por la CPU le dice al circuito externo que coloque el número de tipo de interrupción en el bus de datos.

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

Explicación: El 8086CPU puede tener un máximo de 256 interrupciones. tipos. Según el método de generación de interrupciones, se pueden dividir en dos categorías: interrupciones internas (interrupciones de software) e interrupciones externas (interrupciones de hardware).

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

Respuesta: porque cuando el programa de usuario se está ejecutando, habrá resultados intermedios en los registros Cuando estos registros se utilizan en una rutina de servicio de interrupción, el contenido de estos registros debe enviarse a la pila (llamados sitios de protección). Al regresar de la rutina del servicio de interrupción al programa de usuario, estos contenidos se restauran de la pila al registro (lo que se denomina restaurar la escena).

8.12 Si hay 5 fuentes de interrupción en un sistema, sus prioridades se organizan como: 1, 2, 3, 4, 5 y las direcciones de entrada de sus rutinas de servicio de interrupción son: 3000H, 302OH, 3050H , 3080H, 30AOH. Escriba un programa que, cuando una interrupción solicite que la CPU responda, pueda usar el modo de consulta para saltar al programa de servicio de interrupción de la fuente con la mayor prioridad para solicitar una interrupción.

Solución: Si las solicitudes de interrupción de 5 fuentes de interrupción se colocan en un registro de estado de interrupción, se colocan del bit 7 (prioridad más alta) al bit 3 del estado según la prioridad.

El segmento de 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

Capítulo 9 Respuestas a las tareas

9.3 En una determinada aplicación sistema, 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) y el temporizador 2 se usa como contador de eventos externo. ¿Cómo compilar el programa de inicialización?

Solución:

Se utiliza el temporizador 0 como divisor de frecuencia, modo de trabajo 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, trabajando en modo 0, y su programa inicial:

MOV AL, 0B0H

OUT 343H, AL

MOV AL, N1

SALIDA 342H, AL

MOV AL, N2

SALIDA 342H, AL

9.4 Si hay un generador de frecuencia con una frecuencia de 1MHZ. Si queremos usar el contador/temporizador 8253 para generar una señal una vez por segundo, ¿cómo se debe conectar el 8253? Escriba el programa de inicialización.

Solución:

Para cambiar la señal de 1MHZ a una vez por segundo, es necesario dividirla entre 106. El recuento de un canal es de 16 bits y el máximo es 65536. Por lo tanto, es necesario conectar en cascada dos canales y el recuento de cada canal es 1000.

Utilice el canal 0 y el canal 1 para conectarse, ambos funcionan en modo 2. El procedimiento de inicialización es:

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

9.9 Programe el contador/temporizador 8253, el contador 0 se configura en el modo 1, el valor de conteo inicial es 3000H; el contador 1 se configura en el modo 2, el valor inicial es 2010H; al modo 4, el valor inicial es 4030H

Solución: Si la dirección del puerto es: 0F8H~0FBH, el programa de inicialización es:

MOV AL, 32H

SALIDA 0FBH, AL

MOV AL, 00H

SALIDA 0F8H, AL

MOV AL, 30H

SALIDA 0F8H, AL

MOV AL, 74H

SALIDA 0FBH, AL

MOV AL, 10H

SALIDA 0F9H, AL

MOV AL, 20H

SALIDA 0F9H, AL

MOV AL, 0B8H

SALIDA 0FBH, AL

MOV AL, 30H

OUT 0FAH, AL

p>

MOV AL, 40H

OUT 0FAH, AL

Capítulo 10 Respuestas a las tareas

10.4 3 puertos del chip de interfaz paralelo programable 8255A ¿Cuáles son las diferencias en el uso?

Respuesta: Generalmente el puerto A o B se usa como puerto de entrada y salida de datos (el puerto A también se puede usar como un puerto de datos bidireccional), mientras que el puerto C se utiliza como puerto de control o información de estado. Bajo el control de la palabra "modo", se puede dividir en dos puertos de 4 bits. Cada puerto contiene un pestillo de 4 bits. Se utilizan junto con los puertos A y B respectivamente y se pueden utilizar como salida de señal de control o entrada de señal de estado.

10.7 ¿Cuáles son los modos de trabajo básicos del 8255A? ¿Cuáles son las regulaciones para estos modos de trabajo?

Explicación: el 8255A tiene tres modos de trabajo básicos:

Modo 0-----entrada y salida básica:

Modo 1-----entrada y salida estroboscópica;

Modo 2-----transmisión bidireccional.

10.8 Configure el modo de trabajo de 8255A. La dirección del puerto de control de 8255A es OOC6H. Se requiere que el puerto A funcione en modo 1, entrada; el puerto B funcione en modo 0, salida; los 4 bits superiores del puerto C funcionan junto con los 4 bits bajos;

Explicación: La palabra de control requerida es: 10111001B. Las declaraciones de programación son:

MOV AL, 0B9H

OUT OOC6H, AL;

10.9 Suponga que las direcciones de 4 puertos del chip de interfaz paralelo programable 8255A son OOCOH, 00C2H, 00C4H, OOC6H, requieren el método de configuración 0/configuración 1 para configurar PC6 en 1 y PC4 en 0.

Solución: La palabra de control que establece PC6 del puerto C en 1 es: 00001101B,

La palabra de control que establece PC4 en 0 es: 0000100OB.

El segmento del programa es:

MOV AL, DH

OUT OOC6H, AL

MOV AL, 08H.

SALIDA 00C6H, AL