CASL(CASL2)でこんな問題があります。ぜひ教えてください。
・以下のプログラムを実行したときに,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
こんな質問で非常にもし分けないのですが…
自分なりに色々考えましたが,どうもうまく行きません。
ご指導よろしくお願いします。
わかる範囲で構いませんのでロジックと解説をお願いします。