Estratto del documento

Linguaggio assembly IA-32

Indirizzamento

- Prima si indica lo sorgente poi la destinazione.

- I nomi dei registri sono preceduti da %.

- Le costanti sono precedute da $.

- Le costanti non precedute da % o $, sono indirizzi di memoria.

- La dimensione degli operandi viene indicata con i suffissi b (8bit), w (16bit), l (32bit).

- Ogni statement (riga di codice) è formata da 4 campi:

  • Label: Identifica univocamente un indirizzo di memoria → la label è una stringa seguita da “:”, e la stringa può contenere lettere, cifre e alcuni caratteri speciali (tipo “_”).
  • Opcode: Stringa corrispondente al codice operativo.
  • Operandi: Operandi dell'istruzione → di vario tipo: costanti (operandi immediati), registri, indirizzi di memoria. Se sono presenti due operandi, il primo è detto sorgente il secondo destinazione.
  • Commento → inizia con # e si può usare in tutti gli statement.

- Il codice assembly è diviso in sezioni: Dati e Testo.

- Il punto di ingresso è l'etichetta globale “_main”.

.global _main
.equ FINE_STRINGA 0
.data
v_byte: .byte 0xFF
v_word: .word 0xFFFF
v_int: .int 0xFFFFFFFF
vettore: .space 100
stringa: .asciz “123\n”
.text
_main:
... 
ret # fine procedura _main

Modelli di memoria IA-32

  • Segmented: memoria divisa in 16k segmenti di 4 Gbyte l'uno.
  • Flat: memoria è un unico segmento di 4 Gbyte → Un registro può essere memorizzato completamente in un registro → Noi usiamo questo modello.

Tipi di dato di riferimento

  • Byte: 8 bit che iniziano a qualsiasi indirizzo, (da 0 a 7) il meno significativo è lo 0.
  • Word: 2 byte che iniziano a qualsiasi indirizzo, (da 0 a 15) il meno significativo è lo 0.
  • Double Word: 4 byte che iniziano a qualsiasi indirizzo, (da 0 a 31) il meno significativo è lo 0.

- IA-32 è Little Endian: i byte meno significativi sono ad un indirizzo inferiore di quelli più significativi.

Registri

- eAx, eBx, eCx, eDx: uso generale.

- eBp, eSp: usati spesso per passare e ricevere dati.

- eFLAGS: contiene i bit di stato.

Bit di stato

  • CF (bit 0): 1 quando il risultato ha determinato riporto (carry).
  • PF (bit 2): 1 quando il risultato ha un numero pari di 1.
  • AF (bit 4): 1 quando il risultato ha determinato riporto intermedio sul bit 3.
  • ZF (bit 6): 1 quando il risultato è zero.
  • SF (bit 7): bit segno, 1 quando il risultato è negativo.
  • OF (bit 11): 1 quando il risultato ha causato overflow con operazioni in aritmetica intera con segno (complemento a 2).

Modalità di indirizzamento

movl $0x

Anteprima
Vedrai una selezione di 1 pagina su 5
Architettura Elaboratori - Linguaggio Assembly IA-32 (anche esercizi) Pag. 1
1 su 5
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Mr.Al di informazioni apprese con la frequenza delle lezioni di Architettura degli elaboratori e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Parma o del prof Scienze matematiche Prof.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community