Principios de microcomputadoras Preguntas del examen final Lenguaje ensamblador
Primero analice el principio de funcionamiento de la impresora. La interfaz entre la microimpresora y la computadora host es una interfaz paralela.
El flujo de trabajo es: el host envía los datos que se imprimirán en la línea de datos y luego envía una señal de comunicación selectiva. La impresora lee los datos y al mismo tiempo activa la línea BUSY para notificar al host que deje de enviar datos. En este momento, la impresora procesa internamente los datos leídos. Después del procesamiento, habilite ACK, deshabilite BUSY y notifique al host que se pueden enviar los siguientes datos. El cableado del hardware es el siguiente:
Tabla 7-2: Señales de pines estándar de Centronics
¿Nombre del pin? ¿nombre? Función de dirección
1?Selección de datos, recibir datos cuando sea válido
2-9?Línea de datos
10?ACKNLG?Out?Señal de respuesta, cuando sea válido Prepárese para recibir datos
11?BUSY?Señal de ocupado, válida cuando no se reciben datos
12?PE?Sin papel
13?SLCT?out ?Seleccione en línea, lo que indica que la impresora no está funcionando
14?AUTOLF?In?Ajuste de línea automático
31?INIT?in?Restablecimiento de impresora
32 ?ERROR?Out?Error
36?SLCTIN?IN? Válido cuando la impresora no está funcionando
Descripción:
La señal del selector de la impresora es ejecutada por la PC0. , y el selector se establece/restablece PC0 produce. Al mismo tiempo, la PC7 recibe la señal "BUSY" de la impresora como consulta de salida.
La palabra de control del 8255A es 10001000, ¿cuál es 88H?
Puerto A modo 0, salida; puerto C modo de alto nivel 0 entrada, modo de bajo nivel 0 salida
Restablecimiento de PC0: 00000001, es decir, 01H
Reinicio de PC0: 00000000, que es 00H
Las cuatro direcciones de puerto de 8255A son 00000000, que es 00H
La palabra de control de 8255A es: 10001000, que es 100H: 10001000 , que es 88H
p>La palabra de control de 8255A es: 10001000, que es 88H
La palabra de control de 8255A es: 10001000, que es 88H: 10001000, que es 88H . Las direcciones de 4 puertos del 8255A son: 00H, 01H, 02H, 03H.
El proceso de programación es el siguiente:
DADA?SEGMENT
BUFF?DB?'¡Este?es?un?programa?impreso!','$
¿DATOS?ENDS
CÓDIGO?SEGMENTO
ASUME?CS: CÓDIGO, DS: DATOS
INICIO: MOV?AX, DATOS
MOV?DS, AX
MOV?SI, OFFSET?BUFF
MOV?AL, 88H; inicialización 8255A, puerto A modo 0, salida p>
OUT?H,?AL;?C puerto modo de alto nivel 0 entrada, modo de bajo nivel 0 salida
MOV?AL,?01H;
OUT?03H , AL?; Incluso si la selección no es válida, se puede configurar PC0
WAIT:?IN?AL,?02H
TEST?AL,?80H Compruebe si PC7 es 1; , es decir, ocupado
JNZ?WAIT;?Esperar cuando esté ocupado
MOV?AL, [SI]
CMP?AL, '$'?
JZ?DONE? es, genera un carácter de retorno de carro
OUT?00H, AL?; , 00H
OUT?03H, AL
MOV?AL, 01H
OUT?03H, AL ; Generar señal de selector
INC?SI?Modificar el puntero para que apunte al siguiente carácter
JMP?WAIT
DONE:?MOV?AL, 0DH
OUT?00H, AL ?H, AL
MOV?AL,?01H
OUT?03H,AL?; generar selección
WAIT1: ?IN?AL,?02H
TEST?AL,?80H; Compruebe si PC7 es 1, es decir, ocupado
JNZ?WAIT?1; Si está ocupado, espere
MOV? AL, 0AH
OUT?00H, AL?; Nueva línea de salida
MOV?AL, ?00H
OUT?03H, AL
MOV?AL ,?01H
OUT?03H,AL ; Generar selección
MOV?AL,?01H
OUT?03H, AL?MOV ?AH, 4CH
INT?21H
CÓDIGO?ENDS
END?START