29772


基本情報技術者試験 H26春午後問2の問題です。

不明な点は実行アドレスとレジスタ番号に格納された値どうしの論理演算です。  
問題を簡略化して記載します。

# 問題

* * *

■命令後形式(数字はビット数を表す)  
|15 [op] 12|11 [r又はm] 10|9 [x] 8|7 [b] 6|5 [d] 0|

■記号説明  
op:命令コード  
r:レジスタ番号  
m:分岐命令で分岐の判定に使用する値  
x:指標レジスタとして使用するレジスタ番号  
b:基底レジスタとして使用するレジスタ番号  
d:00h~3Fhで示されるアドレス変位

■実行アドレスの計算式  
x | b | 実行アドレス  
0である|0である|d  
0である|0でない|(b) + d  
0でない|0である|(x) + d  
0でない|0でない|(x) + (b) + d

■命令コード  
1:実行アドレスに格納されている値とrで指定されている値の論理和をrに設定  
2:実行アドレスに格納されている値とrで指定されている値の論理積をrに設定  
3:実行アドレスに格納されている値とrで指定されている値の排他的論理和をrに設定  
4:mとCCの論理積を求め、結果が00でなければ実行アドレスに分岐する。00であれば何もしない。

■レジスタの内容  
0:0004h  
1:0003h  
2:0002h  
3:0001h

■主記憶装置の内容  
0001h:0001l  
…  
0010h:12C0h  
0011h:24C0h

* * *

例えば0010h番地の命令を解読すると、内容を2進数化して命令後の形式に当てはめると、  
0001(op) 00(r,m) 10(x) 11(b) 000000(d) から命令コードが1番(論理和)になり、  
xとbが0でないので(x) + (b) + dとなり  
実行アドレス = 0002h + 0001h + 00h = 0003h  
レジスタ0 ← （主記憶の0003h番地に格納されている内容）OR （レジスタ0の内容）  
から  
**レジスタ0 ← 0003h OR 0004h**  
よってレジスタ0には0007hが格納されることになります。  
ここの論理演算がよくわかりません。

また、0011h番地の場合は、  
0010 01 00 11 000000 から命令コードが2番(論理積)になり、  
xが0である場合は(b) + dなので、  
実行アドレス = 0001h + 00 = 0001h  
**レジスタ1 ← 0001h AND 0003h**  
よってレジスタ1には0001hが格納されます。  
ここの論理演算もよくわかりません。

通常の2進数の論理演算はわかるのですが…  
どなたかご教授願いたいです。よろしくお願いいたします。


CC BY-SA 3.0
2016-10-20T17:04:44.150
29749
2016-10-21T15:00:13.530
2020-06-17T08:14:45.997
-1
13969
question
情報理論
２進数の論理演算について


対象の論理演算の値の16進数と認識していなかった、数字の後のh意味を考えていなかったのが原因でした。


CC BY-SA 3.0
2016-10-21T09:57:23.040
29772
2016-10-21T09:57:23.040
13969
29749
answer