[Assembly]I registri, post completo

Andare in basso

[Assembly]I registri, post completo

Messaggio  Admin il Lun Ago 22, 2011 9:05 pm

Ovviamente non sto a ripetere il contenuto dell'altro post sui registri, ora aggiungere delle informazioni, come i nomi dei registri, come usarli ecc.

per prima cosa facciamo un cenno storico, un po' di tempo fa, i registri avevano un massimo di 16 bit come capacità, oggi giorni arrivano fino a 32! Ma imparare quelli a 16 è del tutto legittimo, anzi non lo sarebbe se fosse l'opposto.


In questo post cercherò di spiegare al meglio i gloriosi 14 registri a 16 bit!

Descrivere 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.

Quelli di cui scriverò adesso sono i quattro registri di uso generale (General Purpose Registers): AX, BX, CX e DX.

I loro nomi, aiutano il programmatore a indicarne il suo compito, ma non c'è l'obbligo di usarli solo per quello.

Naturalmente 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.

***Attenzione***
#1 - Nel paragrafo sotto ci saranno delle istruzioni che non conosci, ma il senso si capisce
#2 - Di questo ne ho fatto il copia/incolla in quanto non sapevo come dirlo in altre parole
***Attenzione***

Ecco ora la parte che (almeno spero) chi legge questo post aspettava da tanto:
  1. AX, Accumulatore: è il registro più coinvolto nei set di istruzioni:
    aritmetiche: come MUL , IMUL, DIV, IDIV, nelle quali rappresenta in ingresso il moltiplicando e il dividendo e in uscita il risultato
    di spostamento dati dalla e verso la memoria, come LODSB (equivalente a MOV AL,DS:[SI] ) e STOSB (equivalente a MOV ES:[DI],AL)
    di uso particolare (come IN AL,DX o OUT DX,AL , nelle quali costituisce rispettivamente il registro destinazione e sorgente dei dati da scambiare con d dispositivi di Input/Output).
    Le sue metà a 8 bit sono AL e AH; le variazioni di ciascuna di esse influenzano ovviamente il contenuto di AX.

  2. BX 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:
    quelle di puntamento diretto, come MOV AL,DS:[BX] .
    quelle 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.
    Le sue metà a 8 bit sono BL e BH; le variazioni di ciascuna di esse influenzano ovviamente il contenuto di BX.
  3. CX, Contatore: il suo nome deriva dal fatto che numerose istruzioni lo utilizzano per default come contatore di eventi; tra esse:
    tutte 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.
    l'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.
    Le sue metà a 8 bit sono CL e CH; le variazioni di ciascuna di esse influenzano ovviamente il contenuto di CX.
  4. DX, 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:
    alcune aritmetiche, come MUL , IMUL, DIV, IDIV, nelle quali, quando l'operando è una word, rappresenta la parte alta del risultato.
    nelle istruzioni di Input/OutpuT, come IN AL, DX o OUT DX,AL , nelle quali rappresenta l'indirizzo del dispositivo periferico.
    Le sue metà a 8 bit sono DL e DH; le variazioni di ciascuna di esse influenzano ovviamente il contenuto di DX.




Ecco i nomi dei quattro registri a 32 bit: EAX, EBX, ECX e EDX.

Un saluto!


Ultima modifica di Admin il Lun Set 19, 2011 3:07 pm, modificato 1 volta
avatar
Admin
Admin
Admin

Messaggi : 148
Punti : 15127
Reputazione : 0
Data d'iscrizione : 24.04.11
Età : 38
Località : Emiglia Romagna

Visualizza il profilo http://c88software.blogspot.com

Torna in alto Andare in basso

I registri, post completo

Messaggio  giobe2000 il Lun Set 19, 2011 2:51 pm

Guarda il testo originale: Registri di Uso Generale.

giobe2000

Messaggi : 14
Punti : 12885
Reputazione : 10
Data d'iscrizione : 02.09.11

Visualizza il profilo

Torna in alto Andare in basso

Torna in alto

- Argomenti simili

 
Permessi di questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum