|
|
|
|
Strumenti |
31-08-2020, 12:03 | #1 |
Member
Iscritto dal: Feb 2009
Messaggi: 257
|
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? |
31-08-2020, 12:53 | #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 |
31-08-2020, 13:17 | #3 |
Member
Iscritto dal: Feb 2009
Messaggi: 257
|
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: 23:12.