KUE-CHIP2 (Kyoto University Education Chip2)は, 大学などでの計算機教育のための教材として開発された8ビットマイクロプロセッサです. KUE-CHIP2は, きわめて単純なアーキテクチャを持ち基本的な命令セットを備えています.
KUE-CHIP2教育用ボードを用いれば,1クロックずつ,あるいは1命令ずつプログラムを実行しながら, 実行中のレジスタやメモリの状態を観察したり,変更することが可能となります.
KUE-CHIP2教育用ボードは,ASTEMによって製造,販売がされています. 詳しくは ASTEM Home Page をご覧ください.
【注】KUE-CHIP2は2025年3月末をもって頒布完了になっています.
すべて「KUE-CHIP2教育用ボードリファレンスマニュアル」からの抜粋です
ACC | アキュミュレータ |
IX | インデックスレジスタ |
d | 即値アドレス |
[d] | 絶対アドレス(プログラム領域) |
(d) | 絶対アドレス(データ領域) |
[IX+d] | インデックス修飾アドレス(プログラム領域) |
(IX+d) | インデックス修飾アドレス(データ領域) |
{ea} | 全てのアドレスモード |
{reg} | レジスタアドレスモード |
{imm} | 即値アドレスモード |
{ma} | メモリ参照アドレスモード |
ACC | IX | d | [d] | (d) | [IX+d] | (IX+d) | |
{ea} | ◯ | ◯ | ◯ | ◯ | ◯ | ◯ | ◯ |
{reg} | ◯ | ◯ | ⨯ | ⨯ | ⨯ | ⨯ | ⨯ |
{imm} | ⨯ | ⨯ | ◯ | ⨯ | ⨯ | ⨯ | ⨯ |
{ma} | ⨯ | ⨯ | ⨯ | ◯ | ◯ | ◯ | ◯ |
略記号 | アドレスモード | 命令機能 | |
---|---|---|---|
HLT NOP |
Halt No OPeration |
||
IN OUT |
INput OUTput |
||
SCF RCF |
Set Carry Flag Reset Carry Flag |
||
LD ST |
{reg},{ea} {reg},{ma} |
LoaD STore |
|
ADD ADC SUB SBC CMP AND OR EOR |
{reg},{ea} {reg},{ea} {reg},{ea} {reg},{ea} {reg},{ea} {reg},{ea} {reg},{ea} {reg},{ea} |
ADD ADd with Carry SUBtract SuBtract with Carry CoMPare AND OR Exclusive OR |
|
Ssm Rsm |
{reg} {reg} |
Shift Rotate | |
sm | RA LA RL LL |
Right Arithmetically Left Arithmerically Right Logically Left Logically |
|
Bcc | {imm} | Branch | |
cc | A VF NZ Z ZP N P ZN NI NO NC C GE LT GT LE |
Always on oVerFlow on Not Zero on Zero on Zero or Positive on Negative on Positive on Zero or Negative on No Input on No Output on No Carry on Carry on Greater than or Equal on Less Than on Greater Than on Less than or Equal |
略記号 | 命令コード(1語目) | B'(2語目) | 命令機能の概略 | |
---|---|---|---|---|
NOP | 0 0 0 0 0 - - - |
⨯ | No OPeration | |
HLT | 0 0 0 0 1 - - - |
⨯ | HaLT | 停止 |
0 1 0 1 - - - - |
⨯ | 未使用(HLT) | ||
OUT | 0 0 0 1 0 - - - |
⨯ | OUTput | (ACC)→OBUF |
IN | 0 0 0 1 1 - - - |
⨯ | INput | (IBUF)→ACC |
RCF | 0 0 1 0 0 - - - |
⨯ | Reset CF | 0→CF |
SCF | 0 0 1 0 1 - - - |
⨯ | Set CF | 1→CF |
Bcc | 0 0 1 1 cc |
⦾ | Branch cc | 条件が成立すればB'→PC |
Ssm | 0 1 0 0 A 0 sm |
⨯ | Shift sm | (A)→shift, rotate→A はみ出したビット→CF |
Rsm | 0 1 0 0 A 1 sm |
⨯ | Rotate sm | |
LD | 0 1 1 0 A B |
◯ | LoaD | (B)→A |
ST | 0 1 1 1 A B |
⦾ | STore | (A)→B |
SBC | 1 0 0 0 A B |
◯ | SuBtract with Carry | (A)-(B)-CF→A |
ADC | 1 0 0 1 A B |
◯ | ADd with Carry | (A)+(B)+CF→A |
SUB | 1 0 1 0 A B |
◯ | SUBtract | (A)-(B)→A |
ADD | 1 0 1 1 A B |
◯ | ADD | (A)+(B)→A |
EOR | 1 1 0 0 A B |
◯ | Exclusive OR | (A)⨁(B)→A |
OR | 1 1 0 1 A B |
◯ | OR | (A)∨(B)→A |
AND | 1 1 1 0 A B |
◯ | AND | (A)∧(B)→A |
CMP | 1 1 1 1 A B |
◯ | CoMPare | (A)-(B) |
0
: ACC1
: IX000
: ACC001
: IX01-
: d(即値アドレス)100
: [d](絶対アドレス)101
: (d)(絶対アドレス)110
: [IX+d](インデックス修飾アドレス)111
: (IX+d)(インデックス修飾アドレス)A | 0 0 0 0 |
Always |
VF | 1 0 0 0 |
on oVerFlow |
NZ | 0 0 0 1 |
on Not Zero |
Z | 1 0 0 1 |
on Zero |
ZP | 0 0 1 0 |
on Zero or Positive |
N | 1 0 1 0 |
on Negative |
P | 0 0 1 1 |
on Positive |
ZN | 1 0 1 1 |
on Zero or Negative |
NI | 0 1 0 0 |
on No Input |
NO | 1 1 0 0 |
on No Output |
NC | 0 1 0 1 |
on Not Carry |
C | 1 1 0 1 |
on Carry |
GE | 0 1 1 0 |
on Greater than or Equal |
LT | 1 1 1 0 |
on Less Than |
GT | 0 1 1 1 |
on Greater Than |
LE | 1 1 1 1 |
on Less than or Equal |
RA | 0 0 |
Right Arithmetically |
LA | 0 1 |
Left Arithmetically |
RL | 1 0 |
Right Logically |
LL | 1 1 |
Left Logically |
略記号 | 概略 | ビット操作 |
---|---|---|
SRA | Shift Right Arithmetically | |
SLA† | Shift Left Arithmetically | |
SRL | Shift Right Logically | |
SLL† | Shift Left Logically | |
RRA | Rotate Right Arithmetically | |
RLA | Rotate Left Arithmetically | |
RRL | Rotate Right Logically | |
RLL | Rotate Left Logically |
† SLAとSLLでは,実行後のフラグの状態が異なる(フラグ機能参照)
CF: Carry Flag, VF: oVerflow Flag, NF: Negative Flag, ZF: Zero Flag
略記号 | 命令機能の概略 | 実行への影響† | 実行後の状態‡ | ||||||
---|---|---|---|---|---|---|---|---|---|
CF | VF | NF | ZF | CF | VF | NF | ZF | ||
NOP | No OPeration | - | - | - | - | - | - | - | - |
HLT | HaLT | - | - | - | - | - | - | - | - |
OUT | OUTput | - | - | - | - | - | - | - | - |
IN | INput | - | - | - | - | - | - | - | - |
RCF | Reset Carry Flag | - | - | - | - | 0 | - | - | - |
SCF | Set Carry Flag | - | - | - | - | 1 | - | - | - |
SRA | Shift Right Arithmetically | - | - | - | - | b0 | 0 | N | Z |
SLA | Shift Left Arithmetically | - | - | - | - | b7 | V | N | Z |
SRL | Shift Right Logically | - | - | - | - | b0 | 0 | N | Z |
SLL | Shift Left Logically | - | - | - | - | b7 | 0 | N | Z |
RRA | Rotate Right Arithmetically | b7 | - | - | - | b0 | 0 | N | Z |
RLA | Rotate Left Arithmetically | b0 | - | - | - | b7 | V | N | Z |
RRL | Rotate Right Logically | - | - | - | - | b0 | 0 | N | Z |
RLL | Rotate Left Logically | - | - | - | - | b7 | 0 | N | Z |
LD | LoaD | - | - | - | - | - | - | - | - |
ST | STore | - | - | - | - | - | - | - | - |
SBC | SuBtract with Carry | c | - | - | - | C | V | N | Z |
ADC | ADd with Carry | c | - | - | - | C | V | N | Z |
SUB | SUBtract | - | - | - | - | - | V | N | Z |
ADD | ADD | - | - | - | - | - | V | N | Z |
EOR | Exclusive OR | - | - | - | - | - | 0 | N | Z |
OR | OR | - | - | - | - | - | 0 | N | Z |
AND | AND | - | - | - | - | - | 0 | N | Z |
CMP | CoMPare | - | - | - | - | - | V | N | Z |
BA | Branch Always | - | - | - | - | - | - | - | - |
BVF | Branch on oVerFlow | - | VF | - | - | - | - | - | - |
BNZ | Branch on Not Zero | - | - | - | ZF |
- | - | - | - |
BZ | Branch on Zero | - | - | - | ZF | - | - | - | - |
BZP | Branch on Zero or Positive | - | - | NF | - | - | - | - | - |
BN | Branch on Negative | - | - | NF | - | - | - | - | - |
BP | Branch on Positive | - | - | NF∨ZF |
- | - | - | - | |
BZN | Branch on Zero or Negative | - | - | NF∨ZF | - | - | - | - | |
BNI | Branch on No Input | - | - | - | - | - | - | - | - |
BNO | Branch on No Output | - | - | - | - | - | - | - | - |
BNC | Branch on Not Carry | CF | - | - | - | - | - | - | - |
BC | Branch on Carry | CF | - | - | - | - | - | - | - |
BGE | Branch on Greater than or Equal | - | VF⨁NF | - | - | - | - | - | |
BLT | Branch on Less Than | - | VF⨁NF | - | - | - | - | - | |
BGT | Branch on Greater Than | - | (VF⨁NF)∨ZF |
- | - | - | - | ||
BLE | Branch on Less than or Equal | - | (VF⨁NF)∨ZF | - | - | - | - |
ACC | IX | d | [d] | (d) | [IX+d] | (IX+d) | |
LD ACC, | 60 | 61 | 62 | 64 | 65 | 66 | 67 |
ST ACC, | - | - | - | 74 | 75 | 76 | 77 |
SBC ACC, | 80 | 81 | 82 | 84 | 85 | 86 | 87 |
ADC ACC, | 90 | 91 | 92 | 94 | 95 | 96 | 97 |
SUB ACC, | A0 | A1 | A2 | A4 | A5 | A6 | A7 |
ADD ACC, | B0 | B1 | B2 | B4 | B5 | B6 | B7 |
EOR ACC, | C0 | C1 | C2 | C4 | C5 | C6 | C7 |
OR ACC, | D0 | D1 | D2 | D4 | D5 | D6 | D7 |
AND ACC, | E0 | E1 | E2 | E4 | E5 | E6 | E7 |
CMP ACC, | F0 | F1 | F2 | F4 | F5 | F6 | F7 |
ACC | IX | d | [d] | (d) | [IX+d] | (IX+d) | |
LD IX, | 68 | 69 | 6A | 6C | 6D | 6E | 6F |
ST IX, | - | - | - | 7C | 7D | 7E | 7F |
SBC IX, | 88 | 89 | 8A | 8C | 8D | 8E | 8F |
ADC IX, | 98 | 99 | 9A | 9C | 9D | 9E | 9F |
SUB IX, | A8 | A9 | AA | AC | AD | AE | AF |
ADD IX, | B8 | B9 | BA | BC | BD | BE | BF |
EOR IX, | C8 | C9 | CA | CC | CD | CE | CF |
OR IX, | D8 | D9 | DA | DC | DD | DE | DF |
AND IX, | E8 | E9 | EA | EC | ED | EE | EF |
CMP IX, | F8 | F9 | FA | FC | FD | FE | FF |
ACC | IX | |
SRA | 40 | 48 |
SLA | 41 | 49 |
SRL | 42 | 4A |
SLL | 43 | 4B |
RRA | 44 | 4C |
RLA | 45 | 4D |
RRL | 46 | 4E |
RLL | 47 | 4F |
BA | 30 |
BVF | 38 |
BNZ | 31 |
BZP | 32 |
BP | 33 |
BNI | 34 |
BNC | 35 |
BGE | 36 |
BGT | 37 |
BZ | 39 |
BN | 3A |
BZN | 3B |
BNO | 3C |
BC | 3D |
BLT | 3E |
BLE | 3F |
NOP | 00 |
HLT | 0F |
OUT | 10 |
IN | 1F |
RCF | 20 |
SCF | 2F |
KUE-CHIP2教育用ボード はプロセッサの動作を理解するのに非常に有効なものです. しかしユーザとのインタフェースに関しては,主としていくつかのボタンとスイッチ, 7セグメントによる2種類の表示部しかありません.
これだけのインターフェースでプログラムの入力やデータの表示, プログラムの動作確認などを行うのはやはり簡単ではありません. そこで,このKUE-CHIP2 の命令セットをソフトウェアでシミュレートすることによって この点を改善し,さらにハードウェアでは実現することの困難な
といった機能を追加しました.
また,このシミュレータはJavaによるアプレットとして記述されています. したがって,Javaに対応したブラウザがあれば, ユーザの計算機環境に依存せず,Internetを通じていつでもだれでも 利用することができます. また,Javaのアプレット であるためある特定のサーバに対する負荷も軽減できます.