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.

¿Fue útil?

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top