Intel 80286
GDTR (Global Descriptor Table Regsister)
IDTR (Interrupt Descriptor Table Regsister)
LDTR (Local Descriptor Table Regsister)
TR (Task Register)
8086では割り込みは、割り込み4まで定義されており、80286では割り込み5以降が追加された。割り込み5から31まではインテル予約済みであったが、IBM PCでは割り込み8から15までを8259A経由の外部割込みに割り当てていた。プロテクトモードのOS/2などは8259Aの割り込み番号を別の値に変更する。
割り込み0:除算エラー
除算命令(DIV, IDIV)で0で割ろうとした場合や商が大きすぎてレジスタに収まらない場合に発生する。
割り込み1:シングルステップ割り込み
割り込み2:NMI(マスク不可能割り込み)
割り込み3:ブレークポイント割り込み
割り込み4:INTOオーバーフロー
割り込み5:バウンドチェック
BOUND命令に指定されたオペランドが、配列の範囲外に出ていると発生する。
割り込み6:無効オペコード
割り込み7:コプロセッサ不在
タスクスイッチ後、または、80287が装着されていないときに80287の命令を実行すると発生する。
割り込み8:ダブルフォルト
例外を処理しているときにさらに別の例外が発生し処理できなくなったときに発生する。
割り込み9:コプロセッサ・セグメント・オーバーラン
割り込み10:無効タスク・ステート・セグメント
割り込み11:セグメント不在
bit12・13を用いる2ビット分のフラグで、0から3までのフラグ状態を持ち、いわゆるIO特権レベルを表す。通常はPOPF命令でなければ変更できない。
MSWのbit3。タスク切り替え時にセットされる。
80286はリアルモードにおいて8086や80186と高い互換性を持つものの、完全に等価というわけではない。異なる点としては、80286以降ではPUSH SP命令の挙動が変更されている。また既存命令の組み合わせであっても、プロテクトモード上では挙動の異なる場合がある。
このほか変更点として、シフト・ローテイト命令で指定できるCLレジスタの値や即値が31以下に限定されるようになった。指定できる値は8ビットだが、実際には下位5ビット分しか使われない。この変更は80186も同様だが、V30では適用されておらず、8086相当の挙動となる。例えばシフト命令で31(16進数で0x1F)を超える値を指定した場合、8086やV30では演算結果が必ずゼロになるが、80186/286以降では32で割った余剰の分だけシフト演算される。
8086ではFPU命令の実行中はWAIT命令でCPUを止めておく必要があったが、80186以降ではその必要が無くなった。また、LOCK命令はもともとあらゆる命令においてバスをロックできる仕様だったが、80286以降ではロックできる命令とできない命令が決められている。