| Tutorial 
      | Dettaglio Istruzioni | 
| Istruzioni della Cpu 80x86 | SCHEDA n° 07 [I/ 166 di 198] | 
| 
 | 
|  | 
 | 
|  | Questa istruzione sottrae tra loro l'operando sorgente e il valore della flag C (Prestito/Carry) dall'operando destinazione. Il risultato è lasciato nell'operando di destinazione, al posto di quello di partenza. | 
|  | Se il valore della flag C (Prestito/Carry) è lasciato a 1 significa infatti che la sottrazione ha avuto bisogno di prestito per essere eseguita. | 
|  | Gli operandi possono avere dimensione di un byte, di una word o di una doubleword ( con 80386/486). | 
|  | Le sue caratteristiche sono riassunte nella
    seguente tabella (leggi le  istruzioni  ): | 
| SBB
          Destinazione,Sorgente SBB minuendo, sottraendo | Destinazione << Destinazione + Sorgente - flag Carry | |||||||||||||||
| Esempio di Applicazione | Cicli di Clock | Mem Acces | N° Bytes | Flag influenzate | ||||||||||||
| Mnemonico | Operandi | 86 | 268 | 386 | 486 | O | D | I | T | S | Z | A | P | C | ||
| SBB | DX,BX | 3 | 2 | 2 | 1 | no | 2 | # | # | # | # | # | # | |||
| SBB | CL,[Depo01] | 9+EA | 7 | 7 | 2 | 1 | 2,4 | |||||||||
| SBB | CX,[Depo02] | 13+EA | ||||||||||||||
| SBB | [Depo01],BL | 16+EA | 7 | 6 | 3 | 2 | 2,4 | |||||||||
| SBB | [Depo012],BX | 24+EA | ||||||||||||||
| SBB | SI,1234H | 4 | 3 | 2 | 1 | no | 3,4 | |||||||||
| SBB | [Depo01],02H | 17+EA | 7 | 7 | 3 | 2 | 3,6 | |||||||||
| SBB | [Depo02],1234H | 25+EA | ||||||||||||||
| SBB | AL,02 | 4 | 3 | 2 | 3 | no | 2,3 | |||||||||
|  | La tabella evidenzia le 3 tipologie degli
    operandi di questa istruzione: 
 | 
|  | Lo scopo di questa istruzione è da valutare
    nel contesto in cui ha avuto origine, cioè quello dell'8086: per via dei
    limiti della sua ALU (in grado di trattare solo dati a 16 bit) la SBB
    ha reso possibile la sottrazione di numeri maggiori di 16 bit, con la seguente
    tecnica (ovviamente superata con l'avvento dei nuovi processori): 
 | 
in sostanza la sottrazione del numero CX,DX dal numero AX,BX (entrambi a 32 bit) viene eseguita in 2 tempi, sottraendo prima i 16 bit meno significativi (DX da BX) e poi i rimanenti 16 bit alti (CX da AX), insieme all'eventuale prestito (conservato appunto nella flag di carry) della sottrazione precedente.
|  | La figura seguente mostra le risorse richieste da questa istruzione in funzione degli operandi e del tipo di indirizzamento coinvolti (leggi le istruzioni): | 
| 
 | ||||||||||||||||||||||||||||||||||||||||
| 
 | 
|   | Scheda n° 07 |   | Istruzioni Cpu 80x86 |  |  |  | ||
| Istruzione 166 - SBB | 
| 
 | 
| 
 | 
| 
 | 
| Home  | 
 | |||||||
| 
 | Motore Ricerca | 
 |