* 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命令
 
 * こめんと欄
 #comment

リロード   新規 編集 差分 添付   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS