RAMの読み取り・書き換えをマイコンで

まだ製作していない。
マイコンの外部設計
イメージ 1

スイッチ
ビットスイッチ:ビット0スイッチとビット1スイッチの総称。それら2つのスイッチの入力の組み合わせで2進数を表せる。ビット0スイッチは2進数の下位1ビット、ビット1スイッチは2進数の上位1ビットを表す。
データ読み取りスイッチ:押すと、ビットスイッチで表されている仮想アドレスのレジスタ内のデータをデータインジケータに展開できる。
データ書き換えスイッチ:押すと、現在展開されているレジスタ内の数値を、ビットスイッチで表されている数値に変換できる。
パーミッション表示スイッチ:押すと、ビットスイッチで表されている仮想アドレスのレジスタパーミッションパーミッションインジケータに表示できる。

インジケータ
データインジケータ:現在展開中のレジスタ内のデータを表示できる。
パーミッションインジケータ:特定のレジスタパーミッションを表示できる。

パーミッションインジケータ
Rは、読み取り可能かどうかを表すインジケータ。
Wは、書き換え可能かどうかを表すインジケータ。

マイコンの内部設計
ストレージ
アドレス0Chのレジスタ:ファイルA。仮想アドレスは0b00。
アドレス0Dhのレジスタ:ファイルB。仮想アドレスは0b01。
アドレス0Ehのレジスタ:ファイルC。仮想アドレスは0b10。
アドレス0Fhのレジスタ:ファイルD。仮想アドレスは0b11。
アドレス10hのレジスタ:ファイルAのパーミッションのデータを格納。
アドレス11hのレジスタ:ファイルBのパーミッションのデータを格納。
アドレス12hのレジスタ:ファイルCのパーミッションのデータを格納。
アドレス13hのレジスタ:ファイルDのパーミッションのデータを格納。

パーミッションのデータを格納するレジスタ
ビット0:読み取り可能かを表す。
ビット1:書き換え可能かを表す。

プログラムの一部
PERMISSION_INDICATION
;パーミッションインジケータを全て消灯
bcf PORTB,2
bcf PORTB,3

;ビットスイッチの入力状態をチェック
movf PORTA,W
andlw 03h

;対応するレジスタのアドレスをFSR
addlw 0Ch
addlw 04h
movwf FSR

;読み取り可能か
btfsc INDF,0
bsf PORTB,2 ;可能ならRを点灯

;書き換え可能か
btfsc INDF,1
bsf PORTB,3 ;可能ならWを点灯

return