TD4

レジスタ

名前サイズ説明
A 4bit Aレジスタ
B 4bit Bレジスタ
C 1bit キャリーフラグ
PC 4bit プログラムカウンタ

1. フラグ

C キャリーフラグ
1演算結果が最大値(15)を超えた
0上記以外


命令一覧表

記号の説明

1. サイズ欄

Nオペランドサイズが4ビット

2. ニーモニック欄

#4ビットの即値データ

3. 機能欄

INP 入力ポート
OUTP出力ポート

4. フラグ欄(C)

*命令の実行によりフラグは変化
00にクリア

5. ステート欄

1ステート1クロック

命令

(1) 転送
命令群サイズニーモニック機能 C命令長ステート補足
MOV N MOV A,# A ← # 01 1
N MOV B,# B ← # 01 1
N MOV A,B A ← B 01 1
N MOV B,A B ← A 01 1

(2) 算術演算
命令群サイズニーモニック機能 C命令長ステート補足
ADD N ADD A,# A ← A + # *1 1
N ADD B,# A ← B + # *1 1

(3) 入出力
命令群サイズニーモニック機能 C命令長ステート補足
IN N IN A A ← INP 01 1
N IN B B ← INP 01 1
OUT N OUT # OUTP ← # 01 1
N OUT B OUTP ← B 01 1

(4) ジャンプ
命令群サイズニーモニック機能 C命令長ステート補足
JMP N JMP # PC ← # 01 1
JNC N JNC # if C=0 then PC ← #01 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)を読み込むことで、デバッガからソースレベルのデバッグが可能になります。

以下の機能をサポートします。



疑似命令

疑似命令引数説明
.CLOCK1 - 1000動作周波数を指定します。
単位はHzで、1Hzから1000Hzを指定可能。
デフォルトは1。
.RADIX2 or 10基数を指定します。
説明
2書籍と同じ4桁の2進数。
10
  • %から始まる時は2進数(10を指定する時は、%1010)。
  • 0から始まる時は8進数(10を指定する時は、012)。
  • 0xから始まる時は16進数(10を指定する時は、0x0a)。
  • $から始まる時は16進数(10を指定する時は、$0a)。
  • 数値のみは10進数。
デフォルトは2。


サンプルプログラム1:LED ちかちか(10Hz動作)

LEDちかちか.asm

;
; サンプルプログラム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:ラーメンタイマー

ラーメンタイマー.asm

;
; サンプルプログラム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     $               ; 無限ループ


参考資料

今回作成するにあたり、下記書籍を参考に作成しました。