











Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
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
1 / 19
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!












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
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
- Traccia 2: Divisione e Indirizzamento Diretto
- Traccia 4: Somma Algebrica: ADD / SUB ( basata su una traccia vecchia)