La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Istruzioni Riferimento alla memoria

Presentazioni simili


Presentazione sul tema: "Istruzioni Riferimento alla memoria"— Transcript della presentazione:

1 Istruzioni Riferimento alla memoria
Codice 0XXX 1XXX 2XXX 3XXX 4XXX 5XXX 6XXX Descrizione AC M[XXX] M[XXX]  AC AC AC+ M[XXX] AC AC AND M[XXX] PC  XXX If M[XXX] =0 then PC PC+1 If M[XXX] >0 then PC PC+1 Mnemonico LD XXX ST XXX ADD XXX AND XXX JMP XXX SKZ XXX SKP XXX

2 Istruzioni Riferimento ai registri
Codice 8xxx 9xxx Axxx Bxxx Cxxx Descrizione AC AC’ AC 0 ACAC+1 V0 If V=1 then PCPC+1 Mnemonico CMP CLA INC CLV SKV dove V è un flag che vale 1 se vi è un overflow in ADD

3 BUS E DATA FLOW ALU ADD bus (12 bit) Memoria LD
INC CLR LD AC IR(16 bit) Data Reg (MBR) (16 bit) PC (12 bit) Mem Addr Reg (MAR) (12 bit) ADD bus (12 bit) DATA bus (16 bit) Memoria CS R/W BUS E DATA FLOW ALU

4 Realizzazione di macro istruzioni per una AC based CPU
Utilizzando una CPU con un limitato set di istruzioni è possibile realizzare delle istruzioni più complesse scomponendole in istruzioni elementari eseguibili dalla CPU. Es.1: Realizzare una macro che esegue il salto condizionale a una certa locazione di memoria (XXX) se un dato contenuto in una locazione (YYY) è diverso da zero. Il mnemonico della macro è : JNZ XXX,YYY. La CPU esegue le istruzioni elementari di salto (JMP XXX) e di skip condizionale (SKZ YYY) JMPZ XXX,YYY: SKZ YYY JMP XXX Se YYY è diverso da zero eseguo l’operazione di JMP Se YYY è zero non eseguo l’operazione di JMP

5 Es.2: Realizzare una macro che esegue l’OR bit a bit tra una locazione di memoria XXX e il contenuto dell’accumulatore. Il mnemonico della macro è : OR XXX. La CPU esegue le istruzioni elementari di complemento dell’accumulatore(CMP) e di AND bit a bit tra l’accumulatore e una locazione di memoria (AND XXX). Utilizzando De Morgan l’operazione di OR può essere scritta come: A+B = A·B OR XXX: CMP ST TEMP LD XXX AND TEMP Complemento AC Memorizzo AC Carico XXX sull’accumulatore Complemento il valore che era contenuto in XXX Eseguo l’AND tra AC e XXX Complemento il risultato dell’ operazione di AND N.B.: La realizzazione della macro utilizza una locazione di memoria aggiuntiva (TEMP), che dopo l’esecuzione della macro contiene un valore diverso dall’inizio. Si deve tenere conto di tale effetto collaterale (Side Effect) evitando di utilizzare la locazione TEMP per contenere dei dati!

6 Es.3: La CPU esegue le addizioni tra operandi a 16 bit utilizzando l’operazione ADD(XXX). Tale operazione esegue: AC AC + M[XXX] Per eseguire somme tra operandi con lunghezza multipla di 16 bit si può utilizzare una istruzione di somma con riporto (ADC XXX) che esegue: AC AC + M[XXX] +V Dove V è il flag di carry. Definiamo due operandi A e B a 32 bits memorizzate nelle locazioni XXX e XXX+1 e YYY e YYY+1. carry A AL AH BL BH B AL AH BL BH CL CH = XXX XXX YYY YYY La somma a 32 bits può essere eseguita nel seguente modo: Carico i 16 bits meno significativi di A (AL) LD XXX ADD YYY LD (XXX+1) ADC (YYY+1) Eseguo la somma tra AL e BL Carico i 16 bits più significativi di A (AH) Eseguo la somma tra AH e BH tenendo conto del riporto

7 Es.3: Nel caso la CPU non abbia a disposizione un’istruzione di ADC(XXX) essa si può realizzare con una macro: ADC XXX: SKV JMP L1 INC L1:ADD XXX Controlla il flag di carry: Se è 0 esegui AC AC+M[XXX] Se il flag di carry è 1 esegui AC AC+1


Scaricare ppt "Istruzioni Riferimento alla memoria"

Presentazioni simili


Annunci Google