Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Altri Linguaggi - [Assembly]Organizzazione della memoria
Forum - Altri Linguaggi - [Assembly]Organizzazione della memoria

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
vince92 (Normal User)
Rookie


Messaggi: 29
Iscritto: 18/11/2008

Segnala al moderatore
Postato alle 17:25
Martedì, 19/05/2009
Ciao a tutti, ho iniziato da poco a programmare in assembly ed c'è una cosa che non mi è chiara. Riguarda il modello di memoria tiny(ORG 100h) che ho notato che sul mio assembler(emu8086) se dichiaro le variabili all'inizio mi da errore. Ho visto negli esempi che ha che le variabili le dichiara sempre alla fine. Perchè?

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 20:20
Martedì, 19/05/2009
Cioe'? Perche' non puoi metterle all'inizio? (ovviamente subito dopo l'entry point)

PM Quote
Avatar
manvb.net (Member)
Guru


Messaggi: 663
Iscritto: 28/01/2008

Segnala al moderatore
Postato alle 20:22
Martedì, 19/05/2009
Perchè la cpu esegue il codice dell'unico segmento dall'offset 100H.
Se dichiari le variabili subito dopo la cpu tenta di eseguile come se fossero codici macchina(e qui l'errore)!
Dichiarandole alla fine invece non saranno eseguite perchè il programma terminerà prima:

Ecco uno schemino

100H:  Inizio lettura cpu
... Istruzioni
...
...
... Istruzione di fine programma
... Variabili

Tutto quello che sta tra inizio lettura cpu e fine programma viene eseguito (variabili comprese)

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 20:23
Martedì, 19/05/2009
Infatti, puoi inserirle subito dopo l'entry point ...

jmp start

... variabili ...

start

PM Quote
Avatar
manvb.net (Member)
Guru


Messaggi: 663
Iscritto: 28/01/2008

Segnala al moderatore
Postato alle 20:25
Martedì, 19/05/2009
Testo quotato

Postato originariamente da theprogrammer:

Infatti, puoi inserirle subito dopo l'entry point ...

jmp start

... variabili ...

start



Esatto, in questo modo la cpu salta le variabili.

PM Quote
Avatar
vince92 (Normal User)
Rookie


Messaggi: 29
Iscritto: 18/11/2008

Segnala al moderatore
Postato alle 20:32
Martedì, 19/05/2009
Ah, credo di aver capito. Ho visto dei codici dove solo con dichiarazioni di variabili riuscivano a stampare una HelloWorld a schermo, il valore delle variabili era quello delle istruzioni?

PM Quote
Avatar
manvb.net (Member)
Guru


Messaggi: 663
Iscritto: 28/01/2008

Segnala al moderatore
Postato alle 20:42
Martedì, 19/05/2009
Esatto: basta mettere i valori numerici(opcodes) delle istruzioni ed esse vengono eseguite.
Per la cpu tra codice e dati non c'è differenza.

PM Quote
Avatar
vince92 (Normal User)
Rookie


Messaggi: 29
Iscritto: 18/11/2008

Segnala al moderatore
Postato alle 20:49
Martedì, 19/05/2009
mmm questa cosa mi ha incuriosito. Sai dove posso trovare una lista di istruzioni asm 8086 con indicato per ogni istruzione il codice operativo?

PM Quote
Avatar
manvb.net (Member)
Guru


Messaggi: 663
Iscritto: 28/01/2008

Segnala al moderatore
Postato alle 20:52
Martedì, 19/05/2009
Qui dovrebbe esserci una lista completa: http://developer.intel.com/design/PentiumII/manuals/243191 ...
Però non basta scrivere l'opcode ma devi studiare tutta la struttura di un'istruzione x86

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo