電子計算機工学II 練習問題の答

NAGASAKA Yasunori

2003/01/15

http://edu.isc.chubu.ac.jp/naga/index.html で公開中

注意 !! 2004 年 1 月に以下の修正、加筆がされました。
  1. (1.2.5 練習問題) 割り込み処理ルーチンに関する問題の答で、 F レジスタを直接メモリに書き込めない問題に関して スタックを使うプログラムに修正しました。

  2. (2.3.4 練習問題) 条件を満たすシステムの回路図、 アドレスデコーダを記述する問題の答で、講義中に使用した例題の回路図と 異なる記述の仕方があり、わかり難いと思われる部分について説明を追加しました。



1   割り込み

2   CPU の周辺回路

3   PIO を用いた入出力

4   CPU を高速化する技術



1   割り込み

1.2.5     練習問題

指定された条件を満たすように割り込み処理ルーチンを作成しなさい。
  1. NMI の処理ルーチンで、レジスタの退避は表裏レジスタの交換で行なう。 退避するレジスタは A,B,C,D,E,F とする。 A,B,C,D,E,F レジスタをこの順番で 1000H 番地からメモリに記録する。

  2. INT の処理ルーチンで、レジスタの退避は表裏レジスタの交換で行なう。 退避するレジスタは A,B,C,D,E,F とする。多重割り込みは禁止する。 A,B,C,D,E,F レジスタをこの順番で 1000H 番地からメモリに記録する。

  3. INT の処理ルーチンで、レジスタの退避はスタックを使用する。 退避するレジスタは A,B,C,D,E,F とする。多重割り込みを許可する。 A,B,C,D,E,F レジスタをこの順番で 1000H 番地からメモリに記録する。

1
INT1	EX	AF, AF'
	EXX
	LD	HL, 1000H
	LD	(HL), A
	INC	HL
	LD	(HL), B
	INC	HL
	LD	(HL), C
	INC	HL
	LD	(HL), D
	INC	HL
	LD	(HL), E
	INC	HL
	PUSH	AF
	POP	BC
	LD	(HL), C
	EX	AF, AF'
	EXX
	EI
	RETN
2
INT2	EX	AF, AF'	
	EXX
	LD	HL, 1000H
	LD	(HL), A
	INC	HL
	LD	(HL), B
	INC	HL
	LD	(HL), C
	INC	HL
	LD	(HL), D
	INC	HL
	LD	(HL), E
	INC	HL
	PUSH	AF
	POP	BC
	LD	(HL), C
	EX	AF, AF'
	EXX
	EI
	RETI
3
INT3	EI
	PUSH	AF
	PUSH	BC
	PUSH	DE
	LD	HL, 1000H
	LD	(HL), A
	INC	HL
	LD	(HL), B
	INC	HL
	LD	(HL), C
	INC	HL
	LD	(HL), D
	INC	HL
	LD	(HL), E
	INC	HL
	PUSH	AF
	POP	BC
	LD	(HL), C
	POP	DE
	POP	BC
	POP	AF
	RETI



2   CPU の周辺回路

2.1.3     練習問題

以下の組合せで主記憶を構成する場合の、AB の分配法、アドレスデコーダ、 アドレスデコーダの入出力の対応関係、DB との接続法を示しなさい。
  1. 8K × 1Byte のメモリLSIを組み合わせて、64KB の主記憶を構成する

  2. 8K × 1bit のメモリLSIを組み合わせて、8KB の主記憶を構成する

  3. 1K × 1Byte のメモリLSIを組み合わせて、16KB の主記憶を構成する

  4. 1K × 1bit のメモリLSIを組み合わせて、4KB の主記憶を構成する

  5. 8K × 4bits のメモリLSIを組み合わせて、16KB の主記憶を構成する

1


アドレスデコーダ


入出力の対応関係

A15 A14 A13 MREQ 出力
0 0 0 0 0
0 0 1 0 1
0 1 0 0 2
0 1 1 0 3
1 0 0 0 4
1 0 1 0 5
1 1 0 0 6
1 1 1 0 7
* * * 1 なし

2


アドレスデコーダ

  この場合、すべてのメモリチップが同時に動作するため、外部のアドレスデコーダは存在しない。 よって入出力の対応関係は必要ない。

3


アドレスデコーダ


入出力の対応関係

A15,A14 A13 A12 A11 A10 MREQ 出力
* 0 0 0 0 0 0
* 0 0 0 1 0 1
* 0 0 1 0 0 2
* 0 0 1 1 0 3
* 0 1 0 0 0 4
* 0 1 0 1 0 5
* 0 1 1 0 0 6
* 0 1 1 1 0 7
* 1 0 0 0 0 8
* 1 0 0 1 0 9
* 1 0 1 0 0 10
* 1 0 1 1 0 11
* 1 1 0 0 0 12
* 1 1 0 1 0 13
* 1 1 1 0 0 14
* 1 1 1 1 0 15
* * * * * 1 なし

4


アドレスデコーダ


入出力の対応関係

A15 〜 A12 A11 A10 MREQ 出力
* 0 0 0 0
* 0 1 0 1
* 1 0 0 2
* 1 1 0 3
* * * 1 なし

5


アドレスデコーダ


入出力の対応関係

A15,A14 A13 MREQ 出力
* 0 0 0
* 1 0 1
* * 1 なし

2.3.4     練習問題

以下の条件を満たすシステムの回路図、アドレスデコーダの入出力の対応関係を示しなさい。
  1. 4K × 1Byte の ROMLSIを組み合わせて、8KB の ROM を、 1K × 1Byte の RAMLSIを組み合わせて、8KB の RAM を構成する。 0000H から ROM を、8000H から RAM を配置する。 ROMLSI, RAMLSI の Chip Select 信号は正論理とする。RAMLSI の R/W 信号は、 正論理で H のとき書き込みを表す。外部装置とのデータの入出力は、 ラッチ回路とゲート回路で実現する。割り込みは考慮しなくてよい。

  2. 4K × 1Byte の ROMLSIを組み合わせて、16KB の ROM を、 4K × 1Byte の RAMLSIを組み合わせて、16KB の RAM を構成する。 0000H から ROM を、C000H から RAM を配置する。 ROMLSI, RAMLSI の Chip Select 信号は正論理とする。RAMLSI の R/W 信号は、 正論理で H のとき読み込みを表す。外部装置とのデータの入出力は、PIO で実現する。

1


1 の回路図



ROM,RAM のアドレスデコーダ


ROM のアドレスデコーダの入出力の関係

A15,A14,A13 A12 RD MREQ 出力
0 0 0 0 0
0 1 0 0 1
* * 1 * なし
* * * 1 なし


RAM のアドレスデコーダの入出力の関係

A15 A14,A13 A12 A11 A10 MREQ 出力
1 0 0 0 0 0 0
1 0 0 0 1 0 1
1 0 0 1 0 0 2
1 0 0 1 1 0 3
1 0 1 0 0 0 4
1 0 1 0 1 0 5
1 0 1 1 0 0 6
1 0 1 1 1 0 7
* * * * * 1 なし

補足説明: この問題は講義の資料 2.3.2 例 2 とよく似た内容であるが、以下で 2.3.2 例 2 と、この問題との違い、気をつける点を記す。
2.3.2 例 2 は従来からあるシステムの例をそのまま使用しているので、ROM の選択信号が 2 種類 (CS1,2) ある、RAM の選択信号の名称が CE になってい る、ラッチ回路の選択信号がCE, DISABLE になっているなど、いくつかの点で 固有の設定になっている。またアドレスデコーダが非常に単純になるので、少 数の論理素子の組合せで回路図に直接記述してある。入出力のインタフェース (ラッチ、ゲート)は割り込みが正しく区別できるように、選択信号に M1 が加 えてありやや複雑な論理になっている。
これに対して問題の答では、問題で指定された条件を実現するためのなるべく 単純な回路となっている。メモリや入出力インタフェースの選択信号は名称を CS に統一して 1 本だけ接続する。アドレスデコーダは複数のチップから選択 する必要があるため、論理素子の組合せとしては記述しないで、アドレスデコー ダの動作に必要な入力、出力の信号線と入出力の対応を表の形式で記述してあ る。入出力のインタフェースの選択信号では割り込みを識別する必要がないの で、選択信号の生成に M1 を含めず簡略化してある。アドレスデコーダが回路 図と別に記述されているので、回路図中の一部の CS は名称だけ記して配線の 仕方は省略してある。この答では ROM, RAM のアドレスデコーダが独立して記 述してあるが、これは統合して書いてもよい。その場合はアドレスデコーダの 図と入出力の対応を表す表が多少複雑になるので気をつける必要がある。また メモリを配置する番地が指定されているので、それに対応するようにアドレス デコーダを構成する点も注意が必要である。
練習問題と講義用資料の例では本質的にはほとんど同じ内容になっているが、 その表現の仕方が多少異なっている。その差異が何を意味するかわかっていれ ば、どちらを参考にしてもよい。しかし、上記の差異に関して気になる点があっ て、今回の練習問題のような問題が出題された場合には、講義資料の例ではな く、練習問題の答を参考にして回路図等を考える方が単純かつ直接的に考える ことができわかりやすくて良いといえる。

2


2 の回路図

Z80CPU と Z80PIO の INT, IORQ, RD, M1 を接続する。



ROM,RAM のアドレスデコーダ


ROM のアドレスデコーダの入出力の関係

A15,A14 A13 A12 RD MREQ 出力
0 0 0 0 0 0
0 0 1 0 0 1
0 1 0 0 0 2
0 1 1 0 0 3
* * * 1 * なし
* * * * 1 なし


RAM のアドレスデコーダの入出力の関係

A15,A14 A13 A12 MREQ 出力
1 0 0 0 0
1 0 1 0 1
1 1 0 0 2
1 1 1 0 3
* * * 1 なし

補足説明: この問題は講義の資料 2.3.3 例 3 とよく似た内容であるが、以下で 2.3.2 例 2 と、この問題との違い、気をつける点を記す。
2.3.3 例 3 は教科書に掲載されていたシステムの例をそのまま使用している ので、アドレスデコーダが汎用のチップを用いて構成されている。 入出力のインタフェースとして PIO を用いるので接続の仕方はわかりやすい。
これに対して問題の答では、問題で指定された条件を実現するためのなるべく 単純な回路となっている。メモリや入出力インタフェースの選択信号は正論理、 負論理が異なっているので気をつける。アドレスデコーダは複数のメモリチッ プから選択する必要があるため、論理素子の組合せとしては記述しないで、ア ドレスデコーダの動作に必要な入力、出力の信号線と入出力の対応を表の形式 で記述してある。入出力のインタフェース PIO の接続は 2.3.3 例 3 と同じ である。アドレスデコーダが回路図と別に記述されているのは前の問題と同様 で注意する点も同じである。
この練習問題では講義資料との違いは少ないが、 もしその違いが気になるようなら、前問と同様、講義資料の例ではなく、 練習問題の答を参考にして回路図等を考える方が直接的でわかりやすいといえる。



3   PIO を用いた入出力

3.2.3     練習問題

  1. A,B,C ポートのすべてに LED を接続して、A ポートは右端の、 B ポートは右から 2 番目の、C ポートは右から 3 番目の LED を点灯させる。

  2. A,B,C ポートのスイッチから読み込んだ値を加えて RESULT に記録する。

  3. A,B ポートのスイッチから読み込んだ値を加えて、C ポートの LED に 2 進数で表示する。

  4. A ポートのスイッチから読み込んだ値が奇数なら C ポートの LED を全点灯、偶数なら全消灯させる。

  5. A,B ポートのスイッチから入力して、両ポートのスイッチともに ON の位置だけ C ポートの LED を点灯させる。

  6. A,B,C ポートのスイッチから読み込んだ値をそれぞれ DATA1, DATA2, DATA3 に記録する。

(1)
PORTA	EQU	0F0H		; 各ポートには固
PORTB	EQU	0F1H		; 有のアドレスが
PORTC	EQU	0F2H		; 割り当てられる
CTRL	EQU	0F3H

	ORG	1000H

START	LD	A, 80H		; 各ポートの入出力の指定
	OUT	(CTRL), A	; A,B,C:出力
	LD	A, 1
	OUT	(PORTA), A	; A ポートに出力する
	LD	A, 2
	OUT	(PORTB), A
	LD	A, 4
	OUT	(PORTC), A
	HALT
	END

(2)
PORTA	EQU	0F0H		; 各ポートには固
PORTB	EQU	0F1H		; 有のアドレスが
PORTC	EQU	0F2H		; 割り当てられる
CTRL	EQU	0F3H

	ORG	1000H

START	LD	A, 9BH		; 各ポートの入出力の指定
	OUT	(CTRL), A	; A,B,C:入力
	IN	A, (PORTC)
	LD	C, A
	IN	A, (PORTB)
	LD	B, A
	IN	A, (PORTA)
	ADD	A, B
	ADD	A, C
	LD	(RESULT), A
	HALT

RESULT	DS	1
	END

(3)
PORTA	EQU	0F0H		; 各ポートには固
PORTB	EQU	0F1H		; 有のアドレスが
PORTC	EQU	0F2H		; 割り当てられる
CTRL	EQU	0F3H

	ORG	1000H

START	LD	A, 92H		; 各ポートの入出力の指定
	OUT	(CTRL), A	; A,B:入力 C:出力
	IN	A, (PORTB)
	LD	B, A
	IN	A, (PORTA)
	ADD	A, B
	OUT	(PORTC), A
	HALT
	END

(4)
PORTA	EQU	0F0H		; 各ポートには固
PORTB	EQU	0F1H		; 有のアドレスが
PORTC	EQU	0F2H		; 割り当てられる
CTRL	EQU	0F3H

	ORG	1000H

START	LD	A, 92H		; 各ポートの入出力の指定
	OUT	(CTRL), A	; A,B:入力 C:出力
	IN	A, (PORTA)
	AND	1
	JP	Z, L1
	LD	A, 255
	OUT	(PORTC), A
	JP	L2
L1	LD	A, 0
	OUT     (PORTC), A
L2	HALT
	END

(5)
PORTA	EQU	0F0H		; 各ポートには固
PORTB	EQU	0F1H		; 有のアドレスが
PORTC	EQU	0F2H		; 割り当てられる
CTRL	EQU	0F3H

	ORG	1000H

START	LD	A, 92H		; 各ポートの入出力の指定
	OUT	(CTRL), A	; A,B:入力 C:出力
	IN	A, (PORTB)
	LD	B, A
	IN	A, (PORTA)
	AND	B
	OUT	(PORTC), A
	HALT
	END

(6)
PORTA	EQU	0F0H		; 各ポートには固
PORTB	EQU	0F1H		; 有のアドレスが
PORTC	EQU	0F2H		; 割り当てられる
CTRL	EQU	0F3H

	ORG	1000H

START	LD	A, 9BH		; 各ポートの入出力の指定
	OUT	(CTRL), A	; A,B,C:入力
	IN	A, (PORTC)
	LD	C, A
	IN	A, (PORTB)
	LD	B, A
	IN	A, (PORTA)
	LD	(DATA1), A
	LD	A, B
	LD	(DATA2), A
	LD	A, C
	LD	(DATA3), A
	HALT

DATA1	DS	1
DATA2	DS	1
DATA3	DS	1
	END
3.2.5     練習問題

以下のプログラムを作成しなさい。サブルーチン PRINT, NLINE は用意されて いて利用してもよいことにする。
  1. 'A' を 20 文字 × 5 行印字する。

  2. 'A' 〜 'Z' まで順に印字する。('A'=41H, 'B'=42H)

  3. 自分の名前を印字する。

  4. 'ABCD' を A B C D のように印字するサブルーチンを PLINE1 を 改良して作成しなさい。

  5. 文字列の終端に 0 を付加して表現する形式のデータを印字する サブルーチン PLINE2 を作成しなさい。また PLINE2 を利用する MAIN ルーチンを作成しなさい。

(1)
PORTA	EQU	0F8H
PORTB	EQU	0F9H
PORTC	EQU	0FAH
CTRL	EQU	0FBH

	ORG	1000H

START	省略

MAIN	LD	C, 'A'
	LD	B, 5
L1	LD	D, 20
L2	CALL	PRINT
	DEC	D
	JP	NZ, L2
	CALL	NEWLINE
	DJNZ	L1
	HALT

NLINE	省略

PRINT	省略

	END

(2)
PORTA	EQU	0F8H
PORTB	EQU	0F9H
PORTC	EQU	0FAH
CTRL	EQU	0FBH

	ORG	1000H

START	省略

MAIN	LD	C, 'A'
L1	CALL	PRINT
	INC	C
	LD	A, 'Z'
	CP	C
	JP	P, L1
	CALL	NEWLINE
	HALT

NLINE	省略

PRINT	省略

	END

(3)
PORTA	EQU	0F8H
PORTB	EQU	0F9H
PORTC	EQU	0FAH
CTRL	EQU	0FBH

	ORG	1000H

START	省略

MAIN	LD	HL, DATA	; 文字列の先頭アドレスを HL にセット
	LD	A, (NUM)
	LD	B, A		; 文字数を B にセット
	CALL	PLINE1
	HALT

PLINE1	省略

NLINE	省略

PRINT	省略

DATA	TXT	'CHUBU TARO'
NUM	DB	10

	END

(3)
PORTA	EQU	0F8H
PORTB	EQU	0F9H
PORTC	EQU	0FAH
CTRL	EQU	0FBH

	ORG	1000H

START	省略

MAIN	LD	C, 'C'
	CALL	PRINT
	LD	C, 'H'
	CALL	PRINT
	LD	C, 'U'
	CALL	PRINT
	LD	C, 'B'
	CALL	PRINT
	LD	C, 'U'
	CALL	PRINT
	LD	C, ' '
	CALL	PRINT
	LD	C, 'T'
	CALL	PRINT
	LD	C, 'A'
	CALL	PRINT
	LD	C, 'R'
	CALL	PRINT
	LD	C, 'O'
	CALL	PRINT
	CALL	NLINE
	HALT

NLINE	省略

PRINT	省略

	END


(4)
PORTA	EQU	0F8H
PORTB	EQU	0F9H
PORTC	EQU	0FAH
CTRL	EQU	0FBH

	ORG	1000H

START	省略

MAIN	LD	HL, DATA	; 文字列の先頭アドレスを HL にセット
	LD	A, (NUM)
	LD	B, A		; 文字数を B にセット
	CALL	PLINE1
	HALT

PLINE1B	LD	A, 0
	CP	B		; 文字数が 0 か確認
	JP	Z, BACK		; もし 0 なら印字しないで戻る
LOOP	LD	C, (HL)		; 文字を C にセット
	CALL	PRINT
	LD      C, ' '
	CALL    PRINT
	INC	HL		; 次の文字に進める
	DEC	B		; カウンタを 1 減らす
	JP	NZ, LOOP	; 0 になるまで繰り返し
	CALL	NLINE
BACK	RET

NLINE	省略

PRINT	省略

DATA	TXT	'ABCDEFGHIJKLMN'
NUM	DB	14

	END

(5)
PORTA	EQU	0F8H
PORTB	EQU	0F9H
PORTC	EQU	0FAH
CTRL	EQU	0FBH

	ORG	1000H

START	省略

MAIN	LD	HL, DATA	; 文字列の先頭アドレスを HL にセット
	CALL	PLINE2
	HALT

PLINE2	LD	A, 0
LOOP	LD	C, (HL)		; 文字を C にセット
	CP	C		; C が 0 か調べる
	JP	Z, BACK		; もし 0 なら戻る
	CALL	PRINT
	INC	HL		; 次の文字に進める
	JP	PLINE2		
BACK	RET

NLINE	省略

PRINT	省略

DATA	TXT	'ABCDEFGHIJKLMN'
	DB	0

	END



4   CPU を高速化する技術

4.4     練習問題

1. パイプラインの処理について次の問いに答えなさい。パイプラインのストール は発生しないものとする。
  1. 5 段のパイプラインで、各ステージの処理が 2 nsec で完了する場合、100 個の命令を 実行するのに要する時間を求めなさい。

  2. 10 段のパイプラインで、各ステージの処理が 1 nsec で完了する場合、100 個の命令を 実行するのに要する時間を求めなさい。

  3. 20 段のパイプラインで、各ステージの処理が 0.5 nsec で完了する場合、100 個の命令を 実行するのに要する時間を求めなさい。

1. 最初の命令は 10 nsec で実行され、2 個目以後の命令は 2 nsec 毎に 1 個の命令の 実行が完了するので、全体では 10 + (2 * 99) = 208 nsec となる。

2. 最初の命令は 10 nsec で実行され、2 個目以後の命令は 1 nsec 毎に 1 個の命令の 実行が完了するので、全体では 10 + (1 * 99) = 109 nsec となる。

3. 最初の命令は 10 nsec で実行され、2 個目以後の命令は 0.5 nsec 毎に 1 個の命令の 実行が完了するので、全体では 10 + (0.5 * 99) = 59.5 nsec となる。

2. 次の用語が表す技術の内容を説明しなさい。
  1. SMP

  2. レジスタリネーミング

  3. SIMD

1. SMP, Simmetric Multi Processing は日本語では対称型マルチプロセッシ ングという表現になり、その意味は 1 台のコンピュータに複数のプロセッサ を搭載して並列処理をさせることにより性能向上を図る技術である。名称の対 称型というのは、各プロセッサが機能的に同等な役割を持っていることを表す。 あるプロセッサだけが特別な機能、役割を持つ場合は対称型ではなくなる。各 プロセッサには OS が個別のプロセス(プログラム)またはスレッド(プログラ ムをより細かい実行単位に分割したもの)を割り当てて実行させる。N 個のプ ロセッサを使用すると、理想的な場合には 1 個のプロセッサを使用した場合 と比較して N 倍の性能向上が得られる。これは各プロセッサが処理する内容 が他のプロセッサの処理に関連がなくてデータのやりとりをする必要がなく、 かつハードウェアのアクセスも競合しないことが必要となる。現実には N 個 のプロセッサを使用しても性能は N 倍にはならず個数に比例して性能向上の 度合は低くなる。多量のデータに対する演算を必要として、演算間の関連がな く並列計算が可能な、特定の分野のアプリケーション(画像処理など)では SMP の効果が大きい。

2. レジスタリネーミングとは、機械語命令セット、命令アーキテクチャにお けるレジスタ(論理レジスタ)とプロセッサ内のハードウェアとして用意されて いるレジスタ(物理レジスタ)の個数が異なる場合に、論理レジスタに物理レジ スタを割り当てることを表す。論理レジスタと物理レジスタの個数の相違は、 次のような理由から生じる。新しいプロセッサが開発された場合でも、命令レ ベルでは、過去のプロセッサ用に開発されたプログラム資産をそのまま活用で きるように命令アーキテクチャをそのまま継承することがある。この場合、論 理レジスタは過去の命令アーキテクチャで定義されたレジスタ、及びその個数 のままになるが、物理レジスタは集積度の向上などの理由から多くのレジスタ が搭載される。プログラムは命令アーキテクチャに従って作成されるので、少 ないレジスタ(論理レジスタ)をうまく使い回して動作するように機械語命令が 組み合わされる。その場合レジスタ数が少ないため、レジスタからのデータの 退避、復帰といった処理が多くなる。このようなプログラムを実際に実行する 時には物理レジスタが使用されるが、物理レジスタは論理レジスタより多いた め、もともとのプログラムでは同一のレジスタを使用する処理を異なった物理 レジスタを使用するようにレジスタの指定を変更することによりデータの退避、 復帰といった処理を除外することができ実行効率が向上する。

3. SIMD, Single Instruction Multiple Datastream とは並列演算の形態を表 す言葉で、複数のデータに対して同じ演算を行う場合を表す。演算は同じ(一 種類)なので単一の命令 (Single Instruction) で表現できる。一方、データ は複数個あるので (Multiple Datastream) となる。SIMD が利用される処理と いうのは多量のデータに同じ演算を行う場合で、かつ同時に実行する演算で利 用するデータ間に依存関係がなく並列に演算ができる場合である。具体的には、 信号処理、画像処理、行列演算などが該当する。これに対して、MIMD, Multiple Instruction Multiple Datastream という形態もあり、こちらは複 数のデータに対してそれぞれ異なった演算を行う演算が単一種類であることを 条件としない完全な並列処理である。

3. PIO のプログラミング、以下のプログラムを作成しなさい。
  1. A ポートのスイッチから読み込んだ値が奇数なら C ポートの LED を全点灯、偶数なら全消灯させる。

  2. A,B ポートのスイッチから入力して、両ポートのスイッチともに ON の位置だけ C ポートの LED を点灯させる。

  3. A,B,C ポートのスイッチから読み込んだ値をそれぞれ DATA1, DATA2, DATA3 に記録する。

(1)
PORTA	EQU	0F0H		; 各ポートには固
PORTB	EQU	0F1H		; 有のアドレスが
PORTC	EQU	0F2H		; 割り当てられる
CTRL	EQU	0F3H

	ORG	1000H

START	LD	A, 92H		; 各ポートの入出力の指定
	OUT	(CTRL), A	; A,B:入力 C:出力
	IN	A, (PORTA)
	AND	1
	JP	Z, L1
	LD	A, 255
	OUT	(PORTC), A
	JP	L2
L1	LD	A, 0
	OUT     (PORTC), A
L2	HALT
	END

(2)
PORTA	EQU	0F0H		; 各ポートには固
PORTB	EQU	0F1H		; 有のアドレスが
PORTC	EQU	0F2H		; 割り当てられる
CTRL	EQU	0F3H

	ORG	1000H

START	LD	A, 92H		; 各ポートの入出力の指定
	OUT	(CTRL), A	; A,B:入力 C:出力
	IN	A, (PORTB)
	LD	B, A
	IN	A, (PORTA)
	AND	B
	OUT	(PORTC), A
	HALT
	END

(3)
PORTA	EQU	0F0H		; 各ポートには固
PORTB	EQU	0F1H		; 有のアドレスが
PORTC	EQU	0F2H		; 割り当てられる
CTRL	EQU	0F3H

	ORG	1000H

START	LD	A, 9BH		; 各ポートの入出力の指定
	OUT	(CTRL), A	; A,B,C:入力
	IN	A, (PORTC)
	LD	C, A
	IN	A, (PORTB)
	LD	B, A
	IN	A, (PORTA)
	LD	(DATA1), A
	LD	A, B
	LD	(DATA2), A
	LD	A, C
	LD	(DATA3), A
	HALT

DATA1	DS	1
DATA2	DS	1
DATA3	DS	1
	END
4. 以下の条件を満たすシステムの回路図、アドレスデコーダの入出力の対応関係を示しなさい。
  1. 2K × 1Byte の ROMLSIを組み合わせて、8KB の ROM を、 512 × 1Byte の RAMLSIを組み合わせて、4KB の RAM を構成する。 0000H から ROM を、4000H から RAM を配置する。 ROMLSI, RAMLSI の Chip Select 信号は正論理とする。RAMLSI の R/W 信号は、 正論理で H のとき書き込みを表す。外部装置とのデータの入出力は、 ラッチ回路とゲート回路で実現する。割り込みは考慮しなくてよい。

  2. 1K × 1Byte の ROMLSIを組み合わせて、4KB の ROM を、 512 × 1Byte の RAMLSIを組み合わせて、2KB の RAM を構成する。 8000H から ROM を、E000H から RAM を配置する。 ROMLSI, RAMLSI の Chip Select 信号は正論理とする。RAMLSI の R/W 信号は、 正論理で H のとき読み込みを表す。外部装置とのデータの入出力は、Z80PIO で実現する。

1


1 の回路図



ROM,RAM のアドレスデコーダ


ROM のアドレスデコーダの入出力の関係

A15,A14,A13 A12 A11 RD MREQ 出力
0 0 0 0 0 0
0 0 1 0 0 1
0 1 0 0 0 2
0 1 1 0 0 3
* * * 1 * なし
* * * * 1 なし


RAM のアドレスデコーダの入出力の関係

A15 A14 A13,A12 A11 A10 A9 MREQ 出力
0 1 0 0 0 0 0 0
0 1 0 0 0 1 0 1
0 1 0 0 1 0 0 2
0 1 0 0 1 1 0 3
0 1 0 1 0 0 0 4
0 1 0 1 0 1 0 5
0 1 0 1 1 0 0 6
0 1 0 1 1 1 0 7
* * * * * * 1 なし

2


2 の回路図

Z80CPU と Z80PIO の INT, IORQ, RD, M1 を接続する。



ROM,RAM のアドレスデコーダ


ROM のアドレスデコーダの入出力の関係

A15 A14,A13,A12 A11 A10 RD MREQ 出力
1 0 0 0 0 0 0
1 0 0 1 0 0 1
1 0 1 0 0 0 2
1 0 1 1 0 0 3
* * * * 1 * なし
* * * * * 1 なし


RAM のアドレスデコーダの入出力の関係

A15,A14,A13 A12,A11 A10 A9 MREQ 出力
1 0 0 0 0 0
1 0 0 1 0 1
1 0 1 0 0 2
1 0 1 1 0 3
* * * * 1 なし