Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Appunti Esercitazione Assembly, Appunti di Reti Logiche

Appunti presi alle esercitazioni di Assembly, utili per l'esame di Reti Logiche e Calcolatori. Sono racchiusi esercitazioni fatte a lezione dal prof ed eventuale teoria utile.

Tipologia: Appunti

2020/2021

In vendita dal 21/09/2024

daniele-pelaggi
daniele-pelaggi 🇮🇹

1 documento

1 / 19

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Assembly Appunti
- Istruzione salto
In assembly i salti sono implementati da un registro ”EFLAGS” che lavora sui singoli
bit, quindi i bit di questo registro contiene delle informazioni sui dati che la macchina
gestisce.
Ogni volta che la ALU esegue una valutazione, vengono valorizzati i bit del registro
citato precedentemente, vediamone 4 tipi:
Interrogando questi bit possiamo capire cosa è successo all'interno dell'operazione.
Abbiamo la possibilità di definire diversi istruzioni di salto condizionato:
Abbiamo la possibilità di utilizzare anche il salto non condizionato, ovvero possiamo
raggiungere un qualunque punto del codice dove sarà presente etichetta senza
condizioni/confronti attraverso la seguente sintassi:
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13

Anteprima parziale del testo

Scarica Appunti Esercitazione Assembly e più Appunti in PDF di Reti Logiche solo su Docsity!

Assembly Appunti

- Istruzione salto

In assembly i salti sono implementati da un registro ”EFLAGS” che lavora sui singoli bit, quindi i bit di questo registro contiene delle informazioni sui dati che la macchina gestisce. Ogni volta che la “ ALU ” esegue una valutazione, vengono valorizzati i bit del registro citato precedentemente, vediamone 4 tipi: Interrogando questi bit possiamo capire cosa è successo all'interno dell'operazione. Abbiamo la possibilità di definire diversi istruzioni di salto condizionato: Abbiamo la possibilità di utilizzare anche il salto non condizionato, ovvero possiamo raggiungere un qualunque punto del codice dove sarà presente “ etichetta ” senza condizioni/confronti attraverso la seguente sintassi:

- Esempio di un codice con salto Supponiamo di voler implementare in assembly una istruzione di questo tipo:

- Esempio di un codice con salto considerato il segno Supponiamo di lavorare con numeri a 4 bit e di voler verificare: Ora che abbiamo visto che guardare solo il SingFlag SF non è sufficente, vediamo un esempio: → Quindi la proprietà di >= è verificata. Inoltre: Abbiamo a disposizione " JG " che verifica “ > ”, analogamente per JL per “ < ”. Ho la possibilità di verificare con " JE " che gli elementi siano uguali “ = ” con ZF = 1.

- Informazioni Utili Affinchè le istruzioni di salto vengano utilizzate è necessario che venga utilizzata la ALU (attraverso il comando SUB ) che permette di settare i bit opportunamente nel registro dei FLAG , vediamo un esempio schematico: La SUB ha il problema che distrugge il primo parametro passato, allora la macchina ci mette a disposizione la CMP ( compire ) che esegue la differenza non salvando il risultato ma salvando i parametri passati però vengono opportunamente salvati i bit utili per i FLAG , rendendo funzionanti le operazioni di confronto, perciò utilizzeremo CMP spesso nei nostri codici.

- Istruzioni Logiche Il repertorio di Assembly contiene istruzioni logiche come AND, OR e XOR ; codeste istruzioni logiche eseguono operazioni bit a bit. Essi vengono classificati come operatori binari. Lo XOR è molto importante perchè, come possiamo vedere dalla sua tabella di verità, varrà 1 solo quando i due termini sono diversi. Abbiamo a disposizione anche operatori logici unari :

- Gli SHIFT Gli SHIFT sono altri operatori importanti che permettono di effettuare delle operazioni, distinti in Shift Logico , Shift Aritmetico , Shift Rotazione. NOTA BENE: Registro CL → 8 bit meno significativo del registro ECX TRIKKETTINO: In ogni SHIFT il bit sul quale operiamo (come nella rotazione il bit prelevato) andrà a salvarsi nel CarryFlag , utile per svolgere operazioni.

- Esempio 2 salto + maschera

Moltiplicazione e Divisione

Abbiamo a disposizione la moltiplicazione e la divisione, con e senza segno.

- Istruzione Scambio e LEA Un’altra istruzione molto importante è: Vediamo un rapido esempio: Vediamo adesso l’espressione LEA. Vediamo un rapido esempio:

- Esempio Scambio

ESERCIZI

- Traccia 1: Esempio

- Traccia 2: Divisione e Indirizzamento Diretto

- Traccia 4: Somma Algebrica: ADD / SUB ( basata su una traccia vecchia)