Cのインラインアセンブラ(86系)の紹介
(いまさらとは思いますが一応紹介させて下さい)
アセンブラを動かす環境は、
エミュレータやデバッガーなど
色々出回っていると思います。
ここでは、Windows上で
Microsoft Visual Studio
(無料ダウンロード可)
で、C言語が動かせる環境が
あることを前提としておきます。
(別のCコンパイラーでも同じ
かもしれません。)
C言語には、インラインアセンブラと
いうものがあり、簡単にアセンブラを
組込む事ができます。
面倒なことはCで書けば、すべてを
アセンブラで書くよりハードルが
下がると思います。
1~10までの合計(55)を計算する例です。
#include <stdio.h>
void main(void)
{
short sum; /* 1~10の合計(16bit) */
__asm /* 次の{}内がアセンブラ */
{
mov ax,0 ; axレジスタ(16bit)を0にする
mov cx,1 ; cxレジスタ(16bit)を1にする
L1:
add ax,cx ; ax = ax + cx (ax += cx;)
inc cx ; cx = cx + 1 (cx++; )
cmp cx,10 ; cxと10の比較
jle L1 ; cx <= 10 なら L1へ
mov sum, ax ; sum = ax (sumはメモリ)
}
printf("1-10の合計 = %d\n", sum);
getchar(); /* キー入力待ち */
}
__asm {}がインラインアセンブラです。
(別のコンパイラーでは _ が1つ
または、無しだった記憶がありますが、
勘違いかもしれません)
WindowsのConsoleアプリケーション
(consoleアプリでコンパイルしたexeファイル)
は、実行が終了すると表示していたウインドウが
閉じてしまい、結果が分からなくなるので、
最後にキー入力待ちをしています。