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

  Istruzioni della Cpu 80x86

SCHEDA n° 07 [ 01  di 198] 

    

  Aggiornato  9 aprile 2006
    Legenda degli Esempi in Codice - HELP
     
Nelle schede dedicate alle singole istruzioni sono spesso presenti Tabelle che raccolgono alcuni Esempi d'Applicazione; esse sono il frutto di una compilazione in ambiente MASM e di una successiva (eventuale) analisi in ambiente Debug. Per ognuna tabella sono disponibili:
     
bulletIndirizzo corrente: l'indirizzo (di Offset nel Segmento di Codice) è fatto partire da 0100H, come risulta dopo la sua compilazione come se dovesse realizzare un eseguibile di tipo intrasegmentale, COM; naturalmente scorrendo questo tipo d'informazione è facile desumere il numero di bytes necessari per la compilazione di ciascuna delle istruzioni proposte come esempio:

      

Addr 

 Codifica Masm  

 Sequenza Bytes    

Istruzione                   

0100
0103
0107

      

bulletCodifica in linguaggio macchina: la sequenza dei numeri esadecimali di questo campo è esattamente quella presente nel listato MASM associato alla sequenza d'istruzioni; si può sottolineare il modo usato per esprimere indirizzi o dati a più bytes, in una proposta "umana" dell'informazione binaria:

      

Addr 

 Codifica Masm  

 Sequenza Bytes    

Istruzione                   

03 D3
02 0E 0100 
03 0E 0101

      

bulletSequenza effettiva dei bytes in memoria: la sequenza effettiva dei bytes in memoria è, invece, quella che il processore è chiamato ad interpretare, letta in ambiente debug , con il comando D; si possono individuare il byte (o i bytes) del codice operativo (di solito il primo o i primi, pensati dai creatori del processore 80x86 per esprimere un modo unico e irripetibile il codice mnemonico associato all'istruzione) e la (eventuale) sequenza dei bytes di dato, nella caratteristica sequenza Lo-Hi (cioè prima la parte bassa e poi quella più significativa):

      

Addr 

 Codifica Masm  

 Sequenza Bytes    

Istruzione                   

03 D3  
02 0E 00 01 
03 0E 01 01

      

bulletCodice mnemonico: l'ultimo campo esprime la classica forma dell'istruzione sotto test:

      

Addr 

 Codifica Masm  

 Sequenza Bytes    

Istruzione                   

ADD DX,BX
ADD CL,[Depo01]
ADD CX,[Depo02]

      

bulletTutti i 4 campi sono, in realtà, strettamente legati tra di loro: il loro confronto può aiutare a capire i meccanismi che hanno consentito di scrivere questo Set d'Istruzioni.
bulletI codici operativi (bytes) sono scritti a partire da uno schema ben preciso, che coinvolge che coinvolge diversi campi di bit; negli esempi proposti in questa pagina possiamo vedere che le 3 istruzioni hanno 2 codici operativi.
bulletIl primo (02H=00000010b o 03H=00000011b) evidenzia:
bulletil pacchetto base di 6 bit, 000000, tipico dello mnemonico ADD
bulletil bit1 (uguale a 1 in tutti i casi) ad indicare un rapporto tra registro e memoria o tra registro e registro
bulletil bit0, uguale a 1 (con operandi a 16 o 32 bit, word o doubleword) o uguale a 0 (con operando a 8 bit, byte)
bulletIl secondo (D3H=11010011b o 0EH=00001110b) composto da 3 campi:
bulleti primi 2 bit (bit7,bit6) uguali a 11 (se l'istruzione coinvolge 2 registri) o diversi da 11 (se viene coinvolto un operando di memoria o operando immediato, cioè una costante)
bulleti secondi 3 bit (bit5,bit4,bit3) indicano il tipo di registro coinvolto; nell'esempio 010 significa DX o DL mentre 001 indica CX o CL [ma ovviamente è possibile anche 000 per AX o AL, 011 per BX o BL, 100 per SP o AH, 101 per BP o CH, 110 per SI o DH e 111 per DI o BH]
bulletgli ultimi 3 bit (bit2,bit1,bit0) forniscono informazioni sul secondo operando:
bulletnel caso si tratti di un registro (bit7,bit6=11) la terna bit2,bit1,bit0 utilizza gli stessi valori affidati ai bit5,bit4,bit3 (nel nostro esempio si ha 011 per BX o BL)
bulletnel caso si tratti di una locazione di memoria la terna bit2,bit1,bit0 viene utilizzata insieme alla coppia bit7,bit6 per creare un codice a 5 bit (bit7,bit6,bit2,bit1,bit0) in grado di individuare una delle 24 possibili modalità di indirizzamento; da notare che con 5 bit sono possibili 32 (=25) combinazioni, ma solo 24 sono in questo caso significative, dovendo escludere quelle con bit7,bit6=11, ovviamente affidate alle 8 rimanenti modalità tra registri

      

bulletNaturalmente la logica usata per costruire un codice operativo è decisamente impegnativa e caratterizzata da numerose varianti, tutte per altro logicamente inquadrate; pur stimolante l'argomento tende ad essere puramente accademico, nè, di solito, il programmatore si cura di conoscere il valore binario dei bytes che corrispondono allo mnemonico di un'istruzione: è una pura curiosità...
bulletPer questo si evita di spingere più a fondo l'indagine su questo argomento, almeno per ora.

    

Pagina Precedente Scheda n° 07 Pagina Successiva Istruzioni Cpu 80x86 Torna al Menu delle Schede del "Tutorial" Lezioni - Vai al DownLoad dei files DOC Torna al Menu del "Tutorial"
Scheda n° 07 -  01
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198

    

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