00009300...一連のレジスタとそこにセットされている値が表示されました。(これのセグメントレジスタの表記がちょっとわからない。コマンドを入力します。いうコマンドになります。場合以下のように書けます。資料が十分参考になりそうです。レジスタをセットし直しています。上のアセンブリファイルにアセンブラ、リンカを通せば実行ファイルが作成されます。本が初めてだったのですが、そこで記述されているアセンブリと上のコードはちょっと様子が違って見えます。簡略化セグメントというのを使用した形式のようです。上と同じ記述を簡略化セグメントを使用しないで書き換えてみたコードが下記になります。一つのセグメントを定義します。このように自分で明確にセグメントを定義する形式だと、何となく実行時どのようにプログラムが配置されるかもイメージできますね。発生させるための命令です。番の割り込み処理ルーチンを実行するということになります。コールするために使用されます。レジスタにセットした値に応じて異なる処理を実行します。処理によっては指定されたレジスタを介して値の受け渡しを行います。おいては権限という概念が無いためかも。割り込みを使用しました。具体的にはパラメータの渡し方や計算結果の受け取り方等を定めます。普段高級言語だけでプログラムを書いている場合全く気にしないレイヤの話ですが、今回のようにアセンブリ言語でサブルーチンを記述する場合は必要になる知識です。関数を呼べたりその逆も可能になります。項がわかりやすくまとめられていて参考になると思います。それぞれに守るべきルールを定めています。サブルーチン前後でその値が変更されないと想定できる一方で、保持されないレジスタについては必要であれば自分で別途値を保存しておく必要があります。レジスタの値を保持しています。ローカル変数が並ぶといった感じになるのでパラメータへのアクセスの見通しがよくなります。実行前のスタック、レジスタの状態を見ると以下のようになります。アクセスできることがわかります。関数定義でいう右から順にスタックに積まれています。レジスタにセットしています。レジスタを使用する例を見てみます。呼び出し前後で保持すべきレジスタです。足した結果を返すという関数を定義します。ここでは例として使用するために多少冗長な実装をしています。レジスタの値をスタックに格納しています。実行後のスタックの状態は以下のようになります。いう想定通りの値が渡されていることがわかります。コンパイルしているためだと思います。分あれば任意のメモリ番地を特定することができます。必要なはずで、実際に試してみると確かにそのようになっています。サイズになるようです。積まれていることがわかります。つければ良さそうです。セグメントに配置しないとだめでした。