8086命令セットの細かいメモ
勉強会で教えてもらったので、忘れないようにメモ
pop csが無い理由
- 8086にはあったが、使われることがなくて廃止された。
- その結果、別の命令が割り当てられた。
- 参考
xchg ax,ax -> nop の理由
- エイリアス
- 何もしない命令なので、エイリアスがついた
- 昔からある仕様
xchg ax,ax自体はアセンブル可能- 実は、
90以外もある- 2byte以上の
nop - 複数の
nopを呼ぶコストを削減するため - http://blog.livedoor.jp/blackwingcat/archives/1598318.html
- 2byte以上の
lea ax,axなどの命令が割り当てられていないのはなぜか
lea ax,[bx]ax = bxの代入- カッコを外して代入をする命令
lea ax,[bx+5]と、ディスプレースメントつきの場合ax = bx +5の計算が1命令で出来て便利、という使い方
- そのため、
lea ax,axの命令だと、そもそもカッコがないので、この命令はありえない。- なので、この命令はない
in, out命令のword/byte切り替えについて
portの指定が1byteのままなのは何故か?
I/O空間自体は、0000 - FFFFまである
- しかし、この中で即値で指定できるのは00FFまで。
- それより上については、
dxに入れて(Variable Portで)使う。- おそらく、8080とか8bit時代の仕様を引ずっているのでは。