computer system foundation
CSF 2026
アセンブリ入門
演習一覧
演習2
演習3 CPU
演習4
最終課題
CPU SIM
例:
足し算
ループ
条件分岐
アセンブリ入門 ↗
2
機械語に変換
アセンブル
未アセンブル
→
3
実行
1ステップ
自動実行
停止
リセット
速度
ゆっくり(1命令 10.0秒)
1
アセンブリを書く
LOAD A, 12 LOAD B, 7 ADD A, B OUT A HALT
実行サイクル (Fetch → Decode → Execute → Memory → Write-back)
1
Fetch
—
→
2
Decode
—
→
3
Execute
—
→
4
Memory
—
→
5
W-back
—
どの命令もこの5段を必ず順に通る。メモリを使わない命令(ADD など)は Memory 段で何もせず
素通り
する ─ 段が消えるわけではない。
レジスタ・フラグ・出力
A
0
0x
00
B
0
0x
00
C
0
0x
00
D
0
0x
00
PC
0
命令ptr
Z=0
Zero
N=0
Neg
C=0
Carry
OUT 出力
実行した命令数
0
設計書にコピー
メモリ RAM (16 bytes)
命令リスト
— アセンブル前 —
実行ログ
クリア
— 待機中 —
ミッション(好きな順に取り組める)
0 / 5
命令セットリファレンス(クリックで開く)
命令
構文
説明
LOAD
LOAD Rx, 値
レジスタ Rx に即値を格納
LOAD
LOAD Rx, [addr]
メモリ addr の値を Rx に読み込む(0x00〜0x0F)
STORE
STORE Rx, [addr]
Rx の値をメモリ [addr] に書き込む([0x00]〜[0x0F]。addr だけでも可)
ADD
ADD Rx, Ry
Rx = Rx + Ry(フラグ更新)
SUB
SUB Rx, Ry
Rx = Rx − Ry(フラグ更新)
MUL
MUL Rx, Ry
Rx = Rx × Ry(8ビット下位)
MOV
MOV Rx, Ry
Rx = Ry(コピー)
CMP
CMP Rx, Ry
比較してフラグだけ更新(値変化なし)
JMP
JMP label
label へ無条件ジャンプ
JEQ
JEQ label
Z=1 なら label へジャンプ
JGT
JGT label
N=0 かつ Z=0 なら label へジャンプ
OUT
OUT Rx
Rx の値を出力
HALT
HALT
プログラム終了
コメント
:
;
から行末まで無視される
ラベル
:
loop:
のように
:
で終わる行
メモリアドレス
:
0x00
〜
0x0F