| 名前 | サイズ | 説明 |
|---|---|---|
| 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 $ ; 無限ループ
今回作成するにあたり、下記書籍を参考に作成しました。