Modos de direccionamiento NASM x86 de 16 bits [duplicado]
Tengo problemas para señalar una dirección y escribir, en mi caso, una variable de tamaño de byte. Esto me da el error "error: dirección efectiva no válida":
mov byte[AX], byte 0x0
Después de algunas pruebas y errores, probé lo mismo pero con EAX. Esto se compila muy bien:
mov byte[EAX], byte 0x0
¿Que me estoy perdiendo aqui?
Aceptado
[AX]
es una especificación de operando de memoria no válida.
Los válidos de 16 bits son :
[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] es formalmente inválido, pero muchos ensambladores lo convertirán silenciosamente en [BP+0].
Consulte el manual de la CPU para conocer las codificaciones de operandos de memoria y los bytes ModR/M y SIB.