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

Capitolo 1

Home » Programma il Computer » Tutorial Assembly

Capitolo 1 - Il processore - Il Debugger

  Il Processore e il Debugger

PROCESSORE 80x86 8/14 [19 di 60] 

    

    I Registri di uso Generale
     
bulletSiamo pronti: questa è la prima vera interfaccia con la programmazione Assembly.
bulletDescrivere i Registri di una CPU e discuterne le istruzioni è un tutt'uno: i primi sono spesso gli operandi delle seconde... e le seconde tendono a specializzare l'uso dei primi.
bulletCome d'accordo per pura opportunità e per precisa scelta didattica (probabilmente discutibile, ma adottata da tutti i docenti, almeno all'inizio) prenderemo in considerazione i 14 registri a 16 bit dell'8086; il passaggio allo studio e all'uso di quelli a 32 bit sarà comunque indolore e immediato.

      

      

bulletI primi sottoposti a esame sono i 4 registri di uso generale (General Purpose Registers); il loro nome è AX, BX, CX e DX ed hanno tutti la caratteristica di poter essere utilizzati così come sono definiti (cioè a 16 bit) o in 2 metà a 8 bit.
bulletNaturalmente il loro impiego nell'una o nell'altra dimensione dipende dal contesto, cioè dall'istruzione che li coinvolge; nel secondo caso i nomi dei registri a 8 bit conservano l'iniziale di quello che li contiene, seguita dalla lettera L o H, rispettivamente per la parte bassa (Low) e alta (High) del registro a 16 bit da cui hanno origine.

      

bulletSebbene la cosa sia, al lato pratico, del tutto irrilevante la loro lettera iniziale può essere interpretata come iniziale del compito che al registro riesce meglio, cioè:

      

bulletAX, Accumulatore: si tratta del registro più coinvolto dal set delle istruzioni e nessuno come AX è altrettanto efficiente; il suo nome è storicamente associato all'immagine di colui che prende su di se (accumula) il maggior carico di lavoro; in concreto è coinvolto per default in alcune importanti istruzioni:
bulletaritmetiche: come  MUL ,  IMUL,  DIV,  IDIV, nelle quali rappresenta in ingresso il moltiplicando e il dividendo e in uscita il risultato
bulletdi spostamento dati dalla e verso la memoria, come  LODSB  (equivalente a  MOV AL,DS:[SI] ) e  STOSB  (equivalente a  MOV ES:[DI],AL)
bulletdi uso particolare (come  IN AL,DX  o  OUT DX,AL , nelle quali costituisce rispettivamente il registro destinazione e sorgente dei dati da scambiare con dispositivi di Input/Output).
bulletLe sue metà a 8 bit sono AL e AH; le variazioni di ciascuna di esse influenzano ovviamente il contenuto di AX.

      

bulletBX, Base: il suo nome deriva dal fatto che, unico tra i 4 registri di uso generale, può essere usato istituzionalmente come puntatore; le istruzioni che utilizzano questa tecnica sono, per esempio:
bulletquelle di puntamento diretto, come  MOV AL,DS:[BX] .
bulletquelle di puntamento appunto con registro base, come  MOV AL,DS:[SI+BX+00] , di solito con l'aiuto di un registro indice e di uno spiazzamento.
bulletLe sue metà a 8 bit sono BL e BH; le variazioni di ciascuna di esse influenzano ovviamente il contenuto di BX.

      

bulletCX, Contatore: il suo nome deriva dal fatto che numerose istruzioni lo utilizzano per default come contatore di eventi; tra esse:
bullettutte quelle che consentono il prefisso  REP , il compito del quale è proprio di ripetere l'istruzione fino a quando in registro CX, decrementato ad ogni giro, raggiunge il valore zero.
bulletl'istruzione  LOOP , e le sue simili, nelle quali fa da contatore dei cicli eseguiti: il ciclo viene ripetuto fino a quando CX, decrementato ad ogni giro, raggiunge il valore zero.
bulletLe sue metà a 8 bit sono CL e CH; le variazioni di ciascuna di esse influenzano ovviamente il contenuto di CX.

      

bulletDX, Data: il suo nome vuole rimarcare la generica disponibilità ad essere usato per memorizzare dati; in realtà anche per questo registro esistono istruzioni che gli riservano un uso di default; tra esse:
bulletalcune aritmetiche, come  MUL ,  IMUL,  DIV,  IDIV, nelle quali, quando l'operando è una word, rappresenta la parte alta del risultato.
bulletnelle istruzioni di Input/OutpuT, come  IN AL, DX  o  OUT DX,AL , nelle quali rappresenta l'indirizzo del dispositivo periferico.
bulletLe sue metà a 8 bit sono DL e DH; le variazioni di ciascuna di esse influenzano ovviamente il contenuto di DX.

      

bulletE' bene sottolineare che i 4 registri di uso generale, AX, BX, CX e DX, possono tranquillamente essere usati nel modo più diverso e libero; tuttavia se si desidera ottimizzare il proprio codice è saggio tener conto delle indicazioni suggerite, riservando a ciascuno di essi il compito che meglio lo realizza.

      

bulletSolo per completezza, a partire dal 80386 sono disponibili registri a 32 bit; i 4 registri di uso generale sono detti EAX, EBX, ECX e EDX, e quelli descritti in questa pagina sono ancora riconosciuti come loro parte bassa.

    

Pagina Precedente Capitolo 1 Pagina Successiva PROCESSORE 80x86 8/14   Torna alla Home  del Capitolo1 del "Tutorial" Lezioni - Vai al DownLoad dei files DOC Torna al Menu del "Tutorial"
19 di 60
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

    

CAP. 1 » 1. Processore 80x86 2. Istruzioni 80x86  3. Debug  4. La Grande Libreria
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