名前 | サイズ | 説明 |
---|---|---|
A | 4bit | Aレジスタ |
B | 4bit | Bレジスタ |
C | 1bit | キャリーフラグ |
PC | 4bit | プログラムカウンタ |
C |
|
N | オペランドサイズが4ビット |
# | 4ビットの即値データ |
INP | 入力ポート |
OUTP | 出力ポート |
* | 命令の実行によりフラグは変化 |
0 | 0にクリア |
1ステート | 1クロック |
命令群 | サイズ | ニーモニック | 機能 | C | 命令長 | ステート | 補足 |
MOV | N | MOV A,# | A ← # | 0 | 1 | 1 | |
N | MOV B,# | B ← # | 0 | 1 | 1 | ||
N | MOV A,B | A ← B | 0 | 1 | 1 | ||
N | MOV B,A | B ← A | 0 | 1 | 1 |
命令群 | サイズ | ニーモニック | 機能 | C | 命令長 | ステート | 補足 |
ADD | N | ADD A,# | A ← A + # | * | 1 | 1 | |
N | ADD B,# | A ← B + # | * | 1 | 1 |
命令群 | サイズ | ニーモニック | 機能 | C | 命令長 | ステート | 補足 |
IN | N | IN A | A ← INP | 0 | 1 | 1 | |
N | IN B | B ← INP | 0 | 1 | 1 | ||
OUT | N | OUT # | OUTP ← # | 0 | 1 | 1 | |
N | OUT B | OUTP ← B | 0 | 1 | 1 |
命令群 | サイズ | ニーモニック | 機能 | C | 命令長 | ステート | 補足 |
JMP | N | JMP # | PC ← # | 0 | 1 | 1 | |
JNC | N | JNC # | if C=0 then PC ← # | 0 | 1 | 1 |
実装済み |
未実装 |
未定義命令 |
未定義命令・未定義 |
H/L | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
0 | ADD A,0000 |
ADD A,0001 |
ADD A,0010 |
ADD A,0011 |
ADD A,0100 |
ADD A,0101 |
ADD A,0110 |
ADD A,0111 |
ADD A,1000 |
ADD A,1001 |
ADD A,1010 |
ADD A,1011 |
ADD A,1100 |
ADD A,1101 |
ADD A,1110 |
ADD A,1111 |
1 | MOV A,B |
|||||||||||||||
2 | IN A |
|||||||||||||||
3 | MOV A,0000 |
MOV A,0001 |
MOV A,0010 |
MOV A,0011 |
MOV A,0100 |
MOV A,0101 |
MOV A,0110 |
MOV A,0111 |
MOV A,1000 |
MOV A,1001 |
MOV A,1010 |
MOV A,1011 |
MOV A,1100 |
MOV A,1101 |
MOV A,1110 |
MOV A,1111 |
4 | MOV B,A |
|||||||||||||||
5 | ADD A,0000 |
ADD A,0001 |
ADD A,0010 |
ADD A,0011 |
ADD A,0100 |
ADD A,0101 |
ADD A,0110 |
ADD A,0111 |
ADD A,1000 |
ADD A,1001 |
ADD A,1010 |
ADD A,1011 |
ADD A,1100 |
ADD A,1101 |
ADD A,1110 |
ADD A,1111 |
6 | IN B |
|||||||||||||||
7 | MOV B,0000 |
MOV B,0001 |
MOV B,0010 |
MOV B,0011 |
MOV B,0100 |
MOV B,0101 |
MOV B,0110 |
MOV B,0111 |
MOV B,1000 |
MOV B,1001 |
MOV B,1010 |
MOV B,1011 |
MOV B,1100 |
MOV B,1101 |
MOV B,1110 |
MOV B,1111 |
8 | ||||||||||||||||
9 | OUT B |
|||||||||||||||
A | ||||||||||||||||
B | OUT 0000 |
OUT 0001 |
OUT 0010 |
OUT 0011 |
OUT 0100 |
OUT 0101 |
OUT 0110 |
OUT 0111 |
OUT 1000 |
OUT 1001 |
OUT 1010 |
OUT 1011 |
OUT 1100 |
OUT 1101 |
OUT 1110 |
OUT 1111 |
C | ||||||||||||||||
D | ||||||||||||||||
E | JNC 0000 |
JNC 0001 |
JNC 0010 |
JNC 0011 |
JNC 0100 |
JNC 0101 |
JNC 0110 |
JNC 0111 |
JNC 1000 |
JNC 1001 |
JNC 1010 |
JNC 1011 |
JNC 1100 |
JNC 1101 |
JNC 1110 |
JNC 1111 |
F | JMP 0000 |
JMP 0001 |
JMP 0010 |
JMP 0011 |
JMP 0100 |
JMP 0101 |
JMP 0110 |
JMP 0111 |
JMP 1000 |
JMP 1001 |
JMP 1010 |
JMP 1011 |
JMP 1100 |
JMP 1101 |
JMP 1110 |
JMP 1111 |
TD-4モジュールに、アセンブラを内蔵しています。
ソースファイル(ASM)を読み込むことで、デバッガからソースレベルのデバッグが可能になります。
以下の機能をサポートします。
疑似命令 | 引数 | 説明 | ||||||
---|---|---|---|---|---|---|---|---|
.CLOCK | 1 - 1000 | 動作周波数を指定します。 単位はHzで、1Hzから1000Hzを指定可能。 デフォルトは1。 | ||||||
.RADIX | 2 or 10 | 基数を指定します。
|
; ; サンプルプログラム1:LED ちかちか ; .CLOCK 10 ; 10Hz .RADIX 10 START: OUT %0011 OUT %0110 OUT %1100 OUT %1000 OUT %1000 OUT %1100 OUT %0110 OUT %0011 OUT %0001 JMP START
; ; サンプルプログラム2:ラーメンタイマー ; .RADIX 10 START: OUT %0111 WAIT_000: ; ADD A, 1 ; 16 回ループ JNC WAIT_000 ; WAIT_100: ; ADD A, 1 ; 16 回ループ JNC WAIT_100 ; OUT %0110 ; LED を2つ点灯 WAIT_200: ; ADD A, 1 ; 16 回ループ JNC WAIT_200 ; WAIT_300: ; ADD A, 1 ; 16 回ループ JNC WAIT_300 ; OUT %0000 ; LED を全部消灯 OUT %0100 ; LED を1つ点灯 WAIT_400: ; ADD A, 1 ; 16 回ループ JNC WAIT_400 ; OUT %1000 ; 終了の LED を点灯・ブザー ON JMP $ ; 無限ループ
今回作成するにあたり、下記書籍を参考に作成しました。