はじめに.

アセンブラを使って Linux のプログラミングで遊んでみます.アセンブラには NASM を使用して,カーネルを直接利用することにします.

いまさらアセンブラでプログラムを作成することは,時代錯誤と感じる人も 多いかもしれません.「アセンブラでプログラミングなんて職人芸でしょう」 と思うかもしれません.

20年前では趣味のプログラミングは BASIC か アセンブラしか選択肢がありません でしたが,今ではPerl, Ruby からアセンブラまでの間に非常に多くの言語があって, アセンブラは普通では不要な最下層の知識となっていると思います. 10BaseT のツイストペアケーブルのインピーダンスを気にする人はほとんどいない ようなものでしょうか?

アセンブリ言語の学習で最も困難なのは,最近では書籍が見つからないこと かもしれません.

…と書いていましたが、また増えてきているようですね。

インテルの公式のマニュアルは日本語の情報として https://www.intel.co.jp/jp/download/index.htm 付近から以下のファイルがダウンロードできます.

量が多すぎるかもしれませんが必要な部分をひろい読みすればいいでしょう.
(どんどんファイルサイズが大きくなっていくような気が...)

また英語ですが,The Art of Assembly Language という PDF形式のファイルが https://webster.cs.ucr.edu/AoA/index.html からダウンロードできます. 4.5M と大きいですが,PDFをZIP形式でまとめたもので 提供されています. インテルのCPUに関するアセンブラの基礎から1400ページにわたって 分かりやすく解説されています.書籍とする予定がないようなのが残念です. 16ビット版は書籍になっていませんが、32bit用は書籍になっています。ただし、 HLA (High Level Assembler) という独自のアセンブラが使用されています。 16ビット版を強く推薦します. 読みとおせば,私自身よりはるかに詳しくなれるでしょう (^^;

さて,DOS でMASM, TASMを使ってプログラムを作成していた(いる)人は問題ないとして Windows で C++ や Delphi, VB の経験はあるがアセンブラの経験がない人は上記の資料 を参考にしてサンプルを1命令ずつ追っていって下さい. アセンブリ言語は非常に単純な動作をする命令が並んでいるだけです. つまり習うより慣れろです.

ここでは,とにかく 無理をしない(私が)で80x86系のアセンブラを少しでも理解できる人を 主な対象として,次のような順序で進めていく予定ですが,どうなることやら ;-)

ARMバージョンも始めました。


目次