Nel seguente codice la routine
inchar prende in input un carattere da tastiera e lo inserisce nel registro AL.
Non capisco perchè nella seguente riga ho un errore di compilazione:
MOV %AL, messaggio(,CL,1)
La variabile o meglio il 'vettore'
messaggio dovrebbe individuare un indirizzo di memoria il cui contenuto è rappresentato inizialmente da tutti zeri.
Se ho ben capito con questo identificatore faccio riferimento all'indirizzo di memoria di partenza del vettore per cui utilizzando l'indirizzamento definito con "registro indice" non capisco perchè dia errore il compilatore.
messaggio = prima locazione di memoria
CL= registro indice
1 = fattore di scala (ogni elemento è un byte)
messaggio + CL*1 = indirizzo di memoria dove voglio scrivere
Dove sbaglio?
.GLOBAL _main
.DATA
messaggio: .FILL 200,1,0
.TEXT
_main: NOP
MOV 0, %CL # contatore inserimenti carattere
ciclo: CALL inchar
MOV %AL, messaggio(,CL,1) # salvo il char
INC %CL
CMP $10, %CL # numero max char inseriti
JB ciclo