32ビットモードにプロセッサを設定します
質問
これは、次の32ビットを16ビットのプロセッサを切り替えに多くのチュートリアルに示す一般的な方法であると思われます:
mov eax, cr0 ; set bit 0 in CR0-go to pmode
or eax, 1
mov cr0, eax
なぜ私は単純に次のことをしないだろう。
or cr0, 1
私は欠けているものはありますか?おそらく私は考えることができる唯一のことは、私はCR0レジスタにこのような操作を行うことができないということです。
解決
or
演算子は、CR0レジスタにアクセスすることが可能な演算コードを持っていません。 (これは、CR0レジスタに対してこの操作を実行することはできません。)
mov
がある理由です。
他のヒント
またはそれが実際に2つの値を取り、溶液を作成し、比較演算子です。または操作が完了した後、溶液をeaxレジスタに格納されます。それは専門的な操作であり、範囲によって支配し、その結果を取得し、すぐに右のプロセスが完了した後に、新しい値を保存することをお勧めします理由ですされるか、記憶レジスタを使用することはできません。
は使用について又はオペランドと言われたものにエラボレーション、それは単にID既に存在するデータに対する操作を行うストレージのための容量を有していません。のか、それが追加、減算、乗算や除算のような一つの操作を持っている電卓のボタンのように考えます。コードは、メモリ・バッファを管理計算機です。等、そのメモリストア内のデータに対する操作者/操作のサービスを利用したときに完成し、ユーザにさらに操作または完成出力の戻り結果を取得します。
ここでの質問は論理1であるだけでなく、コードはよく考え抜かと簡潔さ - 。素敵なもの
これを試してみて、1つのコマンドでCR0に1を強制ます:
MOV cr0, 1
所属していません StackOverflow