• Non ci sono risultati.

Esercizio Esame

N/A
N/A
Protected

Academic year: 2022

Condividi "Esercizio Esame"

Copied!
7
0
0

Testo completo

(1)

Esercizio Esame

Un processore PD32 è interfacciato a due periferiche di input A e B, e ad un DMAC il quale puo’ gestire trasferimento di dati da B verso la memoria. A e B lavorano a 8 bit. Il processore acquisisce 2048 dati da B tramite il DMAC il quale li memorizza in un buffer di 2048 byte ad indirizzo ABCDh. Al termine

dell’acquisizione, il DMAC avverte il processore tramite una interruzione, il cui servizio e’ il seguente: il processore acquisisce 2048 dati da A tramite la tecnica delle interruzioni e verifica, per ciascuno di essi, l’uguaglianza con il

corrispondente dato precedentemente acquisito da B. Se almeno uno dei dati non soddisfa l’uguaglianza, il processore deve porre ad 1 il valore di un byte ad

indirizzo 0BBBh.

Progettare l’interfaccia tra il DMAC ed il PD32. Progettare inoltre il software per

attivare DMAC ed A, e per gestirne le interruzioni. Si ipotizzi che un buffer di 6

byte sia disponibile ad indirizzo 000Ah per la programmazione e la gestione

dell’input dalla periferica A e che nessun altro buffer di memoria possa essere

utilizzato. Si ipotizzi inoltre che i servizi di interruzione di DMAC ed A siano non

interrompibili.

(2)

Logica dell’interfaccia del DMAC per le interruzioni

I/O AB I/O DB I/O CB

Decoder

SELECT

START

STARTD

O.C.

IRQ

SCO DMAC R Q

S Q STATUS

STARTDEV

COMPLETE CLEAR

IVN

CPU

IACKIN

IACKOUT

IRQ

(3)

PD32 DB CB

I/ O D

B I/ O C B

I/O A B

MEMORIA

SELECT I/O WR

CAR INC

WC I/O WR

SCO DMAC

DECR TC

MBR F/F Q

O.C.

MBR

MBG

SCO DEV_B

DATO PRONTO NEXT DATO

REG REG

MRD

8 bit

8 bit

STATUS F/F

AB

IR Q

LD

(4)

I/O AB I/O DB I/O CB

Dec

SELECT

START

IRQ

SCO R Q

S Q STATUS

STARTDEV

COMPLETE

CLEAR

IVN

CPU

IACKIN

IACKOUT

IRQ

IORD

REG OR

Interfaccia DEV_A

SCA

(5)

org 400h ;INIZIO PROGRAMMA

dev_a equ 0h ; indirizzo device A

dev_b equ 1h ; indirizzo device B

dmac equ 2h ; indirizzo dmac

CAR equ 3h ; indirizzo dmac

WC equ 4h ; indirizzo dmac

risultato equ 0BBBh ; indirizzo byte riservato all’uscita

buffer_lavoro equ 000Ah ; indirizzo 6 byte riservato alla logica del programma code

jsr init

seti ; abilita PD32 ad accettare interruzioni main: ;...

jmp main init:

outl #2048, WC outl #ABCDh, CAR start dmac

ret

(6)

;DRIVER DMAC

driver 0, 600h

push r0 ; salva contenuto dei registri sporcati nella routine clear dmac ;elimino la causa dell’interruzione sul dmac

movl #ABCDh, buffer_lavoro movl #buffer_lavoro, r0

addl #4, r0 movw #0, (r0) start dev_a pop r0 rti

(7)

;DRIVER dev_A driver 1, 700h

push r0, r1, r2, r3 ; salva contenuto dei registri sporcati nella routine inb dev_A, r0 ;acquisisco il dato dalla periferica dev_A

movl buffer_lavoro, r1 ;acquisisco l’indirizzo corrente per il controllo cmpb (r1), ro ;r0- valore corrispondente in memoria

JNZ set_flag aggiorna:

addl #1, r1

movl r1, buffer_lavoro ;aggiorno l’indirizzo che punterà al prossimo dato da controllare

movl #buffer_lavoro, r2 addl #4, r2

movw (r2), r3 ;sposto in r3 il valore del contatore addw #1,r3 ;aggiorno il contatore

cmpw #2048, r3

jz interrompi_esecuzione start dev_A

jmp fine set_flag:

movb #1, 0BBBh jmp aggiorna interrompi_esecuzione:

clear dev_A fine:

pop r3, r2, r1, r0 RTI

Riferimenti

Documenti correlati

Molti studi hanno già dimostrato che l’attuale pandemia COVID-19 sia attribuibile al cosiddetto salto di specie o spillover, ossia il passaggio di un virus da una specie

• Ogni ciclo macchina può essere costituito da uno o due cicli di bus ; per esempio la lettura di una parola memorizzata su due byte non allineati sullo stesso indirizzo di

• JMP LABEL(PC) (metti nel PC quanto ottenuto dalla somma del contenuto della locazione il cui indirizzo è dato da LABEL con il valore corrente del PC).. Indirizzamento

In caso di indirizzamento diretto a registro, indiretto a registro, con predecremento e con postincremento indica uno degli otto registri di uso generale R0-R7.. modo d 3 Indica il

Il servizio associato all'interruzione è il seguente: il processore deve controllare che il contenuto di un buffer di 128 byte all'indirizzo BBBBh sia uguale (byte a byte) al

– Il buffer è svuotato dalla subroutine di livello applicazione per la lettura, che ritorna il messaggio in cima alla coda (se. presente) e lo rimuove

La sentenza di merito, invero, era stata emessa prima dell’entrata in vigore della novella, sicché il contrasto valutativo con il giudice di primo grado non è pieno;

Dopo essere stato a lungo nella posizione A, l’interruttore T viene spostato in