FANDOM


Nota disambigua
Il titolo di questa voce non è corretto per via delle caratteristiche del software MediaWiki. Il titolo corretto è B1. Informazioni generali.
Blue Glass Arrow RTL  B0. IntroduzioneCrystal Clear app kfm home  Calcolatori elettronici (Assembler 8086)Blue Glass Arrow  B2. Istruzioni di trasferimento dati
Gli appunti che seguono sono contenuti nella sottopagina /sub (modifica · cronologia · aggiorna)

Modi di indirizzamentoModifica

39 Esistono 7 modi di indirizzamento che definiscono come gli operandi possono essere passati. L'assembler 8086 non è un linguaggio ortogonale, ma impone dei vincoli sui modi di indirizzamento nei confronti delle istruzioni: ad esempio, l'istruzione <MOV [DI] [SI] è vietata perché gli operandi [DI] e [SI] si trovano entrambi in memoria.

Register addressing (AX, BX)

40 Gli operandi sono registri che contengono dati.

Immediate addressing (7, 07h, OFFSET VAR, LENGTH VETT)

41 Gli operandi sono delle costanti, cioè sono memorizzati direttamente all'interno del codice macchina dell'istruzione → il valore massimo è limitato dalla dimensione dell'istruzione. Parole chiave come OFFSET e LENGTH non fanno parte dell'instruction set del processore; gli operandi che le contengono vengono automaticamente convertiti dall'assemblatore in indirizzi costanti.

Direct addressing (VAR, TABLE+2, TABLE[2])

44 Gli operandi sono offset di memoria, passati indirettamente tramite i nomi simbolici delle variabili: è compito dell'assemblatore in fase di compilazione, dopo aver assegnato a ogni variabile il proprio offset rispetto al principio del segmento dati[1], convertire il nome simbolico nel suo offset.

Register indirect addressing ([BX], [DI], [SI])

47 Gli operandi sono offset di memoria, passati indirettamente tramite nomi di registri racchiusi tra parentesi quadre. Incrementando di volta in volta il contenuto di un registro, è possibile scandire tutta la memoria.

Base relative addressing ([BX]+4, 4[BX], [BX+4])

50 Gli operandi sono dati dalla somma tra una costante e un valore recuperato al tempo di esecuzione.

Directed indexed addressing (VETT[DI])

53 Gli operandi sono variabili il cui offset viene sommato, al tempo di esecuzione, all'indice. È molto usato per la scansione di vettori.

Base indexed addressing (TABLE[DI][BX]+6)

58 Gli operandi sono variabili il cui offset viene opportunamente sommato a due indici e facoltativamente a una costante.

60 Gli indici non funzionano come in C, ma si deve specificare l'offset di un elemento tenendo conto dell'effettivo numero di bit di cui sono composti gli operandi precedenti: <riga>*<numero_colonne>*<lunghezza_word>+<colonna>*<lunghezza_word>

Pseudo-istruzioniModifica

10 Le pseudo-istruzioni non si trasformano in codice macchina che verrà eseguito dal processore, ma sono solo delle direttive per l'assemblatore.

Definizione di variabili (DB, DW, DD)

11 Per definire un vettore si può utilizzare l'istruzione DUP:

<nome> <tipo> <lunghezza_in_byte> DUP <valore_di_inizializzazione|?>

12 DB può essere utilizzato anche per memorizzare caratteri, dichiarati tra virgolette. Non esiste il carattere di terminazione '\0'.

18 Definizione di costanti (EQU)
Gestione dei segmenti (.MODEL, .DATA, .CODE, .STACK)

19 A seconda delle esigenze di memoria, è possibile specificare all'assemblatore quale modello di memoria (es. small) richiede il programma, cioè il numero di segmenti di memoria e la loro dimensione.

28 Direttiva END

OperatoriModifica

29 Calcolo degli attributi di una variabile (OFFSET, LENGTH)
Costruzione di costanti (+, AND)
Modifica del tipo di una variabile (PTR)

36 Anteponendo <tipo> PTR al nome di una variabile, si specifica la lunghezza di un operando da leggere in memoria, per rimuovere le ambiguità (è l'analogo del cast nel C).

NoteModifica

  1. Il sistema operativo deciderà in fase di esecuzione dove collocare il segmento dati all'interno della memoria.
Blue Glass Arrow RTL  B0. IntroduzioneCrystal Clear app kfm home  Calcolatori elettronici (Assembler 8086)Blue Glass Arrow  B2. Istruzioni di trasferimento dati

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.

Inoltre su FANDOM

Wiki casuale