雑記帳
ここはhideyosiの雑記帳です。テケトーに書き散らしてるだけなので間違っていたりとは普通にしてます。信用度は相当低いことをあらかじめご了承を。またご覧のようにWikiを使ってますが、hideyosi意外は書き込めません。
3: 2007-01-10 (水) 21:40:55 ソース バックアップ No.3 を復元して編集 現: 2024-01-06 (土) 22:39:13 ソース 編集
Line 15: Line 15:
 10111000,00010000 , 00000101,00001000  10111000,00010000 , 00000101,00001000
 + 
 └────────┘ └───────┘  └────────┘ └───────┘
 AXに16をセットしろ  !AXの値に8を足せ!  AXに16をセットしろ  !AXの値に8を足せ!
Line 38: Line 38:
 B8,10,    ← B8が「AXに値を入れろ!」という命令。後ろの10は10進数で16。  B8,10,    ← B8が「AXに値を入れろ!」という命令。後ろの10は10進数で16。
 05,08   ← 05が「AXの値と足し算しろ!」という命令。後ろの08が足す数。  05,08   ← 05が「AXの値と足し算しろ!」という命令。後ろの08が足す数。
 + 
うーん。こういうふうに命令ごとに縦に割って書けばだいぶ解りやすくなってきましたね?。でも、やっぱり「足し算は05だ!」とか「代入はB8だ!」なんて、とても覚えていられませんよね?。こういう機械的な翻訳が得意な道具ってないかな・・・は! そうだ! あった!! ''コンピューターだ!!'' うーん。こういうふうに命令ごとに縦に割って書けばだいぶ解りやすくなってきましたね?。でも、やっぱり「足し算は05だ!」とか「代入はB8だ!」なんて、とても覚えていられませんよね?。こういう機械的な翻訳が得意な道具ってないかな・・・は! そうだ! あった!! ''コンピューターだ!!''
ここで、''アセンブラ言語''が考え出されました。B8とか05とかじゃわからない(覚えきれない)けど、MoveとかAddとかJumpとかならなんとか覚えられるよね?。あと、数値も10進数でも16進数でも2進数でも自由に書けたら後でチェックする時にも楽じゃない?。そんなわけで、アセンブラ登場!。(しかし、上記に書いた通り、Moveとか言ってもコンピュータにはわからない。ちゃんと最後は2進数に変換してやらないといけないんですよね。これが変わったわけではないのです) ここで、''アセンブラ言語''が考え出されました。B8とか05とかじゃわからない(覚えきれない)けど、MoveとかAddとかJumpとかならなんとか覚えられるよね?。あと、数値も10進数でも16進数でも2進数でも自由に書けたら後でチェックする時にも楽じゃない?。そんなわけで、アセンブラ登場!。(しかし、上記に書いた通り、Moveとか言ってもコンピュータにはわからない。ちゃんと最後は2進数に変換してやらないといけないんですよね。これが変わったわけではないのです)
 アセンブラ言語で書く                マシン語できた〜!  アセンブラ言語で書く                マシン語できた〜!
 + 
 ┌──────┐      アセンブラプログラム      ┌────┐  ┌──────┐      アセンブラプログラム      ┌────┐
 │MOV    AX,16│ →  が翻訳してくれる。        →  │B5,10  │  │MOV    AX,16│ →  が翻訳してくれる。        →  │B5,10  │
Line 55: Line 55:
 アセンブラ言語で書く                マシン語できた〜!  アセンブラ言語で書く                マシン語できた〜!
 + 
 ┌────────┐    アセンブラプログラム    ┌──────┐  ┌────────┐    アセンブラプログラム    ┌──────┐
 │ADD    CX,0x1234│→  が翻訳してくれる。    →  │81,C1,34,12 │  │ADD    CX,0x1234│→  が翻訳してくれる。    →  │81,C1,34,12 │
Line 100: Line 100:
--画面になにか表示する --画面になにか表示する
--キーボードやマウス等からの信号を受け付ける --キーボードやマウス等からの信号を受け付ける
 +
こういったことは、''純粋な意味でのC言語''では、一切できないのです。 こういったことは、''純粋な意味でのC言語''では、一切できないのです。
Line 115: Line 116:
 ソースファイル              Cコンパイラ  ソースファイル              Cコンパイラ
 + 
 Main(){                    ←ふむ。最初に実行される関数だね。  Main(){                    ←ふむ。最初に実行される関数だね。
   int a;                  ← 変数の定義か。これはできるぞ!    int a;                  ← 変数の定義か。これはできるぞ!
Line 128: Line 129:
 ソースファイル              Cコンパイラ  ソースファイル              Cコンパイラ
 + 
 <#include stdio.h>          ←ふむ。stdio.hというファイルを読もう。なになに?いろんな関数があるなぁ。  <#include stdio.h>          ←ふむ。stdio.hというファイルを読もう。なになに?いろんな関数があるなぁ。
 + 
 Main(){                    ←ふむ。最初に実行される関数だね。  Main(){                    ←ふむ。最初に実行される関数だね。
   int a;                  ← 変数の定義か。これはできるぞ!    int a;                  ← 変数の定義か。これはできるぞ!