HOME»基本情報技術者試験掲示板»平成31年春期午後問12 設問1 aについて
投稿する
ビットインデックスの部分は0~15の16ビット分となりますが、
ここを16進数で表すとすっきりします。
ビットインデックス
0123456789ABCDEF
相 0................
対 1................
ア 2............*...
ド 3................
レ 4................
ス 5................
44は16進数に直すと2Cとなり上記の*部分になります。
ここで重要なのが、
16進数で表すと下1桁がビットインデックスとなり
下2桁目より上は相対アドレスとなる事です。
説明として
「連続した3語に,ビット領域の先頭アドレス,対象ビット列のビット位置,及び対象ビット列のビット長をこの順に格納して,その3語の先頭アドレスを GR1 に設定して呼び出す。」
がありますので
ビット領域の先頭アドレス:GR1に設定されているアドレス
対象ビット列のビット位置:GR1に設定されているアドレス+1
対象ビット列のビット長 :GR1に設定されているアドレス+2
となります。
3 LD GR3,1,GR1
→GR1に設定されているアドレス+1(対象ビット列のビット位置)をGR3にロードします。
6 LD GR2,GR3
→GR3(対象ビット列のビット位置)をGR2にコピーします。
7 SRL GR2,4
→GR2を右に4ビット論理シフトします。
GR2では相対アドレスを求めますが、GR2の値が値44の場合だと16進数で2Cですが、このCの部分が不要となります。
16進数1桁分は2進数4桁分であり、右に4ビット論理シフトすることになります。
8 AND GR3,=#000F
→GR3と16進数の000Fとの論理和を求め、GR3に設定します。
GR3ではビットインデックスを求めますが、GR3の値が値44の場合だと16進数で2Cですが、このCの部分のみを抜き出します。
9 LD GR4,2,GR1
→GR1に設定されているアドレス+2(対象ビット列のビット長)をGR4にロードします。
平成31年春期午後問12 設問1 aについて [2747]
あもんがすさん(No.1)
https://www.fe-siken.com/kakomon/31_haru/pm12.html
解説を見て、例通りに3~9までの処理を実際に机上でトレースしてみたのですが、、、
どうしてもビットインデックスと相対アドレスの値がマッチしないのですが、どういった処理が行われてるのでしょうか。
値 44は 0100 0100 であっているのでしょうか。
わかりにくくて申し訳ないのですが、よろしくお願いします。
解説を見て、例通りに3~9までの処理を実際に机上でトレースしてみたのですが、、、
どうしてもビットインデックスと相対アドレスの値がマッチしないのですが、どういった処理が行われてるのでしょうか。
値 44は 0100 0100 であっているのでしょうか。
わかりにくくて申し訳ないのですが、よろしくお願いします。
2021.01.28 21:28
関数従属さん(No.2)
★FE ゴールドマイスター
>ビット位置が44について
ビットインデックスの部分は0~15の16ビット分となりますが、
ここを16進数で表すとすっきりします。
ビットインデックス
0123456789ABCDEF
相 0................
対 1................
ア 2............*...
ド 3................
レ 4................
ス 5................
44は16進数に直すと2Cとなり上記の*部分になります。
ここで重要なのが、
16進数で表すと下1桁がビットインデックスとなり
下2桁目より上は相対アドレスとなる事です。
>3~9について
説明として
「連続した3語に,ビット領域の先頭アドレス,対象ビット列のビット位置,及び対象ビット列のビット長をこの順に格納して,その3語の先頭アドレスを GR1 に設定して呼び出す。」
がありますので
ビット領域の先頭アドレス:GR1に設定されているアドレス
対象ビット列のビット位置:GR1に設定されているアドレス+1
対象ビット列のビット長 :GR1に設定されているアドレス+2
となります。
3 LD GR3,1,GR1
→GR1に設定されているアドレス+1(対象ビット列のビット位置)をGR3にロードします。
6 LD GR2,GR3
→GR3(対象ビット列のビット位置)をGR2にコピーします。
7 SRL GR2,4
→GR2を右に4ビット論理シフトします。
GR2では相対アドレスを求めますが、GR2の値が値44の場合だと16進数で2Cですが、このCの部分が不要となります。
16進数1桁分は2進数4桁分であり、右に4ビット論理シフトすることになります。
8 AND GR3,=#000F
→GR3と16進数の000Fとの論理和を求め、GR3に設定します。
GR3ではビットインデックスを求めますが、GR3の値が値44の場合だと16進数で2Cですが、このCの部分のみを抜き出します。
9 LD GR4,2,GR1
→GR1に設定されているアドレス+2(対象ビット列のビット長)をGR4にロードします。
2021.01.29 21:28
関数従属さん(No.3)
★FE ゴールドマイスター
上記において以下の部分を間違えましたので訂正いたします。
↓
→GR3と16進数の000Fとの論理積を求め、GR3に設定します。
>→GR3と16進数の000Fとの論理和を求め、GR3に設定します。
↓
→GR3と16進数の000Fとの論理積を求め、GR3に設定します。
2021.01.29 23:24
あもんがすさん(No.4)
わかりやすい説明ありがとうございます!
自分も、再度トレースしてみて各行の役割を理解することができました!
自分も、再度トレースしてみて各行の役割を理解することができました!
2021.01.30 12:30