|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Feb 2009
Messaggi: 271
|
GNU assembly x86 - indirizzamento indiretto con registro indice
In ambiente Gnu Assembler con cpu compatibile con la famiglia INTEL x86 a 32 bit, ho un vettore di 10 componenti (da 2 byte ciascuna); l'indirizzo del vettore è passato tramite il registro EBX.
L'istruzione MOV mi da diversi errori che non comprendo, il mio obiettivo è di scorrere il vettore all'infinito: Codice:
MOV $0, %ESI
loop: MOV (%EBX)(,%ESI, 2), %AX
INC %ESI
JMP loop
Se sostituissi a %EBX un'etichetta predefinita (es. "numero", definita come numero: .WORD 1, 2, 3, 4, ....) tutto funzionerebbe regolarmente (es. MOV numero(,%ESI, 2), %AX ) Se non capisco male l'operando sorgente della MOV dovrebbe essere tramite il contenuto del registro EBX (indirizzo di memoria)+il contenuto del registro ESI*2. Dove sbaglio? |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jan 2008
Messaggi: 8406
|
segment-override:signed-offset(base,index,scale)
quindi non puoi fare Codice:
MOV (%EBX)(,%ESI, 2), %AX se EBX è la base, dev'essere Codice:
MOV (%EBX,%ESI, 2), %AX |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Feb 2009
Messaggi: 271
|
Grazie 1000, non riuscivo a trovare informazioni in merito.
Ultima modifica di zio_mangrovia : 25-09-2020 alle 18:44. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:45.



















