雑記帳
ここはhideyosiの雑記帳です。テケトーに書き散らしてるだけなので間違っていたりとは普通にしてます。信用度は相当低いことをあらかじめご了承を。またご覧のようにWikiを使ってますが、hideyosi意外は書き込めません。

アセンブラが理解できない! anchor.png

ある方が、「二日目〜三日目のあたりで挫折しそう。アセンブラについて書かれている部分の意味が全然わからない!」と言っていました。

言語やらは、わからない時はほんとうにわからないものですよね。私にも経験があります。
(逆に、一度ある部分を理解すると、それまでわからなかったのがウソのようになるものです。私の場合はC言語がそうでした)
おそらくこういう「ミソ」の部分は人それぞれでしょう。また私だって完璧に理解しているわけではないのであらゆる人に対処するなんて芸当はとてもできません。
そこで、私なりの理解の仕方をここに書こうと思います。もしかしたらこのヨソにはない私独特の方法が、どなたかの役に立つこともあるかもしれませんので。

Page Top

前置き anchor.png

  • 私は上から降りてきたタイプ
    • 「上から」という表現が正しいかどうか微妙ですが、ようするに「高級言語」と呼ばれるものからスタートし、だんだん「低級言語」に進んでいったというパターンです。具体的には、MSXパソコンのBasic −> WindowsのVisualBasic −> WindowsのHSP −> Linux等のPerlとか −> OSASKのC −> naskのアセンブラ と、こんな感じに進んできたわけです。(一応念のため書いておきますが、「高級」「低級」は単にプログラミング言語設計上の概念です。いいもの悪いものとか高度か低俗かとかそういう概念の言い回しではありませんよ)
  • 私もまずは、「まずやってみる」から始めた
    • 私もアセンブラを最初に見た時は各部分の意味を一生懸命追求しようとしてあちこち調べて回りました。しかし、よく思い出してみてください。C++やVBを始めて触った時、全てのソースの意味や内部オプションを理解した上でソフトを作りましたか?
    • たぶん4割くらいは意味不明のまま進めていったのではないでしょうか?。アセンブラも全体の理解より、まずは動く。結果を表示する。ここらへんから(いやむしろ、しばらくはここだけ)に注力してやってみるのが早いのではと思います。特に、あの本の場合は一刻も早くC言語に以降しようという趣旨なので「アセンブラでプログラムして結果を表示する」という例がとぼしいのも事実です。
    • 私のお勧めは、こんなプログラムをまず打ち込んで動かしてみることですね。
---------------------------------------------
[BITS 16]
[OPTIMIZE 1]
[OPTION 1]
[INSTRSET "8086"]
[FORMAT "BIN"]
ORG 0x100
;-----------------------------------------------------
;--- こっから上は、MS-DOSの.COMを作る時の ------------
;----おまじないだと思ってくれい!     ------------
;-----------------------------------------------------

;-------- ここにアセンブラを書く。実験部分 ----------------------

MOV AL,0x41      ;「A」のアスキーコードは41h
MOV AH,0x0e       ;BIOSのファンクション番号
INT 0x10          ;BIOSをコール!

;-----------------------------------------------------------------

;-----------------------------------------------------
;---- これがないと、暴走しちゃうぞ! -------------
;-----------------------------------------------------
;MS-DOS終了
INT 0x20

----------------------------------------------------------

このプログラムはnaskでコンパイルできます。コマンドプロンプロから

>nask test.nas test.com test.lst 

なんて具合にやればMS-DOSコマンド(ソフト)が出来ます。実行すると、画面に「A」の文字を表示して停止します。

みれば解ると思いますが、これはBIOSをコールしているだけです。しかしこれを使えばとにもかくにも画面に表示ができるので、だんだんと大掛かりに拡張してみてはいかがでしょう。その過程でイヤでも様々な文法やテクニック、計算式を使わなくてはならなくなりますので、暗記チックにアセンブラを覚えるよりもはるかに効率がいいはずですよ。

 

Last-modified: 2012-10-22 (Mon) 22:05:14 (GMT) (2818d) by