Domanda

Sembra che il seguente è un metodo comune dato in molti tutorial sulla commutazione un processore da 16 bit a 32 bit:

    mov     eax, cr0            ; set bit 0 in CR0-go to pmode
    or      eax, 1
    mov     cr0, eax

Perché non dovrei semplicemente effettuare le seguenti operazioni:

    or      cr0, 1

C'è qualcosa che mi manca? Forse l'unica cosa che posso pensare è che non riesco a eseguire un'operazione del genere sul registro CR0.

È stato utile?

Soluzione

L'operatore or non ha un op-code in cui può accedere registro CR0. (Non è possibile eseguire questa operazione sul registro CR0.)

Ecco perché il mov c'è:. Esiste un op-codice che può accedere al registro CR0

Altri suggerimenti

o è un operatore di confronto in cui ci vogliono in realtà due valori e crea una soluzione. La soluzione viene memorizzato in eax dopo il completamento dell'operazione o. O non può essere utilizzato un registro un deposito in quanto è un'operazione specializzata ed è governato da portata e che è il motivo per cui è buona norma prendere i suoi risultati e subito memorizzare il nuovo valore di destra dopo il completamento del processo.

Elaborare quanto detto sull'utilizzo o con operandi, non ha capacità di stoccaggio si limita esegue un'operazione su dati id già presenti. Pensare o come un pulsante su una calcolatrice in cui si ha un'operazione come aggiungere, sottrarre, moltiplicare o dividere. Il codice è il calcolatore che gestisce i buffer di memoria; ecc e utilizza i servizi di un operatore / operazione su dati all'interno dei suoi negozi di memoria e quando finito ottiene i risultati di ritorno di ulteriori operazioni o uscita finito per l'utente.

La domanda qui è una logica così come il codice in fase di ben pensato e concisa -. Roba bella

Prova questo e la forza da 1 a cr0 in 1 comando:

MOV cr0, 1
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top