1 / 7

Istruzioni Riferimento alla memoria

Mnemonico LD XXX ST XXX ADD XXX AND XXX JMP XXX SKZ XXX SKP XXX. 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 . Codice 0XXX 1XXX 2XXX 3XXX 4XXX 5XXX 6XXX.

cybil
Download Presentation

Istruzioni Riferimento alla memoria

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Mnemonico LD XXX ST XXX ADD XXX AND XXX JMP XXX SKZ XXX SKP XXX 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 Codice 0XXX 1XXX 2XXX 3XXX 4XXX 5XXX 6XXX Istruzioni Riferimento alla memoria

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

  3. ADD bus (12 bit) LD Mem Addr Reg (MAR) (12 bit) INC CLR LD DATA bus (16 bit) INC PC (12 bit) CLR LD INC Data Reg (MBR) (16 bit) CLR LD INC IR(16 bit) CLR LD INC AC CLR BUS E DATA FLOW Memoria CS R/W 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 CMP AND TEMP CMP 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. AL AH BL BH AH AL + + BH BL = CL CH 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 B A XXX+1 XXX YYY+1 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

More Related