vuoi
o PayPal
tutte le volte che vuoi
Eckert
Registri di stato ALU:
- Z: indica se l’ultima operazione effettuata dalla ALU ha restituito 0
- N: contiene bit di segno dell’ultima operazione effettuata dalla ALU
- V: indica se l’operazione effettuata dalla Alu ha dato overflow
- C: contiene il bit di riporto dell’ultima somma effettuata dalla ALU
Schema generale:
Comandi:
- Lx (Load, x = P,M,D,A,B,I)
Il registro riceve un dato dal bus
- Ex (Export, x = P,D,A,U,I)
Il registro copia il suo contenuto sul bus
- IP (Increment PC)
Incrementa il program counter per permettere di effettuare l'operazione successiva
- A / S (Add / subtract)
- R / W (Read / Write)
Codici operativi:
Mnemonico Codice Operativo Azione Mnemonico Micro-istruzioni
LDA 1 A (Mem) 1. MAR IR EI,LM
Load Accumulator 2. MDR M(MAR) R
3. A MDR ED,LA
STA 2 (Mem) A 1. MAR IR EI,LM
Store Accumulator 2.MDR A EA,LD
3. M(MAR) MDR W
ADD 3 A A+B 1. A ALU(Add) A,EU,LA
SUB 4 A A-B 1. A ALU(Sub) S,EU,LA
MBA 5 B A 1. B A EA,LB
JMP 6 PC Mem 1. PC IR EI,LP
JN 7 PC Mem 1. PC IR if NF is set NF : EI,LP
If NF flag is set
HLT ago-15 Stop Clock
“Fetch” 1. MAR PC EP,LM
IR Next 2. MDR M(MAR) R
Instruction 3. IR MDR ED,LI,IP
Esercizi(Eckert(–(Spiegati
Considerazioni(generali:
!"(se"non"speci+icato)"gli"indirizzi"partono"dallo"“00”
!"(se"non"speci+icato)"le"variabili"del"programma"vanno"messe"in"fondo"(le"variabili"vanno"
messe"in"“FF”"poi"in"“FE”"etc...)
ES:(1)(Somma(fra(numeri(
Indirizzi Assembly Esadecimale Descrizione
00 LDA FF 1FF Metto il contenuto di FF in A
01 MBA 500 Metto il contenuto di A in B
02 LDA FE 1FE Metto il contenuto di FE in A
03 ADD 300 Sommo A + B
04 STA FD 2FD Metto il risultato di A+B in FD
05 MLT 800 Fine
…
FD X + Y 013 Risultato
FE Y 00F
FF X 004
ES:(2)(Valore(assoluto(–(Esteso
Indirizzi Assembly Esadecimale Descrizione
00 LDA FF 1FF Carico FF in A
01 MBA 500 Metto A in B
02 LDA FD 1FD Carico FD in A
03 ADD 300 Sommo e metto il risultato in A
04 JN 07 707 Se A è negativo, salta a 07
05 STA FE 2FE Carico A (somma) in FE
06 HLT 800 Fine
07 LDA FD 1F0 Carico FD in A
08 SUB 400 Sottraggo A - B e metto in A
09 JMP 05 605 Salto a 05
…
FD 0
FE |X|
FF X
ES:(2)(Valore(assoluto(–(Ottimizzato
Indirizzi Assembly Esadecimale Descrizione
00 LDA FF 1FF Carico FF in A
01 JN 04 707 Se A è negativo, salta a 07
02 STA FE 2FE Carico A (somma) in FE
03 HLT 800 Fine
04 MBA 500 Metto A in B
05 SUB 1F0 Sottraggo A - B = 0 → metto in A
06 SUB 400 Sottraggo A - B e metto in A
07 JMP 02 605 Salto a 05
…
FE |X|
FF X
ES:$3)$Somma$fra$due$numeri$–$Eckert$a$8$bit
mem(Abs)(=(mem[Abs]+k
Posizione Micro-istruzioni Mnemonico Descrizione
0 EP, LM Esp PC → Imp MAR
1 R, P Fetch R = read → P = passa all'istruzione successiva
2 ED, LI, MAP Esp MDR → Imp IR (MAP = Va a finire in X)
3
…
X EP, LM Esp PC → Imp MAR
LDB Immediato
X+1 R, P R = leggo il dato
B←k
X+2 ED, LB Esp MDR → Imp Registro B (mando il dato in B)
X+3 EP, LM Esp PC → Imp MAR
X+4 R, P R = leggo il dato
LDA Assoluto
X+5 ED, LM Esp PC → Imp MAR
A←mem[Abs]
X+6 R R = leggo il dato
X+7 ED, LA Esp MDR → Imp Registro A (mando il dato in A)
X+8 A, EU, LA ADD A = somma → Esp ALU → Imp Registro A
X+9 EA, LD Esp A → Imp MDR
STA Immediato
mem(Abs) ← A
X+10 W, 0 W = scrive il dato nella RAM → 0 = Termina