Configuración del procesador a modo de 32 bits
Pregunta
Parece que la siguiente es un método común dado en muchos tutoriales sobre conmutación de un procesador de 16 bits a 32 bits:
mov eax, cr0 ; set bit 0 in CR0-go to pmode
or eax, 1
mov cr0, eax
¿Por qué no simplemente hacer lo siguiente:
or cr0, 1
¿Hay algo que me falta? Posiblemente lo único que ocurre es que no puedo realizar una operación de este tipo en el registro cr0.
Solución
El operador or
no tiene un código op en la que se puede acceder al registro CR0. (No es posible realizar esta operación en el registro CR0.)
Es por eso que el mov
está ahí:.-Existe un código de operación que se puede acceder al registro CR0
Otros consejos
o es un operador de comparación en que incluso se toma dos valores y crea una solución. La solución se almacena en eax después de que se complete el u operación. O no se puede utilizar un registro de un dispositivo de almacenamiento, ya que es una operación especializada y es gobernado por el alcance y es por eso que es una buena práctica para tomar sus resultados e inmediatamente almacenar el nuevo valor justo después de que se complete el proceso.
Abundando en lo que se dijo sobre el uso o con operandos, no tiene capacidad de almacenamiento simplemente realiza una operación en datos que Identificación del ya presente. Pensar o como un botón en una calculadora en donde tiene una sola operación, como sumar, restar, multiplicar o dividir. El código es la calculadora que administra los buffers de memoria; etc. y utiliza los servicios de un operador / operación en los datos dentro de sus almacenes de memoria y cuando haya terminado obtiene los resultados de retorno para otras operaciones o salida de acabado para el usuario.
La pregunta aquí es un uno lógico, así como el código está bien pensado y concisa -. Materia agradable
Probar y forzar 1 a 1 en cr0 comando:
MOV cr0, 1