Modos de direccionamiento NASM x86 de 16 bits [duplicado]

Resuelto Michael asked hace 12 años • 1 respuestas

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?

Michael avatar Sep 18 '12 16:09 Michael
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.

Alexey Frunze avatar Sep 18 '2012 09:09 Alexey Frunze