Professional Documents
Culture Documents
2015
PRACTICA 3
Entrada/Salida y DMA
Objetivos: Comprender la comunicacin entre el microprocesador y los perifricos externos (luces, microconmutadores e
impresora). Configurar la interfaz de entrada/salida (PIO) y el dispositivo de handshaking (HAND-SHAKE) para el
intercambio de informacin entre el microprocesador y el mundo exterior. Comprender el funcionamiento del Controlador
de Acceso Directo a Memoria (CDMA) incluido en el simulador MSX88. Configurarlo para la transferencia de datos
memoria-memoria y memoria-perifrico en modo bloque y bajo demanda. Escribir programas en el lenguaje assembly del
simulador MSX88. Ejecutarlos y verificar los resultados, analizando el flujo de informacin entre los distintos
componentes del sistema.
1) Encendido/apagado de las luces (perifrico de salida) mediante la barra de microconmutadores (perifrico de entrada),
ambos comunicados con el microprocesador a travs de los puertos paralelos de la PIO. Implementar un programa en
el lenguaje assembly del simulador MSX88 que configure la PIO para leer el estado de los microconmutadores y
escribirlo en la barra de luces. El programa se debe ejecutar bajo la configuracin P1 C0 del simulador. Los
microconmutadores se manejan con las teclas 0-7.
PA
PB
CA
CB
POLL:
EQU
EQU
EQU
EQU
30H
31H
32H
33H
ORG
MOV
OUT
MOV
OUT
IN
OUT
JMP
END
2000H
AL, 0FFH
CA, AL
AL, 0
CB, AL
AL, PA
PB, AL
POLL
; PA entradas (Microconmutadores)
; PB salidas (Luces)
2) Encendido/apagado sincronizado de las luces. Implementar un contador que incremente la cuenta en uno una vez por
segundo y la visualice a travs de las luces conectadas a uno de los puertos paralelos del simulador. Ejecutar en
configuracin P1 C0.
PIC
TIMER
PIO
N_CLK
EQU
EQU
EQU
EQU
20H
10H
30H
10
IP_CLK
ORG 40
DW RUT_CLK
INICIO
ORG 1000H
DB 0
LAZO:
ORG
CLI
MOV
OUT
MOV
OUT
MOV
OUT
MOV
OUT
OUT
OUT
STI
JMP
2000H
RUT_CLK:
AL, 0FDH
PIC+1, AL
AL, N_CLK
PIC+5, AL
AL, 1
TIMER+1, AL
AL, 0
PIO+3, AL
PIO+1, AL
TIMER, AL
LUCES:
ORG 3000H
INC INICIO
CMP INICIO, 0FFH
JNZ LUCES
MOV INICIO, 0
MOV AL, INICIO
OUT PIO+1, AL
MOV AL, 0
OUT TIMER, AL
MOV AL, 20H
OUT PIC, AL
IRET
END
LAZO
Arquitectura de Computadoras
2015
3) Escribir un programa que encienda una luz a la vez, de las ocho conectadas al puerto paralelo del microprocesador a
travs de la PIO, en el siguiente orden: 0-1-2-3-4-5-6-7-6-5-4-3-2-1-0-1-2-3-4-5-6-7-6-5-4-3-2-1-0-1-... Cada luz debe
estar encendida durante un segundo. Ejecutar en la configuracin P1 C0 del simulador.
Uso de la impresora a travs de la PIO
4) . Escribir un programa que enve datos a la impresora a travs de la PIO. La PIO debe cumplir las funciones de
temporizacin que requiere la impresora para la comunicacin. Ejecutar en configuracin P1 C1 del simulador y
presionar F5 para mostrar la salida en papel. El papel se puede blanquear ingresando el comando BI.
PIO
MSJ
FIN
POLL:
EQU 30H
ORG
DB
DB
DB
1000H
"ARQUITECTURA DE
"COMPUTADORAS"
?
ORG
MOV
OUT
MOV
OUT
IN
AND
OUT
MOV
MOV
IN
AND
JNZ
MOV
OUT
IN
OR
OUT
IN
AND
OUT
INC
DEC
JNZ
INT
END
2000H
AL, 0FDH
PIO+2, AL
AL, 0
PIO+3, AL
AL, PIO
AL, 0FDH
PIO, AL
BX, OFFSET MSJ
CL, OFFSET FIN-OFFSET MSJ
AL, PIO
AL, 1
POLL
AL, [BX]
PIO+1, AL
AL, PIO
AL, 02H
PIO, AL
AL, PIO
AL, 0FDH
PIO, AL
BX
CL
POLL
0
"
; FIN INICIALIZACION
; PULSO 'STROBE'
; FIN PULSO
5) Escribir un programa que solicite el ingreso de cinco caracteres por teclado y los enve de a uno por vez a la impresora
a travs de la PIO a medida que se van ingresando. No es necesario mostrar los caracteres en la pantalla. Ejecutar en
configuracin P1 C1.
PIO
EQU 30H
NUM_CAR
CAR
ORG 1000H
DB 5
DB ?
; SUBRUTINA DE INICIALIZACION
; PIO PARA IMPRESORA
ORG 3000H
INI_IMP: MOV AL, 0FDH
OUT PIO+2, AL
MOV AL, 0
OUT PIO+3, AL
IN AL, PIO
AND AL, 0FDH
OUT PIO, AL
RET
; SUBRUTINA DE GENERACIN
; DE PULSO 'STROBE'
ORG 4000H
PULSO: IN AL, PIO
OR AL, 02H
OUT PIO, AL
IN AL, PIO
AND AL, OFDH
OUT PIO, AL
RET
Arquitectura de Computadoras
2015
; PROGRAMA PRINCIPAL
ORG 2000H
PUSH AX
CALL INI_IMP
POP AX
MOV BX, OFFSET CAR
MOV CL, NUM_CAR
LAZO:
INT 6
POLL:
IN
AL, PIO
AND AL, 1
JNZ POLL
MOV AL, [BX]
OUT PIO+1, AL
PUSH AX
CALL PULSO
POP AX
DEC CL
JNZ LAZO
INT 0
END
6) Escribir un programa que solicite ingresar caracteres por teclado y que recin al presionar la tecla F10 los enve a la
impresora a travs de la PIO. No es necesario mostrar los caracteres en la pantalla. Ejecutar en configuracin P1 C1 del
simulador.
Uso de la impresora a travs del dispositivo de hand-shaking por consulta de estado.
7) Escribir un programa que enve datos a la impresora a travs del HAND-SHAKE. La comunicacin se debe establecer
por consulta de estado (polling). Ejecutar en configuracin P1 C2.
HAND
MSJ
FIN
POLL:
EQU
ORG
DB
DB
DB
40H
1000H
"FACULTAD DE
"INFORMATICA"
?
ORG
IN
AND
OUT
MOV
MOV
IN
AND
JNZ
MOV
OUT
INC
DEC
JNZ
INT
END
2000H
AL, HAND+1
AL, 7FH
HAND+1, AL
BX, OFFSET MSJ
CL, OFFSET FIN-OFFSET MSJ
AL, HAND+1
AL, 1
POLL
AL, [BX]
HAND, AL
BX
CL
POLL
0
"
EQU 20H
EQU 40H
EQU 10
IP_HND
ORG 40
DW RUT_HND
MSJ
FIN
ORG
DB
DB
DB
1000H
"UNIVERSIDAD
"
"NACIONAL DE LA PLATA"
?
Arquitectura de Computadoras
RUT_HND:
2015
ORG 3000H
PUSH AX
MOV AL, [BX]
OUT HAND, AL
INC BX
DEC CL
MOV AL, 20H
OUT PIC, AL
POP AX
IRET
LAZO:
ORG
MOV
MOV
CLI
MOV
OUT
MOV
OUT
MOV
OUT
STI
CMP
JNZ
IN
AND
OUT
INT
END
2000H
BX, OFFSET MSJ
CL, OFFSET FIN-OFFSET MSJ
AL, 0FBH
PIC+1, AL
AL, N_HND
PIC+6, AL
AL, 80H
HAND+1, AL
CL, 0
LAZO
AL, HAND+1
AL, 7FH
HAND+1, AL
0
9) Escribir un programa que solicite el ingreso de cinco caracteres por teclado y los almacene en memoria. Una vez
ingresados, que los enve a la impresora a travs del HAND-SHAKE, en primer lugar tal cual fueron ingresados y a
continuacin en sentido inverso. Implementar dos versiones, una por consulta de estado y otra por interrupcin, en lo
que se refiere a la comunicacin entre el HAND-SHAKE y el microprocesador.
10) DMA. Transferencia de datos memoria-memoria.
Escribir un programa que copie una cadena de caracteres almacenada a partir de la direccin 1000H en otra parte de la
memoria, utilizando el CDMA en modo de transferencia por bloque. La cadena original se debe mostrar en la pantalla de
comandos antes de la transferencia. Una vez finalizada, se debe visualizar en la pantalla la cadena copiada para verificar el
resultado de la operacin. Ejecutar el programa en la configuracin P1 C3.
PIC
DMA
N_DMA
EQU 20H
EQU 50H
EQU 20
ORG 80
IP_DMA
DW
RUT_DMA
FIN
NCHAR
ORG
DB
DB
DB
DB
1000H
"FACULTAD DE"
" INFORMATICA"
?
?
COPIA
ORG 1500H
DB ?
MSJ
ORG
CLI
MOV
OUT
MOV
MSJ
OUT
MOV
OUT
MOV
OUT
MOV
OUT
MOV
OUT
MOV
OUT
MOV
OUT
MOV
OUT
STI
MOV
MOV
MOV
INT
MOV
OUT
INT
END
2000H
AL, N_DMA
PIC+7, AL
AX, OFFSET
DMA, AL
; dir comienzo ..
AL, AH
; del bloque ..
DMA+1, AL
; a transferir
AX, OFFSET FIN-OFFSET MSJ
DMA+2, AL
; cantidad ..
AL, AH
; a ..
DMA+3, AL
; transferir
AX, OFFSET COPIA
DMA+4, AL
; dir destino ..
AL, AH
; del ..
DMA+5, AL
; bloque
AL, 0AH
; CDMA en transfer..
DMA+6, AL
; mem-mem por bloque
AL, 0F7H
PIC+1, AL
; habilita INT3
BX, OFFSET MSJ
AL, OFFSET FIN-OFFSET MSJ
NCHAR, AL
7
; mensaje original
AL, 7H
DMA+7, AL
; arranque Transfer
0
Cuestionario:
a) Analizar minuciosamente cada lnea del programa anterior.
b) Explicar qu funcin cumple cada registro del CDMA e indicar su direccin.
Arquitectura de Computadoras
2015
c)
d)
e)
f)
EQU
EQU
EQU
EQU
20H
40H
50H
20
ORG
CLI
IP_DMA
MOV
OUT
ORG 1000H
MOV
MSJ
DB " INFORMATICA"
OUT
FIN
DB ?
MOV
FLAG
DB 0
OUT
MOV
; rutina atencin interrupcin del CDMA
OUT
ORG 3000H
MOV
RUT_DMA: MOV AL, 0
;inhabilita..
OUT
OUT HAND+1, AL ;interrup de HAND MOV
MOV FLAG, 1
OUT
MOV AL, 0FFH
;inhabilita..
MOV
OUT PIC+1, AL ;interrup de PIC OUT
MOV AL, 20H
OUT
OUT PIC, AL
; EOI
MOV
IRET
OUT
STI
ORG 80
DW RUT_DMA
LAZO:
2000H
AL, N_DMA
PIC+7, AL
; reg INT3 de PIC
AX, OFFSET MSJ
DMA, AL
; dir comienzo ..
AL, AH
; del bloque ..
DMA+1, AL
; a transferir
AX, OFFSET FIN-OFFSET MSJ
DMA+2, AL
; cantidad ..
AL, AH
; a ..
DMA+3, AL
; transferir
AL, 4
; inicializacin ..
DMA+6, AL
; de control DMA
AL, 0F7H
PIC+1, AL
; habilita INT3
DMA+7, AL
; arranque Transfer
AL, 80H
HAND+1, AL ; interrup de HAND
CMP FLAG, 1
JNZ LAZO
INT 0
END
Cuestionario:
a) Analizar minuciosamente cada lnea del programa anterior.
b) Qu debe suceder para que el HAND-SHAKE emita una interrupcin al CDMA?
c) Cmo demanda el perifrico, en este caso el HAND-SHAKE, la transferencia de datos desde memoria? A travs
de qu lneas se comunican con el CDMA ante cada pedido?
d) Explicar detalladamente cada paso de la operacin de transferencia de un byte desde una celda de memoria hacia
el HAND-SHAKE y la impresora.
e) Qu evento hace que el CDMA emita una interrupcin al PIC?
f) Cundo finaliza la ejecucin del LAZO?