Sto utilizzando Gnu ASsembler con cpu compatibile con la famiglia INTEL x86 a 32 bit.
Ho un vettore di 10 componenti, ciascuna di dimensione 2 byte, il cui indirizzo viene passato tramite il registro EBX.
Non capisco come l'istruzione MOV non compili, devo scorrere il vettore:
MOV $0, %ESI
loop: MOV %EBX(,%ESI, 2), %EAX
INC %ESI
JMP loop
Ovviamente in questo caso il codice scorre il vettore all'infinito oltre la sua area di memoria a disposizione, mail punto non è questo.
Non comprendo perchè l'istruzione
MOV %EBX(,%ESI, 2), %EAX restituisce errore durante il processo di assembler.
Se sostituissi a %EBX un'etichetta predefinita (es. numero, definita come
numero: .WORD 1, 2, 3, 4, ....) tutto funziona regolarmente.