PDA

View Full Version : [assembly]traduzione istruzioni


rschirin
24-05-2010, 18:48
qualcuno potrebbe dirmi esattamente cosa fanno queste istruzioni:
PUSH [BX]
PUSH [BX+DI+2]
MOV [BX], AX

sono indipendenti tra loro, non fanno parte di un programma. come si può intuire non ho ben chiaro l'uso di quelle parentesi quadre...:muro:

MaxArt
24-05-2010, 22:10
Indicano di considerare il valore in memoria puntato dal valore tra parentesi.
PUSH [BX] prende il valore puntato da BX e lo mette nello stack.
MOV [BX], AX copia il valore di AX nella cella di memoria puntata da BX.

rschirin
24-05-2010, 22:28
Indicano di considerare il valore in memoria puntato dal valore tra parentesi.
PUSH [BX] prende il valore puntato da BX e lo mette nello stack.
MOV [BX], AX copia il valore di AX nella cella di memoria puntata da BX.


perfetto, siccome ci sarà sicuramente una differenza colossale ma l'interpretazione della semantica in questi giorni non mi riesce benissimo ti chiedo:
differenza tra push bx e push [bx] ???
differenza tra mov[bx], ax e mov bx,ax ???

MaxArt
24-05-2010, 23:16
PUSH BX prende il valore di BX e lo mette nello stack.
PUSH prende il valore [B]puntato da BX e lo mette nello stack.

Metti che in BX ci sia il valore 1234h.
PUSH BX metterà nello stack il valore 1234h.
PUSH [BX] metterà nello stack il valore che troverà nella cella di memoria indicizzata da 1234h.

A questo punto, per il MOV ci puoi arrivare da solo.

rschirin
25-05-2010, 10:43
[QUOTE=MaxArt;32085148]
PUSH prende il valore [B]puntato da BX e lo mette nello stack.
QUOTE]

in pratica prende l'indirizzo puntato da bx?

esiste differenza tra l'uso di () e [] ?

MaxArt
26-05-2010, 02:08
in pratica prende l'indirizzo puntato da bx?Ti direi di sì, ma cerchiamo di essere precisi con la terminologia: o dici "puntato da BX", oppure "l'indirizzo specificato da BX".

esiste differenza tra l'uso di () e [] ?Per scrivere in memoria devi usare le parentesi quadre. Perché lo chiedi?