• 締切済み

x86系でリアル←→プロテクトモードに移行するアセンブラコードが知りたい。

x86系のCPUで、リアルモードからプロテクトモード または、プロテクトモードからリアルモードに移行するアセンブラコードが知りたいです。 このあたりの情報に詳しい本をご存知の方教えてください。

みんなの回答

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

x86の場合 コントロールレジスタCR0の ビット0(PEビット)のOn/Offで プロテクトモード・リアルモードの切り替えが出来ます ; リアル -> プロテクト .386p _TEXT Segment byte public use16 ' CODE' assume cs:_TEXT public _RealToProto _RealToProto proc near   push bp   mov bp, sp   cli   mov eax, cr0   or eax, 1   mov cr0, eax   jmp flush_q1 flush_q1:   pop bp;   ret _RealToProto Endp _TEXT ends   end ; プロテクト -> リアル .386p   _TEXT Segment byte public use16 ' CODE'   assume cs:_TEXT public _ProtoToReal _ProtoToReal proc near   push bp   mov bp, sp   mov eax, cr0   and eax, 0fffffffeh   mov cr0, eax   jump flush_q2 flush_q2:   pop bp   ret _ProtoToReal endp _TEXT ends   end といった具合です 上記のコードは単にモードを切り替えているだけです このほかにもDS、SS、ESなどのレジスタ操作もしなくてはいけないと思います 486関連の入門書などを参照したほうが良いと思いますよ

関連するQ&A