HOME»基本情報技術者試験掲示板»平成29年春期午後問12
投稿する
»[5748] 科目Bのアルゴリズム、セキュリティの配点について 投稿数:3
»[5747] 基本情報取得後の「情報セキュマネ」の立ち位置について 投稿数:3
平成29年春期午後問12 [5750]
御餅論理加算さん(No.1)
https://www.fe-siken.com/kakomon/29_haru/pm12
『プログラム2』のEXITLOOPでTEMPを倍にする処理がありますが、ADD64はGR3に結果を格納するはずなのでTEMPではなくGR3にTEMP×2を格納するような形になってしまうのではないでしょうか?そうなってしまえばGR3に入っていた前回までの計算(TESTBITでのADD64での計算結果)が無駄になってしまいそうですし、実際そんなことなくTEMPは倍になるのだろうと思いますが、なぜGR3ではなくTEMPに変更が加えられるのか教えてください。
『プログラム2』のEXITLOOPでTEMPを倍にする処理がありますが、ADD64はGR3に結果を格納するはずなのでTEMPではなくGR3にTEMP×2を格納するような形になってしまうのではないでしょうか?そうなってしまえばGR3に入っていた前回までの計算(TESTBITでのADD64での計算結果)が無駄になってしまいそうですし、実際そんなことなくTEMPは倍になるのだろうと思いますが、なぜGR3ではなくTEMPに変更が加えられるのか教えてください。
2025.01.07 04:14
jjon-comさん(No.2)
★FE ゴールドマイスター
基本情報 平成29年 春期 午後 問12 アセンブラ
https://www.fe-siken.com/kakomon/29_haru/pm12.html
説明のための例示として,
〔プログラム2〕に与えられる引数が次のようだとします。
GR1が指す2語 (00000000 01100100)2 = (100)10
GR2が指す2語 (00000000 00101010)2 = (42)10
10進数で 100×42=4200 を求めたいということです。
〔プログラム2〕でこれをどう実現しているかというと。
(1) GR3は乗算結果を格納する 4語の先頭を指す。
プログラム2においてGR3はいっさい変化しない。
(2) GR1が指す2語 (100)10 をTEMPから始まる4語に初期値として格納する。
TEMPが指す4語 (00000000 00000000 00000000 01100100)2
(3) TEMPから始まる4語はループのたび 2倍される(1bit左シフトと同じ効果)
(LAD GR1,TEMP と (f)LAD GR2,TEMP と CALL ADD64)
(4) GR2が指す2語はループのたびに ループカウンタ分 右シフトして,
最下位ビットを検査し(AND GR0,=#0001)加算するか否かを判定する。
この例示データでいうと,
(00000000 00101010)2 = (42)10 に存在するビット1の3個分を検査し,
TESTBITラベル内の次のコードによって,
LD GR1,GR3
LAD GR2,TEMP
CALL ADD64
GR3が指す乗算結果格納領域に対して,
(00000000 00000000 00000000 11001000)2 =TEMP×2 = (200)10
(00000000 00000000 00000000 01100100)2 =TEMP×8 = (800)10
(00000000 00000000 00001100 10000000)2 =TEMP×32 =(3200)10
のように加算していくことで (4200)10 を求めています。
https://www.fe-siken.com/kakomon/29_haru/pm12.html
説明のための例示として,
〔プログラム2〕に与えられる引数が次のようだとします。
GR1が指す2語 (00000000 01100100)2 = (100)10
GR2が指す2語 (00000000 00101010)2 = (42)10
10進数で 100×42=4200 を求めたいということです。
〔プログラム2〕でこれをどう実現しているかというと。
(1) GR3は乗算結果を格納する 4語の先頭を指す。
プログラム2においてGR3はいっさい変化しない。
(2) GR1が指す2語 (100)10 をTEMPから始まる4語に初期値として格納する。
TEMPが指す4語 (00000000 00000000 00000000 01100100)2
(3) TEMPから始まる4語はループのたび 2倍される(1bit左シフトと同じ効果)
(LAD GR1,TEMP と (f)LAD GR2,TEMP と CALL ADD64)
(4) GR2が指す2語はループのたびに ループカウンタ分 右シフトして,
最下位ビットを検査し(AND GR0,=#0001)加算するか否かを判定する。
この例示データでいうと,
(00000000 00101010)2 = (42)10 に存在するビット1の3個分を検査し,
TESTBITラベル内の次のコードによって,
LD GR1,GR3
LAD GR2,TEMP
CALL ADD64
GR3が指す乗算結果格納領域に対して,
(00000000 00000000 00000000 11001000)2 =TEMP×2 = (200)10
(00000000 00000000 00000000 01100100)2 =TEMP×8 = (800)10
(00000000 00000000 00001100 10000000)2 =TEMP×32 =(3200)10
のように加算していくことで (4200)10 を求めています。
2025.01.07 17:15
jjon-comさん(No.3)
★FE ゴールドマイスター
旧試験制度の出題範囲だったCASLⅡアセンブラの質問が続いたのが気になっています。
https://www.fe-siken.com/bbs/5710.html
https://www.fe-siken.com/bbs/5724.html
https://www.fe-siken.com/bbs/5750.html
現行の新試験制度(CBT受験、科目A・科目B)では出題範囲外の質問が
なぜいま投稿されるのか,私が知らない事情が何かあったりするのでしょうか?
https://www.fe-siken.com/bbs/5710.html
https://www.fe-siken.com/bbs/5724.html
https://www.fe-siken.com/bbs/5750.html
現行の新試験制度(CBT受験、科目A・科目B)では出題範囲外の質問が
なぜいま投稿されるのか,私が知らない事情が何かあったりするのでしょうか?
2025.01.07 17:18
jjon-comさん(No.4)
★FE ゴールドマイスター
No.2 の次の一行を訂正。
誤 (00000000 00000000 00000000 01100100)2 =TEMP×8 = (800)10
正 (00000000 00000000 00000011 00100000)2 =TEMP×8 = (800)10
誤 (00000000 00000000 00000000 01100100)2 =TEMP×8 = (800)10
正 (00000000 00000000 00000011 00100000)2 =TEMP×8 = (800)10
2025.01.07 17:36
御餅論理加算さん(No.5)
すみません これを含めて2つは私の質問でした。出題外だと知らずに勉強してました…回答に続き、前回もご指摘いただきありがとうございます。
2025.01.09 23:04
その他のスレッド
»[5749] 大滝本 3.11について 投稿数:3»[5748] 科目Bのアルゴリズム、セキュリティの配点について 投稿数:3
»[5747] 基本情報取得後の「情報セキュマネ」の立ち位置について 投稿数:3