プロが教えるわが家の防犯対策術!

・以下のプログラムを実行したときに,ANS0番地からANS6番地までの各番地に格納される値を16桁の2進数で答えよ。本プログラムのNUM番地からの7語には,それぞれ数値として格納されているものとする。

LAD GR1,O
LOOP CPA GR1,LEN
   JZE FIN
LD GR2,NUM,GR1
LD GR0,CHAR,GR2
ST GR0,ANS0,GR1
LAD GR1,1,GR1
JUMP LOOP
FIN RET
NUM DC 1,3,5,6,4,2,0
LEN DC 7
CHAR DC'ABCDEFGHIJ'
ANS0 DS1
ANS1 DS1
ANS2 DS1
ANS3 DS1
ANS4 DS1
ANS5 DS1
ANS6 DS1
END


・以下のプログラムを実行したときに,ANS番地に格納される値を,4桁の16進数で答えよ。本プログラムはNUM番地からの3語には,222が文字列として格納されているものにする。

START
LAD GR0,0
LAD GR1,0
LOOP CPA GR1,CNT
JZE NEXT
LD GR2,NUM,GR1
AND GR2,COOOF
ADDA GR0,GR2
LAD GR1,1,GR1
JUMP LOOP
NEXT LD GR3,GR0
SLA GR3,7
ST GR3,WK1
SRA GR3,3
ST GR3,WK2
SRA GR3,1
ST GR3,WK3
SRA GR3,1
ST GR3,WK4
LD GR3,WK1
SUBA GR3,WK2
SUBA GR3,WK3
SUBA GR3,WK4
ST GR3,ANS
RET
NUM DC '222'
CNT DC 3
C000F DC #000F
WK1 DS 1
WK2 DS 1
WK3 DS 1
WK4 DS 1
ANS DS 1
END




・以下のプログラムを実行すると,ANS番地からの5語に,以下のような
ビットパターンが格納される。
ANS+0番地 1000000000000000
ANS+1番地 0000000010000000
ANS+2番地 0000000000001000
ANS+3番地 0000000000000010
ANS+4番地 0000000000000001

このとき,(1)~(6)の空欄に適切な命令コードやオペランドを入れて,
プログラムを完成させよ。

START
  LAD  GRO,1
  LAD  GR1,1
((1)) GR2,LEN
LOOP SUBA  GR2,=1
  ((2)) FIN
   ST  ((3))
   SLL  ((4))   
   SLA  GR1,1
   JUMP LOOP
FIN  RET
ANS  ((5))5
LEN  ((6))5
   END



・20文字以内の文字列Sを入力し,Sの末尾にある文字※の個数だけ
文字#をSの先頭に追加し,かつSの末尾にある文字※を削除した文字列
Rを出力する。

入力する文字S
CASLII※※※※

出力する文字R
####CASLII








こんな質問で非常にもし分けないのですが…
自分なりに色々考えましたが,どうもうまく行きません。
ご指導よろしくお願いします。
わかる範囲で構いませんのでロジックと解説をお願いします。

A 回答 (3件)

>なんとかここまでは内容を理解できましたが,


>((4))の答えがどうしても解りません。
>おしえて下さい。お願いします。

まず、((3))が間違っています。
これでは同じ場所に代入してしまいます。
代入先は5箇所あるわけですから、可変にしなくてはいけません。
この問題はわざとややこしく(まぁ、情報技術者試験の問題はみんなそうですが)してあるので、格納順番は次の順で値を格納します。
ANS+4番地 0000000000000001
ANS+3番地 0000000000000010
ANS+2番地 0000000000001000
ANS+1番地 0000000010000000
ANS+0番地 1000000000000000
よ~く考えてみてください。

((4))は、レジスタを2つ使用します。
ANS+4~ANS+0までの変化の法則性が見えてきませんか?
ANSに関係するレジスタは何でしょうか?

そういえば、問い1、2の問題の答えが分かったといってましたが、ちゃんと1命令づつトレースしてレジスタの変化は理解しましたか?
ここでちゃんとやらないと理解が進みませんよ。
    • good
    • 0

そのものの答えを聞くのは、勉強法として間違っています。


自分で考えないと身につきません。特に、試験用の言語ですから応用力がものを言います。
なので、まず考え方のヒントだけ。
(3問目)
1行ごとに、やっている事を書き出してみましょう。
LAD  GRO,1なら、代入。GR0←1
((1))初期値の設定をしています。
((2))ループに関係する命令です。
((3))何かを保存しています。
((4))ここの問題の最大のポイント。
((5))ANS番地からの5語とります。
((6))値を置きます。
   
(4問目)
まず、流れ図(フローチャート)書けますか?知らなければ、処理手順を書き出してみてください。処理手順とは、何も知らない人のために作業手順をマニュアル化する様な感じで書きます。3問目も同じようにしたほうが良いかもしれません。

どうしても分からない場合に以下の練習問題あたりからやり直したほうが良いでしょう。基礎力を身につけてください。
http://www016.upp.so-net.ne.jp/masuda2/casl2/ind …
http://sci-tech.ksc.kwansei.ac.jp/~hayafuji/Sci- …
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
問3ですが,
TEST START
LAD GR0,1
LAD GR1,1
LD GR2,LEN
LOOP SUBA GR2,=1
JZE FIN
ST GR0,ANS
SLL (4)
SLA GR1,1
JUMP LOOP
FIN RET
ANS DS 5
LEN DC 5
END

なんとかここまでは内容を理解できましたが,
((4))の答えがどうしても解りません。
おしえて下さい。お願いします。

お礼日時:2007/10/17 01:37

とりあえず答えているヒマがないので、シミュレータを使って動かしてみるべし!


http://www.vector.co.jp/vpack/filearea/win/prog/ …
    • good
    • 0
この回答へのお礼

回答ありがとうございました。問題の上から見て1問目,2問目のプログラムが書いてあるやつはシミュレータを使い解読できました。
本当に助かりました。ありがとうございます。

しかし3問目,4問目が解りません。。答えから逆算して内容を理解
したいので,どうか教えてください。

お礼日時:2007/10/15 00:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!