Istruzioni per la Manipolazione dei Bit

Slides:



Advertisements
Presentazioni simili
Introduzione al linguaggio C++
Advertisements

Informatica Generale Susanna Pelagatti
Fondamenti di Informatica
Rappresentazione di Numeri Reali
Introduzione al linguaggio C
Programmazione assembler
in un programma Assembler
Procedure In assembler.
Anno accademico Gli operatori e le espressioni in C.
Il linguaggio C Gli operatori e le espressioni C Language
Indirizzi delle variabili A ogni variabile sono associati tre concetti fondamentali: il valore memorizzato; il tipo dati di appartenenza; lindirizzo. Il.
Architetture dei Calcolatori (Lettere j-z) Il Processore (2)
Virtual CPU - Eniac Dr.ssa Veronica Marchetti
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 21 Marzo 2013.
1 Corso di Informatica (Programmazione) Lezione 4 (24 ottobre 2008) Architettura del calcolatore: la macchina di Von Neumann.
Corso di Informatica (Programmazione)
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Assegnamento di valore a una variabile Anno Accademico 2009/2010.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
1 Corso di Informatica (Programmazione) Lezione 10 (12 novembre 2008) Programmazione in Java: espressioni booleane e controllo del flusso (selezione)
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Rappresentazione dellinformazione su calcolatore Anno Accademico 2009/2010.
Corso di Informatica per Giurisprudenza
Corso di Informatica A.A Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Adriana Pietramala Dott.ssa.
Procedure e funzioni nei linguaggi di alto livello Lab Programmazione - turno /2006.
I numeri by iprof.
Algebra di Boole L’algebra di Boole è un formalismo che opera su variabili (dette variabili booleane o variabili logiche o asserzioni) che possono assumere.
Codifica binaria Rappresentazione di numeri
I File.
Usare rappresentazioni di lunghezza fissa porta ad avere valori non rappresentabili: Overflow indica un errore nella rappresentazione del risultato in.
Algoritmi e Programmazione Avanzata
Istruzioni per il Controllo del Processore
Programmazione Avanzata
1 © 1999 Roberto Bisiani Rappresentazione delle informazioni n Occorre un codice n Legato alla tecnologia usata Robustezza Semplicita Economicita.
RAPPRESENTAZIONE DELL’INFORMAZIONE
ALGEBRA.
Scheda Ente Ente Privato Ente Pubblico. 2ROL - Richieste On Line.
Esercizio 10.* Un cassiere vuole dare un resto di n centesimi di euro usando il minimo numero di monete. a) Descrivere un algoritmo goloso per fare ciò.
Introduzione al linguaggio assembly del microprocessore a parte
Introduzione al linguaggio assemby del microprocessore a parte
I vettore interruzioni
RISOLVERE LE EQUAZIONI
Operatori e Gestione del flusso di esecuzione
Introduzione al linguaggio assembly del microprocessore a parte
14 marzo 2002 Avvisi:.
1 Numeri interi e numeri in virgola mobile F. Bombi 2 6 novembre 2003.
Unità centrale di processo
Pippo.

1 M. Rebaudengo, M. Sonza Reorda Politecnico di Torino Dip. di Automatica e Informatica M. Rebaudengo - M. Sonza Reorda L’Assembler 8086 Istruzioni per.
Istruzioni Riferimento alla memoria
Architettura di una CPU
Il µP Intel 8086 Marco Lettieri 3 C Informatica A.S. 2009/2010 All’attenzione del Professor Claudio Gatto.
1 Corso di Informatica (Programmazione) Lezione 8 (7 novembre 2008) Programmazione in Java: operatori aritmetici, operatori di assegnamento e cast.
Architettura IA - 16 M. Mezzalama - M. Rebaudengo - M. Sonza Reorda
1 M. Rebaudengo, M. Sonza Reorda Politecnico di Torino Dip. di Automatica e Informatica M. Rebaudengo - M. Sonza Reorda L’Assembler 8086 Procedure e Macro.
1 M. Rebaudengo, M. Sonza Reorda Politecnico di Torino Dip. di Automatica e Informatica M. Rebaudengo - M. Sonza Reorda L’Assembler 8086 Istruzioni per.
1 M. Rebaudengo, M. Sonza Reorda Politecnico di Torino Dip. di Automatica e Informatica M. Rebaudengo - M. Sonza Reorda L’Assembler 8086 Istruzioni per.
1 Fabio Scotti – Università degli Studi di Milano Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( )
Architettura di un calcolatore e linguaggio macchina.
SPIM Esercizi. Esercizio 1 – il comando ‘li’ Il codice deve eseguire una singola operazione: mettere il valore immediato 1023 nel registro s3.
Rappresentazione dell’informazione
Rappresentazioni a lunghezza fissa: problemi
Fondamenti di Informatica1 Linguaggi Diversi tipi di linguaggi: –Imperativi –Funzionali –Dichiarativi Tutti basati sulla traduzione nell'unico linguaggio.
Rappresentazione dell'informazione
Rappresentazione dell'informazione 1 Se ho una rappresentazione in virgola fissa (es. su segno e 8 cifre con 3 cifre alla destra della virgola) rappresento.
Conversione binario-ottale/esadecimale
Architettura IA - 16 M. Mezzalama - M. Rebaudengo - M. Sonza Reorda
1 M. Rebaudengo, M. Sonza Reorda Politecnico di Torino Dip. di Automatica e Informatica M. Rebaudengo - M. Sonza Reorda L’Assembler 8086 Istruzioni per.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Numeri in virgola Marco D. Santambrogio – Ver. aggiornata al 24 Agosto 2015.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Numeri con segno ed in virgola Marco D. Santambrogio – Ver. aggiornata al 20 Marzo.
Vari e semplici programmi.
Transcript della presentazione:

Istruzioni per la Manipolazione dei Bit L’Assembler 8086 Istruzioni per la Manipolazione dei Bit M. Rebaudengo - M. Sonza Reorda Politecnico di Torino Dip. di Automatica e Informatica

Istruzioni per la manipolazione dei bit Le istruzioni per la manipolazione dei bit si suddividono in: istruzioni logiche, che permettono di modificare o controllare uno o più bit; istruzioni di scorrimento, che permettono di cambiare la posizione dei bit.

Istruzioni logiche Le istruzioni per la manipolazione dei bit permettono di mascherare o forzare i singoli bit di una parola. Esempio Per forzare a 1 il quarto bit di AX senza modificare gli altri bit: OR AX, 1000b Per saltare quando il settimo bit di TAB vale 0: TEST TAB, 1000000b JZ TUTTO_ZERO

Istruzione AND Formato AND dest, sorg Funzionamento L’istruzione AND esegue l’operazione logica AND bit a bit tra il contenuto dell’operando dest ed il contenuto dell’operando sorg. Il risultato dell’operazione è copiato in dest. L’operando dest può essere un registro od una locazione di memoria. L’operando sorg può essere un registro, una locazione di memoria oppure un valore immediato. L’operando sorg è detto maschera.

Conversione da codice ASCII a numero binario .MODEL small .STACK .DATA ASCII DB ? NUM DB ? ... .CODE MOV AL, ASCII AND AL, 0FH ; mascheramento dei ; 4 bit alti MOV NUM, AL

L’istruzione OR Formato OR dest, sorg Funzionamento L’istruzione OR esegue l’operazione logica OR bit a bit tra il contenuto dell’operando dest ed il contenuto dell’operando sorg. Il risultato dell’operazione è copiato in dest. L’operando dest può essere un registro od una locazione di memoria. L’operando sorg può essere un registro, una locazione di memoria oppure un valore immediato. L’operando sorg è detto maschera.

Conversione da numero binario a codice ASCII .MODEL small .STACK .DATA ASCII DB ? NUM DB ? ... .CODE MOV AL, NUM OR AL, 30H ; mascheramento dei ; 4 bit alti MOV ASCII, AL

L’istruzione XOR Formato XOR dest, sorg Funzionamento L’istruzione XOR esegue l’operazione logica EXOR bit a bit tra il contenuto dell’operando dest ed il contenuto dell’operando sorg. Il risultato dell’operazione è copiato in dest. L’operando dest può essere un registro od una locazione di memoria. L’operando sorg può essere un registro, una locazione di memoria oppure un valore immediato. L’operando sorg è detto maschera.

L’istruzione NOT Formato NOT operando Funzionamento L’istruzione NOT esegue l’operazione logica di complementazione bit a bit del contenuto dell’operando. L’operando può essere un registro od una locazione di memoria.

L’istruzione TEST Formato: TEST dest, sorg Funzionamento: L’istruzione TEST esegue l’operazione logica AND bit a bit tra il contenuto dell’operando dest ed il contenuto dell’operando sorg, senza modificare il contenuto degli operandi. L’istruzione aggiorna coerentemente il flag ZF. L’operando dest può essere un registro od una locazione di memoria. L’operando sorg può essere un registro, una locazione di memoria oppure un valore immediato. L’operando sorg è detto maschera.

Testa o Croce ? .MODEL small .STACK .DATA TESTA DB "TESTA",0Dh,0Ah,"$" CROCE DB "CROCE",0DH,0AH,"$" .CODE ... MOV AH, 2CH INT 21H ; in DX il timer di sistema TEST DH, 1 ; bit 0 = 0 ? JNZ lab_t ; No: va a lab_t LEA DX, CROCE ; Sì: in DX l’offset di CODA JMP video lab_t: LEA DX, TESTA ; in DX l’offset di TESTA video: MOV AH, 09H INT 21H ; visualizza su video

Istruzioni di scorrimento Le istruzioni di scorrimento permettono di modificare la posizione dei bit all’interno di una parola, spostandoli verso sinistra o verso destra di un numero definito di posizioni. Le istruzioni di scorrimento si dividono in due gruppi: istruzioni di shift, in cui l’ultimo bit nella direzione dello scorrimento è posto a 0 o ad un valore uguale a quello del bit di segno; istruzioni di rotazione, in cui l’ultimo bit nella direzione della rotazione viene copiato al posto del primo bit.

Istruzioni di scorrimento (segue) Il formato delle istruzioni di scorrimento è il seguente: OPCODE operando, contatore L’operando può essere o un registro oppure una locazione di memoria; il contatore può essere o il valore immediato 1 oppure il registro CL. A partire dall’80186 è possibile utilizzare come contatore qualunque valore immediato.

Le istruzioni SHL e SHR Formato: SHL operando, contatore SHR operando, contatore Funzionamento: L’istruzione SHL esegue lo scorrimento a sinistra del contenuto dell’operando di un numero di posizioni pari al valore di contatore. L’istruzione SHR esegue lo scorrimento a destra del contenuto dell’operando di un numero di posizioni pari al valore di contatore. L’ultimo bit in uscita viene copiato nel flag CF; tutte le posizioni vuote vengono caricate con bit di valore 0.

CF operando SHL operando CF SHR

Le istruzioni SHR e SHL (segue) L’istruzione SHR equivale ad una divisione per 2n. L’istruzione SHL equivale ad una moltiplicazione per 2n.

Le istruzioni SAL e SAR Formato SAL operando, contatore SAR operando, contatore Funzionamento L’istruzione SAL esegue lo scorrimento a sinistra del contenuto dell’operando di un numero di posizioni pari al valore di contatore. I bit vuoti a destra sono riempiti di bit a 0. L’istruzione SAR esegue lo scorrimento a destra del contenuto dell’operando di un numero di posizioni pari al valore di contatore. I bit vuoti a sinistra sono riempiti di bit pari al valore del bit più significativo.

Le istruzioni SAL e SAR (segue) L’istruzione SAL permette di eseguire l’operazione di moltiplicazione di un numero intero con segno per una potenza di 2. L’istruzione SAL è del tutto equivalente all’istruzione SHL. L’istruzione SAR permette di eseguire l’operazione di divisione di un numero intero con segno per una potenza di 2. Per eseguire correttamente l’operazione di divisione occorre eseguire l’estensione del segno verso il bit più significativo. Per entrambe le istruzioni, l’ultimo bit in uscita viene copiato nel flag CF.

CF operando SAL operando CF SAR

Le istruzioni ROR e ROL Formato: ROL operando, contatore ROR operando, contatore Funzionamento: Le istruzioni ROR e ROL permettono di eseguire la rotazione del contenuto di un operando. L’ultimo bit in uscita viene copiato nel flag CF. In una rotazione a destra (ROR) in CF è copiato il bit meno significativo, mentre in una rotazione a sinistra (ROL) in CF è copiato il bit più significativo.

Scambio del contenuto dei nibble in un byte .MODEL small .STACK .DATA NUM1 DB ? NUM2 DB ? .CODE ... MOV AL, NUM1 MOV CL, 4 ROL AL, CL ; rotazione a sinistra di 4 bit MOV NUM2, AL

Le istruzioni RCR e RCL Formato RCL operando, contatore RCR operando, contatore Funzionamento Le istruzioni RCR e RCL permettono di eseguire la rotazione del contenuto di un operando utilizzando il flag CF come bit aggiuntivo. In una rotazione a destra (RCR) la rotazione avviene come se CF fosse un bit in più posto alla destra della parola da ruotare, mentre in una rotazione a sinistra (RCL) la rotazione avviene come se CF fosse un bit in più posto alla sinistra della parola da ruotare.

CF operando ROL operando CF ROR CF operando RCL operando CF RCR

Calcolo dell’area di un triangolo .MODEL small .STACK .DATA BASE DW ? ALT DW ? AREA DW ? .CODE ... MOV AX, BASE MUL ALT ; DX,AX = BASE * ALTEZZA SHR DX, 1 ; carico CF con il bit 0 di DX RCR AX, 1 ; divisione per 2 e copia di CF nel bit 15 CMP DX, 0 ; DX != 0 ? JNE err ; Sì: overflow MOV AREA, AX err: ... ; istruzioni di gestione dell’overflow