Appendix 1Program ListingsMM-8000 のモニタープログラムリスト
Elenco Electronics社のコンピュータートレーニングボード MICRO-MASTER MM-8000 の Appendix 1 に関するメモです.ここでは,モニタープログラムのソースコード示します.(参照:MM-8000のマニュアルのAPPENDIX 1).
目次
PROGRAM 1
表1に示すプログラム 1 は,モニタープログラムの初期化のセクションです.LESSON 10 で学習する内容で,その図 1 にフローチャートが示されています.また,Appendix 2 の PROGRAM 1 に動作の詳細の説明があります.
プログラム 1
名前 |
ステップ |
アドレス(16進, 2進) |
ニーモニック |
コード(16進, 2進) |
コメント |
START |
10-1 |
0000 |
0000 0000 0000 0000 |
JMP |
C3 |
1100 0011 |
INITへジャンプ |
0001 |
0000 0000 0000 0001 |
INIT |
60 |
0110 0000 |
0002 |
0000 0000 0000 0010 |
00 |
0000 0000 |
アドレス0040-004Fのパターン表とアドレス0050-005Fのファンクション表について,Appendix 1の後半のページを参照ください. |
INIT |
10-2 |
0060 |
0000 0000 0110 0000 |
LXI DE |
11 |
0001 0001 |
RAMにコピーするROMの最初のアドレスをD-Eレジスターにロードする. |
0061 |
0000 0000 0110 0001 |
0A |
0000 1010 |
0062 |
0000 0000 0110 0010 |
01 |
0000 0001 |
10-3 |
0063 |
0000 0000 0110 0011 |
LXI HL |
21 |
0010 0001 |
RAMの最初のアドレスをH-Lにロード. |
0064 |
0000 0000 0110 0100 |
DC |
1101 1100 |
0065 |
0000 0000 0110 0101 |
80 |
1000 0000 |
COPY |
10-4 |
0066 |
0000 0000 0110 0110 |
LDAX DE |
1A |
0001 1010 |
ROMから1バイトをAにコピー. |
10-5 |
0067 |
0000 0000 0110 0111 |
MOV MA |
77 |
0111 0111 |
RAMにストアー. |
10-6 |
0068 |
0000 0000 0110 1000 |
INX HL |
13 |
0001 0011 |
H-LとD-Eをひとつ増加. |
0069 |
0000 0000 0110 1001 |
INX DE |
23 |
0010 0011 |
10-7 |
006A |
0000 0000 0110 1010 |
MOV AL |
7D |
0111 1101 |
RAMのアドレスがコピーされるアドレスを超えた場合,Zフラグをセット. |
006B |
0000 0000 0110 1011 |
CPI |
FE |
1111 1110 |
006C |
0000 0000 0110 1100 |
00 |
0000 0000 |
10-8 |
006D |
0000 0000 0110 1101 |
JNZ |
C2 |
1100 0010 |
Zフラグをセットされていなければ,後ろに戻り次のバイトをコピー. |
006E |
0000 0000 0110 1110 |
COPY |
66 |
0110 0110 |
006F |
0000 0000 0110 1111 |
00 |
0000 0000 |
10-9 |
0070 |
0000 0000 0111 0000 |
MVI A |
3E |
0011 1110 |
セット: ポートA:入力(キーボード) ポートB:出力(ディスプレイ) ポートC:出力(キーボード) |
0071 |
0000 0000 0111 0001 |
0E |
0000 1110 |
0072 |
0000 0000 0111 0010 |
OUT |
D3 |
1101 0011 |
0073 |
0000 0000 0111 0011 |
80 |
1000 0000 |
|
10-10* |
0074 |
0000 0000 0111 0100 |
HLT |
76 |
0111 0110 |
停止. |
* この命令はプログラム1のみで使われる.プログラム2のアドレス0074によって,置き換えられる.
PROGRAM 2
以下プログラムは,Lesson 11の「遅延/ディスプレイルーチン」で学習する内容です.フォローチャートは,Lesson 11の図3に示されています.
プログラム 2
名前 |
ステップ |
アドレス(16進, 2進) |
ニーモニック |
コード(16進, 2進) |
コメント |
Link |
|
0074 |
0000 0000 0111 0100 |
JMP |
C3 |
1100 0011 |
この命令はプログラム1と2をリンクする.プログラム1の 0074 HLT と置き換わる. |
0075 |
0000 0000 0111 0101 |
Delay |
EC |
1110 1100 |
0076 |
0000 0000 0111 0110 |
80 |
1000 0000 |
DISP |
11B-1 |
0077 |
0000 0000 0111 0111 |
LHLD |
2A |
0010 1010 |
HL レジスターに MODE H と MODE L をロードする. |
0078 |
0000 0000 0111 1000 |
FA |
1111 1010 |
0079 |
0000 0000 0111 1001 |
80 |
1000 0000 |
007A |
0000 0000 0111 1010 |
INP |
DB |
1101 1011 |
ポート C から入力 |
007B |
0000 0000 0111 1011 |
83 |
1000 0011 |
007C |
0000 0000 0111 1100 |
XRI |
EE |
1110 1110 |
ディスプレイを変えるためにビット0のみ反転 |
007D |
0000 0000 0111 1101 |
01 |
0000 0001 |
007E |
0000 0000 0111 1110 |
MOV BA |
47 |
0100 0111 |
ポートCをレジスターBに |
11B-2a |
007F |
0000 0000 0111 1111 |
XRA L |
AD |
1010 1101 |
C0=1:[DA∧DISP1]∨ [AL∧DISP2]∨[AH∧DISP1] |
0080 |
0000 0000 1000 0000 |
MOV CA |
4F |
0100 1111 |
11B-2b |
0081 |
0000 0000 1000 0001 |
MOV AL |
7D |
0111 1101 |
A0=1:AL∨AH |
0082 |
0000 0000 1000 0010 |
RRC |
0F |
0000 1111 |
0083 |
0000 0000 1000 0011 |
ADC H |
8C |
1000 1100 |
11B-2c |
0084 |
0000 0000 1000 0100 |
ANA C |
A1 |
1010 0001 |
A0=1:[AL∧DISP2]∨[AH∧DISP1] |
11B-2d |
0085 |
0000 0000 1000 0101 |
CMA |
2F |
0010 1111 |
Aの補数 |
11B-2e |
0086 |
0000 0000 1000 0110 |
ANI |
E6 |
1110 0110 |
A0を除いてマスク.A0=1:DA∨[AL∧DISP1]∨[AH∧DISP2] |
0087 |
0000 0000 1000 0111 |
01 |
0000 0001 |
0088 |
0000 0000 1000 1000 |
NOP |
00 |
0000 0000 |
|
0089 |
0000 0000 1000 1001 |
MOV CA |
4F |
0100 1111 |
レジスタGに小数点バイトを保管 |
11B-3 |
008A |
0000 0000 1000 1010 |
MOV AB |
78 |
0111 1000 |
出力する左側のデジットのフラグ |
008B |
0000 0000 1000 1011 |
RRC |
0F |
0000 1111 |
11B-4 |
008C |
0000 0000 1000 1100 |
MOV AM |
7E |
0111 1110 |
ディスプレイバイトの取得 |
11B-5 |
008D |
0000 0000 1000 1101 |
JNC |
D2 |
1101 0010 |
ディスプレイ2(右)のディジットが出力ならば RDIG に.ディジットの交換はしない. |
008E |
0000 0000 1000 1110 |
RDIG |
94 |
1001 0100 |
008F |
0000 0000 1000 1111 |
00 |
0000 0000 |
0090 |
0000 0000 1001 0000 |
RRC |
0F |
0000 1111 |
左右のディジットの交換 |
0091 |
0000 0000 1001 0001 |
RRC |
0F |
0000 1111 |
0092 |
0000 0000 1001 0010 |
RRC |
0F |
0000 1111 |
0093 |
0000 0000 1001 0011 |
RRC |
0F |
0000 1111 |
RDIG |
11B-6 |
0094 |
0000 0000 1001 0100 |
ANI |
E6 |
1110 0110 |
ビットA4-A7をマスク |
0095 |
0000 0000 1001 0101 |
0F |
0000 1111 |
11B-7 |
0096 |
0000 0000 1001 0110 |
ORI |
F6 |
1111 0110 |
パターン表のベースアドレスのマージ |
0097 |
0000 0000 1001 0111 |
40 |
0100 0000 |
0098 |
0000 0000 1001 1000 |
MOV LA |
6F |
0110 1111 |
パターン表アドレス(L)をLレジスターに |
0099 |
0000 0000 1001 1001 |
MVI H |
26 |
0010 0110 |
パターン表アドレス(H)をHレジスターに |
009A |
0000 0000 1001 1010 |
00 |
0000 0000 |
11B-8 |
009B |
0000 0000 1001 1011 |
MOV AM |
7E |
0111 1110 |
パターンをAレジスターに取得 |
11B-9 |
009C |
0000 0000 1001 1100 |
ORA C |
B1 |
1011 0001 |
小数点ポイントのマージ |
11B-10 |
009D |
0000 0000 1001 1101 |
OUT B |
D3 |
1101 0011 |
ポートBにパターンを出力 |
009E |
0000 0000 1001 1110 |
82 |
1000 0010 |
11B-11 |
009F |
0000 0000 1001 1111 |
MOV AB |
78 |
0111 1000 |
新しいポートCをAに取得 |
00A0 |
0000 0000 1010 0000 |
OUT C |
D3 |
1101 0011 |
ポートCに出力 |
00A1 |
0000 0000 1010 0001 |
83 |
1000 0011 |
|
11B-12* |
00A2 |
0000 0000 1010 0010 |
JMP |
C3 |
1100 0011 |
Delay にジャンプ |
00A3 |
0000 0000 1010 0011 |
Delay |
EC |
1110 1100 |
00A4 |
0000 0000 1010 0100 |
80 |
1000 0000 |
* この命令はプログラム 2 のみで使われる.プログラム 3 のアドレス 00A2 から 00A4 によって,置き換えられる.
PROGRAM 3
プログラム 3
名前 |
ステップ |
アドレス(16進, 2進) |
ニーモニック |
コード(16進, 2進) |
コメント |
Scan |
12A-1 |
00A2 |
0000 0000 1010 0010 |
MVI E |
1E |
0001 1110 |
Eレジスターに00を設定(D CNT) |
00A3 |
0000 0000 1010 0011 |
00 |
0000 0000 |
00A4 |
0000 0000 1010 0100 |
MVI L |
2E |
0010 1110 |
Lレジスターに28を設定(F CNT) |
00A5 |
0000 0000 1010 0101 |
28 |
0010 1000 |
00A6 |
0000 0000 1010 0110 |
MVI B |
06 |
0000 0110 |
Bレジスターに02を設定(RDI=1) |
00A7 |
0000 0000 1010 0111 |
02 |
0000 0010 |
New DRV |
12A-2 |
00A8 |
0000 0000 1010 1000 |
MVI C |
0E |
0000 1110 |
設定:D/F CNT=2 |
00A9 |
0000 0000 1010 1001 |
02 |
0000 0010 |
00AA |
0000 0000 1010 1010 |
MVI D |
16 |
0001 0110 |
設定:D COL CNT=4(Dレジスター) |
00AB |
0000 0000 1010 1011 |
04 |
0000 0100 |
00AC |
0000 0000 1010 1100 |
MVI H |
26 |
0010 0110 |
設定:F COL CNT=2(Hレジスター) |
00AD |
0000 0000 1010 1101 |
02 |
0000 0010 |
12A-3 |
00AE |
0000 0000 1010 1110 |
INP C |
DB |
1101 1011 |
入力ポートC |
00AF |
0000 0000 1010 1111 |
83 |
1000 0011 |
00B0 |
0000 0000 1011 0000 |
ANI |
E6 |
1110 0110 |
1-4のビットをマスク |
00B1 |
0000 0000 1011 0001 |
E1 |
1110 0001 |
00B2 |
0000 0000 1011 0010 |
ORA B |
B0 |
1011 0000 |
新規列ドライブビットをマージ(?) |
00B3 |
0000 0000 1011 0011 |
OUT C |
D3 |
1101 0011 |
ポートCに新ドライブビット出力 |
00B4 |
0000 0000 1011 0100 |
83 |
1000 0011 |
12A-4 |
00B5 |
0000 0000 1011 0101 |
INP A |
DB |
1101 1011 |
ポートAから列の入力 |
00B6 |
0000 0000 1011 0110 |
81 |
1000 0001 |
TST Key |
12A-5a |
00B7 |
0000 0000 1011 0111 |
RLC |
07 |
0000 0111 |
キーが押されたらCYフラグをセット |
12A-5b |
00B8 |
0000 0000 1011 1000 |
JC |
DA |
1101 1010 |
キーが押されたら(CYフラグセット) K FNDへ |
00B9 |
0000 0000 1011 1001 |
K FND |
D4 |
1101 0100 |
00BA |
0000 0000 1011 1010 |
00 |
0000 0000 |
12A-5c |
00BB |
0000 0000 1011 1011 |
INR E |
1C |
0001 1100 |
キーが見つからない.増加(+1):D CNT (F CNT) 減少(-1):D COL CNT (F COL CNT) |
00BC |
0000 0000 1011 1100 |
DCR D |
15 |
0001 0101 |
12A-5d |
00BD |
0000 0000 1011 1101 |
JNZ |
C2 |
1100 0010 |
D COL CNT (F COL CNT) がゼロでない場合,元に戻り次の列 |
00BE |
0000 0000 1011 1110 |
TST key |
B7 |
1011 0111 |
00BF |
0000 0000 1011 1111 |
00 |
0000 0000 |
12A-6 |
00C0 |
0000 0000 1100 0000 |
XCHG |
EB |
1110 1011 |
DEとHLレジスターのデータの交換 |
00C1 |
0000 0000 1100 0001 |
DCR C |
0D |
0000 1101 |
減少(-1) D/F CNTR |
00C2 |
0000 0000 1100 0010 |
JNZ |
C2 |
1100 0010 |
D/F CNTRがゼロでない場合,元に戻り,FCOL0とFCOL1をテスト |
00C3 |
0000 0000 1100 0011 |
TST key |
B7 |
1011 0111 |
00C4 |
0000 0000 1100 0100 |
00 |
0000 0000 |
12A-7 |
00C5 |
0000 0000 1100 0101 |
MOV AB |
78 |
0111 1000 |
列スキャン完了.次の行ドライブビット(Bレジスター)にセット |
00C6 |
0000 0000 1100 0110 |
RLC |
07 |
0000 0111 |
00C7 |
0000 0000 1100 0111 |
MOV BA |
47 |
0100 0111 |
12A-8 |
00C8 |
0000 0000 1100 1000 |
SUI |
D6 |
1101 0110 |
行ドライブビット(Aレジスターのビット5)がゼロならば,スキャン完了 |
00C9 |
0000 0000 1100 1001 |
20 |
0010 0000 |
00CA |
0000 0000 1100 1010 |
JNZ |
C2 |
1100 0010 |
スキャンが未完ならば,元に戻り,新規行ドライブビット出力 |
00CB |
0000 0000 1100 1011 |
New DRV |
A8 |
1010 1000 |
00CC |
0000 0000 1100 1100 |
00 |
0000 0000 |
12A-9 |
00CD |
0000 0000 1100 1101 |
CMA |
2F |
0010 1111 |
キーが見つからないで,スキャン完了.ENKPにFFをセット. |
00CE |
0000 0000 1100 1110 |
STA |
32 |
0011 0010 |
00CF |
0000 0000 1100 1111 |
FF |
1111 1111 |
00D0 |
0000 0000 1101 0000 |
80 |
1000 0000 |
12A-10 |
00D1 |
0000 0000 1101 0001 |
JMP |
C3 |
1100 0011 |
ディレイへジャンプ.新しいプログラムサイクルで開始. |
00D2 |
0000 0000 1101 0010 |
Delay |
EC |
1110 1100 |
00D3 |
0000 0000 1101 0011 |
80 |
1000 0000 |
K FND |
12B-1 |
00D4 |
0000 0000 1101 0100 |
LXI HL |
21 |
0010 0001 |
ENKPのアドレスをHLレジスターにロード |
00D5 |
0000 0000 1101 0101 |
FF |
1111 1111 |
00D6 |
0000 0000 1101 0110 |
80 |
1000 0000 |
00D7 |
0000 0000 1101 0111 |
MOV AM |
7E |
0111 1110 |
ENKPの値をAレジスターに |
12B-2 |
00D8 |
0000 0000 1101 1000 |
RRC |
0F |
0000 1111 |
ENKPがセットの場合,C8フラグをセット |
00D9 |
0000 0000 1101 1001 |
JNC |
D2 |
1101 0010 |
ENKPがセットされていなければ,Delayへ |
00DA |
0000 0000 1101 1010 |
Delay |
EC |
1110 1100 |
00DB |
0000 0000 1101 1011 |
80 |
1000 0000 |
12B-3 |
00DC |
0000 0000 1101 1100 |
MVI M |
36 |
0011 0110 |
ENKPをゼロクリアー |
00DD |
0000 0000 1101 1101 |
00 |
0000 0000 |
12B-4 |
00DE |
0000 0000 1101 1110 |
DCR C |
0D |
0000 1101 |
減少(-1) D/F CNT |
00DF |
0000 0000 1101 1111 |
JZ |
CA |
1100 1010 |
ファンクションキーの場合,F FNDへジャンプ.(D/F CNT went to 00)?? |
00E0 |
0000 0000 1110 0000 |
F FND |
F1 |
1111 0001 |
00E1 |
0000 0000 1110 0001 |
00 |
0000 0000 |
D FND |
12C-1 |
00E2 |
0000 0000 1110 0010 |
LHLD |
2A |
0010 1010 |
MODE HとMODE LをHLレジスターにロード |
00E3 |
0000 0000 1110 0011 |
FA |
1111 1010 |
00E4 |
0000 0000 1110 0100 |
80 |
1000 0000 |
00E5 |
0000 0000 1110 0101 |
MOV AM |
7E |
0111 1110 |
DDA/DAL/DAHをレジスターに |
12C-2 |
00E6 |
0000 0000 1110 0110 |
RLC |
07 |
0000 0111 |
左にローテート |
00E7 |
0000 0000 1110 0111 |
RLC |
07 |
0000 0111 |
00E8 |
0000 0000 1110 1000 |
RLC |
07 |
0000 0111 |
00E9 |
0000 0000 1110 1001 |
RLC |
07 |
0000 0111 |
12C-3 |
00EA |
0000 0000 1110 1010 |
ANI |
E6 |
1110 0110 |
右のデジットをクリアー |
00EB |
0000 0000 1110 1011 |
F0 |
1111 0000 |
00EC |
0000 0000 1110 1100 |
ORA C |
B3 |
1011 0011 |
右側のデジット位置に新デジットを挿入 |
12C-4 |
00ED |
0000 0000 1110 1101 |
MOV MA |
77 |
0111 0111 |
DDA/DAL/DALに新バイトを挿入 |
12C-5 |
00EE |
0000 0000 1110 1110 |
JMP |
C3 |
1100 0011 |
Delayへジャンプ |
00EF |
0000 0000 1110 1111 |
Delay |
EC |
1110 1100 |
00F0 |
0000 0000 1111 0000 |
80 |
1000 0000 |
PROGRAM 4
プログラム 4
名前 |
ステップ |
アドレス(16進, 2進) |
ニーモニック |
コード(16進, 2進) |
コメント |
F FND |
13A-1 |
00F1 |
0000 0000 1111 0001 |
MOV AE |
7B |
0111 1011 |
F CNTをAに.機能表アドレスの低オーダーバイトを得るために2倍し,Lにストア |
00F2 |
0000 0000 1111 0010 |
RLC |
07 |
0000 0111 |
00F3 |
0000 0000 1111 0011 |
MOV LA |
6F |
0110 1111 |
00F4 |
0000 0000 1111 0100 |
MVI H |
26 |
0010 0110 |
機能表アドレスの高オーダーバイト(00)をHに |
00F5 |
0000 0000 1111 0101 |
00 |
0000 0000 |
13A-2 |
00F6 |
0000 0000 1111 0110 |
MOV EM |
5E |
0101 1110 |
機能表のファンクションルーチンの開始アドレスをDEレジスターにコピー |
00F7 |
0000 0000 1111 0111 |
INX HL |
23 |
0010 0011 |
00F8 |
0000 0000 1111 1000 |
MOV DM |
56 |
0101 0110 |
13A-3 |
00F9 |
0000 0000 1111 1001 |
LHLD |
2A |
0010 1010 |
DAHとDALをHLレジスターに |
00FA |
0000 0000 1111 1010 |
FD |
1111 1101 |
00FB |
0000 0000 1111 1011 |
80 |
1000 0000 |
13A-4 |
00FC |
0000 0000 1111 1100 |
MVI A |
3E |
0011 1110 |
DAH(FE)のアドレスをAレジスターに |
00FD |
0000 0000 1111 1101 |
FE |
1111 1110 |
13A-5 |
00FE |
0000 0000 1111 1110 |
XCHG |
EB |
1110 1011 |
ファンクションアドレスをHAレジスターに |
13A-6 |
00FF |
0000 0000 1111 1111 |
PCHL |
E9 |
1110 1001 |
HLをPCに;ファンクションルーチンへ |
FGO |
13B-1 |
0100 |
0000 0001 0000 0000 |
XCHG |
EB |
1110 1011 |
DAHとDALをHLに |
13B-2 |
0101 |
0000 0001 0000 0001 |
PCHL |
E9 |
1110 1001 |
DAHとDALのアドレスにジャンプ |
FR |
13C-1 |
0102 |
0000 0001 0000 0010 |
XCHG |
EB |
1110 1011 |
DAHとDALをDEからHLにもどす |
0103 |
0000 0001 0000 0011 |
MOV AM |
7E |
0111 1110 |
HLが示すアドレスのデータをAに |
0104 |
0000 0001 0000 0100 |
STA |
32 |
0011 0010 |
ディスプレイに表示されるDDAで読まれるバイトをストアー |
0105 |
0000 0001 0000 0101 |
FC |
1111 1100 |
0106 |
0000 0001 0000 0110 |
80 |
1000 0000 |
13C-2 |
0107 |
0000 0001 0000 0111 |
JMP |
C3 |
1100 0011 |
読み込みファンクションを完了させるためにFRAへジャンプ |
0108 |
0000 0001 0000 1000 |
FRA |
E1 |
1110 0001 |
0109 |
0000 0001 0000 1001 |
80 |
1000 0000 |
PROGRAM SEGMENT COPIED ROM TO RAM
Program segment.初期化のルーチンでROMのデータがRAMにコピーされる.
ROMアドレス(16進, 2進) |
コード(16進, 2進) |
RAMアドレス(16進, 2進) |
010A |
0000 0001 0000 1010 |
EB |
1110 1011 |
80DC |
1000 0000 1101 1100 |
010B |
0000 0001 0000 1011 |
3A |
0011 1010 |
80DD |
1000 0000 1101 1101 |
010C |
0000 0001 0000 1100 |
FC |
1111 1100 |
80DE |
1000 0000 1101 1110 |
010D |
0000 0001 0000 1101 |
80 |
1000 0000 |
80DF |
1000 0000 1101 1111 |
010E |
0000 0001 0000 1110 |
77 |
0111 0111 |
80E0 |
1000 0000 1110 0000 |
010F |
0000 0001 0000 1111 |
23 |
0010 0011 |
80E1 |
1000 0000 1110 0001 |
0110 |
0000 0001 0001 0000 |
22 |
0010 0010 |
80E2 |
1000 0000 1110 0010 |
0111 |
0000 0001 0001 0001 |
FD |
1111 1101 |
80E3 |
1000 0000 1110 0011 |
0112 |
0000 0001 0001 0010 |
80 |
1000 0000 |
80E4 |
1000 0000 1110 0100 |
0113 |
0000 0001 0001 0011 |
3E |
0011 1110 |
80E5 |
1000 0000 1110 0101 |
0114 |
0000 0001 0001 0100 |
FE |
1111 1110 |
80E6 |
1000 0000 1110 0110 |
0115 |
0000 0001 0001 0101 |
3D |
0011 1101 |
80E7 |
1000 0000 1110 0111 |
0116 |
0000 0001 0001 0110 |
3D |
0011 1101 |
80E8 |
1000 0000 1110 1000 |
0117 |
0000 0001 0001 0111 |
32 |
0011 0010 |
80E9 |
1000 0000 1110 1001 |
0118 |
0000 0001 0001 1000 |
FA |
1111 1010 |
80EA |
1000 0000 1110 1010 |
0119 |
0000 0001 0001 1001 |
80 |
1000 0000 |
80EB |
1000 0000 1110 1011 |
011A |
0000 0001 0001 1010 |
21 |
0010 0001 |
80EC |
1000 0000 1110 1100 |
011B |
0000 0001 0001 1011 |
00 |
0000 0000 |
80ED |
1000 0000 1110 1101 |
011C |
0000 0001 0001 1100 |
05 |
0000 0101 |
80EE |
1000 0000 1110 1110 |
011D |
0000 0001 0001 1101 |
2D |
0010 1101 |
80EF |
1000 0000 1110 1111 |
011E |
0000 0001 0001 1110 |
C2 |
1100 0010 |
80F0 |
1000 0000 1111 0000 |
011F |
0000 0001 0001 1111 |
EF |
1110 1111 |
80F1 |
1000 0000 1111 0001 |
0120 |
0000 0001 0010 0000 |
80 |
1000 0000 |
80F2 |
1000 0000 1111 0010 |
0121 |
0000 0001 0010 0001 |
25 |
0010 0101 |
80F3 |
1000 0000 1111 0011 |
0122 |
0000 0001 0010 0010 |
C2 |
1100 0010 |
80F4 |
1000 0000 1111 0100 |
0123 |
0000 0001 0010 0011 |
EF |
1110 1111 |
80F5 |
1000 0000 1111 0101 |
0124 |
0000 0001 0010 0100 |
80 |
1000 0000 |
80F6 |
1000 0000 1111 0110 |
0125 |
0000 0001 0010 0101 |
C3 |
1100 0011 |
80F7 |
1000 0000 1111 0111 |
0126 |
0000 0001 0010 0110 |
77 |
0111 0111 |
80F8 |
1000 0000 1111 1000 |
0127 |
0000 0001 0010 0111 |
00 |
0000 0000 |
80F9 |
1000 0000 1111 1001 |
0128 |
0000 0001 0010 1000 |
FC |
1111 1100 |
80FA |
1000 0000 1111 1010 |
0129 |
0000 0001 0010 1001 |
80 |
1000 0000 |
80FB |
1000 0000 1111 1011 |
012A |
0000 0001 0010 1010 |
00 |
0000 0000 |
80FC |
1000 0000 1111 1100 |
012B |
0000 0001 0010 1011 |
00 |
0000 0000 |
80FD |
1000 0000 1111 1101 |
012C |
0000 0001 0010 1100 |
00 |
0000 0000 |
80FE |
1000 0000 1111 1110 |
012D |
0000 0001 0010 1101 |
FF |
1111 1111 |
80FF |
1000 0000 1111 1111 |
PROGRAM 4 COPIED FROM ROM
前節「PROGRAM SEGMENT COPIED ROM TO RAM」で示したアドレス 010A — 012D のデータは ROM に入れられる.それは,初期化ルーチン「PROGRAM 1」で RAM にコピーされる.そのコピーされた内容のうち PROGRAM 4 に関係するものを以下に示す.
ROMからコピーされるプログラム 4
名前 |
ステップ |
アドレス(16進, 2進) |
ニーモニック |
コード(16進, 2進) |
コメント |
FST |
13B-1 |
80DC |
1000 0000 1101 1100 |
XCHG |
EB |
1110 1011 |
DAHとDALをDEからHLにもどす |
80DD |
1000 0000 1101 1101 |
LDA |
3A |
0011 1010 |
DDAからストアーされるバイトをAレジスターに |
80DE |
1000 0000 1101 1110 |
FC |
1111 1100 |
80DF |
1000 0000 1101 1111 |
80 |
1000 0000 |
80E0 |
1000 0000 1110 0000 |
MOV MA |
77 |
0111 0111 |
HLが示すアドレスのデータAに |
FRA |
13B-2 |
80E1 |
1000 0000 1110 0001 |
INX HL |
23 |
0010 0011 |
HL中のDAHとDALを増加(+1) |
13B-3 |
80E2 |
1000 0000 1110 0010 |
SHLD |
22 |
0010 0010 |
新しいDAHとDALをストアー |
80E3 |
1000 0000 1110 0011 |
FD |
1111 1101 |
80E4 |
1000 0000 1110 0100 |
80 |
1000 0000 |
SET DA |
13B-4a |
80E5 |
1000 0000 1110 0101 |
MVI A |
3E |
0011 1110 |
AHモードのMODE Lコード(FE)をAレジスターに |
80E6 |
1000 0000 1110 0110 |
FE |
1111 1110 |
FDA |
13B-4b |
80E7 |
1000 0000 1110 0111 |
DCR A |
3D |
0011 1101 |
モードLコードを減少(-1) |
FAL |
13B-4c |
80E8 |
1000 0000 1110 1000 |
DCR A |
3D |
0011 1101 |
モードLコードを減少(-1) |
FAH |
13B-4d |
80E9 |
1000 0000 1110 1001 |
STA |
32 |
0011 0010 |
新しいMODE LをMODE Lにストアー |
80EA |
1000 0000 1110 1010 |
FA |
1111 1010 |
80EB |
1000 0000 1110 1011 |
80 |
1000 0000 |
PROGRAM 2 COPIED FROM ROM
前節「PROGRAM SEGMENT COPIED ROM TO RAM」で示したアドレス 010A — 012D のデータは ROM に入れられる.それは,初期化ルーチン「PROGRAM 1」で RAM にコピーされる.そのコピーされた内容のうち PROGRAM 2 に関係するものを以下に示す.
ROMからコピーされるプログラム 2
名前 |
ステップ |
アドレス(16進, 2進) |
ニーモニック |
コード(16進, 2進) |
コメント |
Delay |
11A-1 |
80EC |
1000 0000 1110 1100 |
LXI HL |
21 |
0010 0001 |
ディレイ定数をHLレジスターにロード |
80ED |
1000 0000 1110 1101 |
00 |
0000 0000 |
80EE |
1000 0000 1110 1110 |
C5 |
1100 0101 |
D Loop |
11A-2 |
80EF |
1000 0000 1110 1111 |
DCR L |
2D |
0010 1101 |
Lを減少(-1) |
11A-3 |
80F0 |
1000 0000 1111 0000 |
JNZ |
C2 |
1100 0010 |
Lがゼロでないならば,元に戻り,再び減少(-1) |
80F1 |
1000 0000 1111 0001 |
D Loop |
EF |
1110 1111 |
80F2 |
1000 0000 1111 0010 |
80 |
1000 0000 |
11A-4 |
80F3 |
1000 0000 1111 0011 |
DCR H |
25 |
0010 0101 |
Hを減少(-1) |
11A-5 |
80F4 |
1000 0000 1111 0100 |
JNZ |
C2 |
1100 0010 |
Hがゼロでないならば,元に戻り,再び減少(-1) |
80F5 |
1000 0000 1111 0101 |
D Loop |
EF |
1110 1111 |
80F6 |
1000 0000 1111 0110 |
80 |
1000 0000 |
11A-6 |
80F7 |
1000 0000 1111 0111 |
JMP |
C3 |
1100 0011 |
ディレイ完了.ディスプレイに戻る. |
80F8 |
1000 0000 1111 1000 |
DISP |
77 |
0111 0111 |
80F9 |
1000 0000 1111 1001 |
00 |
0000 0000 |
PARAMETERS COPIED FROM ROM
前節「PROGRAM SEGMENT COPIED ROM TO RAM」で示したアドレス 010A — 012D のデータは ROM に入れられる.それは,初期化ルーチン「PROGRAM 1」で RAM にコピーされる.そのコピーされた内容のうち,変数に関係するものを以下に示す.
ROMからコピーされるパラメーター
名前 |
ステップ |
アドレス(16進, 2進) |
ニーモニック |
コード(16進, 2進) |
コメント |
MODE L |
|
80FA |
1000 0000 1111 1010 |
|
FC |
1111 1100 |
ROMからコピーされる初期値 |
MODE H |
|
80FB |
1000 0000 1111 1011 |
|
80 |
1000 0000 |
DDA |
|
80FC |
1000 0000 1111 1100 |
|
00 |
0000 0000 |
DAL |
|
80FD |
1000 0000 1111 1101 |
|
00 |
0000 0000 |
DAH |
|
80FE |
1000 0000 1111 1110 |
|
00 |
0000 0000 |
ENKP |
|
80FF |
1000 0000 1111 1111 |
|
FF |
1111 1111 |
PATTERN TABLE
パターン表
アドレス(16進, 2進) |
ディスプレイ |
コード(16進, 2進) |
0040 |
0000 0000 0100 0000 |
0 |
80 |
1000 0000 |
0041 |
0000 0000 0100 0001 |
1 |
F2 |
1111 0010 |
0042 |
0000 0000 0100 0010 |
2 |
48 |
0100 1000 |
0043 |
0000 0000 0100 0011 |
3 |
60 |
0110 0000 |
0044 |
0000 0000 0100 0100 |
4 |
32 |
0011 0010 |
0045 |
0000 0000 0100 0101 |
5 |
24 |
0010 0100 |
0046 |
0000 0000 0100 0110 |
6 |
04 |
0000 0100 |
0047 |
0000 0000 0100 0111 |
7 |
F0 |
1111 0000 |
0048 |
0000 0000 0100 1000 |
8 |
00 |
0000 0000 |
0049 |
0000 0000 0100 1001 |
9 |
30 |
0011 0000 |
004A |
0000 0000 0100 1010 |
A |
10 |
0001 0000 |
004B |
0000 0000 0100 1011 |
B |
06 |
0000 0110 |
004C |
0000 0000 0100 1100 |
C |
8C |
1000 1100 |
004D |
0000 0000 0100 1101 |
D |
42 |
0100 0010 |
004E |
0000 0000 0100 1110 |
E |
0C |
0000 1100 |
004F |
0000 0000 0100 1111 |
F |
1C |
0001 1100 |
FUNCTION TABLE
ファンクションテーブル(機能表)
アドレス(16進, 2進) |
ファンクション |
コード開始アドレス (16進, 2進) |
0050 |
0000 0000 0101 0000 |
FX2 |
00 |
0000 0000 |
0051 |
0000 0000 0101 0001 |
00 |
0000 0000 |
0052 |
0000 0000 0101 0010 |
FR |
02 |
0000 0010 |
0053 |
0000 0000 0101 0011 |
01 |
0000 0001 |
0054 |
0000 0000 0101 0100 |
FX1 |
00 |
0000 0000 |
0055 |
0000 0000 0101 0101 |
00 |
0000 0000 |
0056 |
0000 0000 0101 0110 |
FDA |
E7 |
1110 0111 |
0057 |
0000 0000 0101 0111 |
80 |
1000 0000 |
0058 |
0000 0000 0101 1000 |
FGO |
00 |
0000 0000 |
0059 |
0000 0000 0101 1001 |
01 |
0000 0001 |
005A |
0000 0000 0101 1010 |
FAL |
E8 |
1110 1000 |
005B |
0000 0000 0101 1011 |
80 |
1000 0000 |
005C |
0000 0000 0101 1100 |
FST |
DC |
1101 1100 |
005D |
0000 0000 0101 1101 |
80 |
1000 0000 |
005E |
0000 0000 0101 1110 |
FAH |
E9 |
1110 1001 |
005F |
0000 0000 0101 1111 |
80 |
1000 0000 |
ページ作成情報
参考資料
更新履歴
|