You are on page 1of 5

Arquitectura de Computadoras

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

"

; INICIALIZACION PIO PARA IMPRESORA

; 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

"

Uso de la impresora a travs del dispositivo de hand-shaking por interrupcin.


8) Escribir un programa que enve datos a la impresora a travs del HAND-SHAKE. La comunicacin se debe establecer
por interrupciones emitidas desde el HAND-SHAKE cada vez que la impresora se desocupa. Ejecutar en configuracin
P1 C2.
PIC
HAND
N_HND

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

; rutina aten interrupcin del CDMA


ORG 3000H
RUT_DMA: MOV AL, 0FFH
;inhabilita..
OUT PIC+1, AL ;interrupc de PIC
MOV BX, OFFSET COPIA
MOV AL, NCHAR
INT 7
MOV AL, 20H
OUT PIC, AL
; EOI
IRET

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

; reg INT3 de PIC

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)

Describir el significado de los bits del registro CTRL.


Qu diferencia hay entre transferencia de datos por bloque y bajo demanda?
Cmo se le indica al CDMA desde el programa que debe arrancar la transferencia de datos?
Qu le indica el CDMA a la CPU a travs de la lnea hrq? Qu significa la respuesta que le enva la CPU a
travs de la lnea hlda?
g) Explicar detalladamente cada paso de la operacin de transferencia de un byte desde una celda a otra de la
memoria. Verificar que en esta operacin intervienen el bus de direcciones, el bus de datos y las lneas mrd y mwr.
h) Qu sucede con los registros RF, CONT y RD del CDMA despus de transferido un byte?
i) Qu evento hace que el CDMA emita una interrupcin y a travs de qu lnea de control lo hace?
j) Cmo se configura el PIC para atender la interrupcin del CDMA?
k) Qu hace la rutina de interrupcin del CDMA del programa anterior?
11) DMA. Transferencia de datos memoria-perifrico.
Escribir un programa que transfiera datos desde la memoria hacia la impresora sin intervencin de la CPU, utilizando el
CDMA en modo de transferencia bajo demanda.
PIC
HAND
DMA
N_DMA

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?

You might also like