Sezione

Indirizzi Base Registri Interni
Area Comunicazione BIOS Funzioni BIOS Funzioni DOS
Prefazione Capitolo 1 Capitolo 2 Schede
Libreria ASM Libreria MAC Palestra Progetti ASM
Info Download INDICE

Schede del Tutorial

Home » Programma il Computer » Tutorial Assembly

Le Schede del Tutorial

  Numeri e Logica Binaria

SCHEDA n° 09 [ 13  di 20] 

    

    Operazioni Logiche su Numeri Binari: gli Shift
     
bulletNumerose sono le istruzioni destinate dal processore 80x86 allo scorrimento dei bit di un numero binario; il meccanismo è per tutte il medesimo:
bullettutti i bit appartenenti al numero binario sono spostati verso destra o verso sinistra
bulletil bit più significativo (nello spostamento a sinistra) oppure il bit meno significativo (nello spostamento a destra) viene irrimediabilmente perduto
bulletil posto lasciato vuoto a destra (nello spostamento a sinistra) oppure a sinistra (nello spostamento a destra) viene riempito (di solito) con un bit a 0

  

bulletUn esempio concreto vale, al solito, più delle chiacchiere; supponiamo di voler imporre uno shift da destra verso sinistra, con ingresso di 0; ecco la situazione di un numero binario a 8 bit prima della cura... e dopo 8 shift consecutivi:

 

    bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0   exad
Situazione INIZIALE 1 0 1 0 0 1 1 1 A7H
dopo il 1° shift 0 1 0 0 1 1 1 0 4EH
dopo il 2° shift 1 0 0 1 1 1 0 0 9CH
dopo il 3° shift 0 0 1 1 1 0 0 0 38H
dopo il 4° shift 0 1 1 1 0 0 0 0 70H
dopo il 5° shift 1 1 1 0 0 0 0 0 E0H
dopo il 6° shift 1 1 0 0 0 0 0 0 C0H
dopo il 7° shift 1 0 0 0 0 0 0 0 80H
Situazione FINALE 0 0 0 0 0 0 0 0 00H

  

bulletIl set delle istruzioni dell'80x86 prevede queste possibilità:

  

bullet
    SHL  (SHift logical Left)

 

esegue lo spostamento (shift) verso sinistra dei bit dell'operando con ingresso di zero da destra; con riferimento ad un operando a 8 bit, ogni volta che viene eseguita:
tutti i bit dell'operando vengono spostati (Shift) di un posto verso sinistra
il bit più significativo (bit7) dell'operando sarebbe perduto, spinto fuori dall'operando, ma viene invece memorizzato nella flag di Carry, al posto di quello che c'era prima
il posto lasciato libero dal bit meno significativo (bit0) dell'operando viene sovrascritto con un bit nullo

 

  

 

 

Il meccanismo logico della SHL sottolinea che questa istruzione realizza la moltiplicazione binaria per 2 dell'operando.

      

bullet
    SHR   (SHift logical Right)

 

esegue lo spostamento (shift) verso destra dei bit dell'operando con ingresso di zero da sinistra; con riferimento ad un operando a 8 bit, ogni volta che viene eseguita:
tutti i bit dell'operando vengono spostati (Shift) di un posto verso destra
il bit meno significativo (bit0) dell'operando sarebbe perduto, spinto fuori dall'operando, ma viene invece memorizzato nella flag di Carry, al posto di quello che c'era prima
il posto lasciato libero dal bit più significativo (bit7) dell'operando viene sovrascritto con un bit uguale a zero

 

  

 

 

Il meccanismo logico della SHR sottolinea che questa istruzione realizza la divisione binaria per 2 con segno dell'operando.

      

bullet
    SAL   (Shift Arithmetic Left)

 

esegue lo spostamento (shift) verso sinistra dei bit dell'operando destinazione con ingresso di zero da destra; con riferimento ad un operando a 8 bit, ogni volta che viene eseguita:
tutti i bit dell'operando vengono spostati (Shift) di un posto verso sinistra
il bit più significativo (bit7) dell'operando sarebbe perduto, spinto fuori dall'operando, ma viene invece memorizzato nella flag di Carry, al posto di quello che c'era prima
il posto lasciato libero dal bit meno significativo (bit0) dell'operando viene sovrascritto con un bit nullo

 

  

 

 

Il meccanismo logico della SAL sottolinea che questa istruzione realizza la moltiplicazione binaria per 2 dell'operando.

      

bullet
    SAR   (Shift Arithmetic Right)

 

esegue lo spostamento (shift) verso destra dei bit dell'operando con ingresso del bit più significativo, cioè del suo bit di segno; con riferimento ad un operando a 8 bit, ogni volta che viene eseguita:
tutti i bit dell'operando vengono spostati (Shift) di un posto verso destra
il bit meno significativo (bit0) dell'operando sarebbe perduto, spinto fuori dall'operando, ma viene invece memorizzato nella flag di Carry, al posto di quello che c'era prima
il posto lasciato libero dal bit più significativo (bit7) dell'operando viene sovrascritto con un bit uguale a stesso!!

 

  

 

 

Poichè il bit più significativo dell'operando è anche il suo bit di segno, lo schema dell'istruzione può essere anche il seguente:

 

  

 

    

Pagina Precedente Scheda n° 09 Pagina Successiva Numeri e Logica Binaria Torna al Menu delle Schede del "Tutorial" Lezioni - Vai al DownLoad dei files DOC Torna al Menu del "Tutorial"
Scheda n° 09 -  13
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

    

SCHEDE » 1.Header EXE 2.PseudoOp MASM 3.Differenza tra Macro e Procedure
4.
Tabella Vettori 5.PSP 6.Stack 7.Istruzioni 80x86
8.La misura dell'Informazione 9.Numeri e Logica Binaria
TUTORIAL » Indirizzi Base | Registri Interni | Area Comunicaz. BIOS | Funzioni BIOS | Funzioni DOS
Prefazione | CAP 1 | CAP 2 | Schede | Palestra
Libreria ASM | Libreria MAC | Progetti ASM | Download | Info | Indice
Home 
Pascal|Manuali|Tabelle|Schede
Tutorial Assembly|Palestra Assembler
Aggiungi Giobe®2000 ai preferiti  
Motore
Ricerca
  Rendi Giobe®2000 pagina di Default
© 2001-2010  -  Studio Tecnico ing. Giorgio OBER
Tutti i diritti sono riservati