naskの文法を適当にメモしてみる試み

  • SHL/SHR/SAL/SAR命令
    シフト命令です。シフトって何?という人は、とりあえず簡易な乗算/除算命令だと考えるといいでしょう。
    例:SHL EAX,2 -- EAXを左に2ビットシフト。
      ASKAによる表記:EAX <<= 2; もしくは EAX *= 4;
    SHL/SHRは符号無し演算で、SAL/SARは符号付き演算です(SHLとSALの動作に差はない)。
    第一オペランドである演算対象は、8/16/32bitのレジスタやメモリを指定できます。
    第二オペランドであるシフト回数は、定数か、もしくはCLを指定できます。
      いずれの指定でも、シフト回数は指定した値を32で割ったあまりが採用されます。
      だから32以上のシフトはできません。
    シフトで追い出されたビットはCF(キャリーフラグ)にコピーされます。0回シフトの場合、CFは不定です。
    2回以上のシフトの場合、最後のシフトで追い出されたビットがCFに残ることになります。
    当然のことですが、第一オペランドにメモリを指定する場合、BYTE/WORD/DWORDの指定を省略することはできません。
      アセンブラがデータ幅を推測する手がかりがないからです。
  • CMP命令
  • Jcc命令
  • PUSH命令
  • POP命令
  • LEA命令
  • DIV命令
  • ADD/SUB/AND/OR/XOR命令
  • INC/DEC命令
  • RET命令

こめんと欄


コメントお名前NameLink

リロード   新規 編集 差分 添付   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS
Last-modified: 2006-02-16 (木) 18:00:52 (5977d)