プロが教える店舗&オフィスのセキュリティ対策術

x86系のCPUで、リアルモードからプロテクトモード または、プロテクトモードからリアルモードに移行するアセンブラコードが知りたいです。

このあたりの情報に詳しい本をご存知の方教えてください。

A 回答 (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関連の入門書などを参照したほうが良いと思いますよ
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!