Linguaggio assembly: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Etichette: Modifica da mobile Modifica da web per mobile
Voce disorfanata
Riga 52:
 
==Struttura==
La struttura di un tipico listato [[Assembly x86]] per PC si articola, a grandi linee, nei seguenti termini:
* intestazione, in cui possiamo inserire, tramite dei commenti, il nome e la funzione del programma.
* segmento dati, in cui andiamo a dichiarare formalmente le variabili usate dal programma (in pratica allochiamo delle zone di memoria nel segmento puntanto dal DS data segment)
Riga 61:
* il segmento di codice non risulta scrivibile durante la normale elaborazione: ne consegue, tra l'altro, l'assoluta impossibilità di creare codice self-morphing (automodificante), ma anche un modo generalmente diverso di referenziare variabili (a rigore, label corrispondenti ad una o più locazioni in memoria dati) e codice nel sorgente;
* i dati a loro volta risiedono in memorie fisicamente separate, talora dotate anche di persistenza tra le sessioni (EPROM, Flash EEPROM, RAM "tamponate" ossia dotate di batteria di backup...), e tutto ciò si riflette in modo esplicito e pervasivo nella sintassi supportata dall'assembler, nelle direttive specifiche e nella struttura effettiva di un sorgente Assembly;
* ultimo, ma non meno importante: registri come DS e SS (stack segment) sono altre peculiarità della piattaforma x86, sovente lo stack di chiamata non è neppure direttamente accessibile nei core MCU più diffusi.
 
==Esempio di codice==