←前へ :  INDEX :  練習問題へ→


  「PUSH」「POP」関連の命令はあと4対ある。

PUSHA ( Push All ) :プッシュ オール

POPA ( Pop All ) :ポップ オール

PUSHA

   動作:PUSH AX、PUSH CX、PUSH DX、PUSH BX、PUSH SP、PUSH BP、
     PUSH SI、PUSH DIをこの順に実行する
  影響を受けるフラグ:なし
POPA

  動作:POP DI、POP SI、POP BP、POP SP、POP BX、POP DX、
     POP CX、POP AXをこの順に実行する。
  影響を受けるフラグ:なし

PUSHAD ( Push All Doublewords ) :プッシュ オール ダブルワード

POPAD ( Pop All Doublewords ) :ポップ オール ダブルワード

PUSHAD

   動作:PUSH EAX、PUSH ECX、PUSH EDX、PUSH EBX、PUSH ESP、PUSH EBP、
     PUSH ESI、PUSH EDIをこの順に実行する
  影響を受けるフラグ:なし
POPAD

  動作:POP EDI、POP ESI、POP EBP、POP ESP、POP EBX、POP EDX、
     POP ECX、POP EAXをこの順に実行する。
  影響を受けるフラグ:なし

これらは、サブルーチン内でレジスタを保存する場合などに用いられる。

PUSHF ( Push Flags ) :プッシュ フラグ

POPF ( Pop Flags ) :ポップ フラグ

PUSHF

   動作:SPを2減らし、SS:SPにFLAGSを格納
  影響を受けるフラグ:なし
POPF

   動作:SS:SPの内容をFLAGSに代入し、SPを2増やす
  影響を受けるフラグ:なし


PUSHFD ( Push Flags Doublewords ) :プッシュ フラグ ダブルワード

POPFD ( Pop Flags Doublewords ) :ポップ フラグ ダブルワード

PUSHFD

   動作:SPを4減らし、SS:SPにEFLAGSを格納
  影響を受けるフラグ:なし
POPFD

   動作:SS:SPの内容をEFLAGSに代入し、SPを4増やす
  影響を受けるフラグ:なし


  フラグの保存は、例えば「CMP」命令後、ほかの処理をしてから条件分岐をさせたい場合や、DF(7章参照)をサブルーチン内で保存したい場合などに用いる。

←前へ :  INDEX :  練習問題へ→