Modalità di indirizzamento a 16 bit di NASM x86

Ho problemi con il puntamento a un indirizzo e nel mio caso scrivo una variabile di dimensioni in byte. Questo mi dà l’errore “errore: indirizzo valido non valido”:

mov byte[AX], byte 0x0 

Dopo alcuni trail ed errori ho provato lo stesso ma con EAX. Questo compila bene:

 mov byte[EAX], byte 0x0 

Cosa mi manca qui?

[AX] è una specifica di operando di memoria non valida.

I 16 bit validi sono :

 [constant] [BX] [SI] [DI] [BX+constant] [BP+constant] [SI+constant] [DI+constant] [BX+SI] [BX+DI] [BP+SI] [BP+DI] [BX+SI+constant] [BX+DI+constant] [BP+SI+constant] [BP+DI+constant] 

[BP] è formalmente non valido, ma molti assemblatori lo convertiranno tranquillamente in [BP + 0].

Vedere il manuale della CPU per le codifiche degli operandi della memoria e i byte ModR / M e SIB.