• 締切済み

CASLIIの問題なんですが

CASLIIの問題なんですが DAT番地より格納された5個のデータの0以上の数の個数をGR2に数えるプログラムを作成せよ。 という問題が解けません>< どなたかご教授お願いします。

みんなの回答

  • vaguechat
  • ベストアンサー率85% (47/55)
回答No.3

      XOR  GR2,GR2 ; CLEAR GR2       LD   GR1,=5 ; NUMBER OF UNCHECKED DAT LOOP  SUBA GR1,=1       JMI  FIN ; JUMP IF ALL DAT WAS CHECKED       LD   GR0,DAT,GR1       JMI  LOOP       ADDA GR2,=1 ; COUNTUP GR2 IF GR0 ISN'T NEGATIVE       JUMP LOOP FIN   NOP

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

ZERO  DC  0 ONE    DC  1 FIVE   DC  5 KAISHI  LD   GR2,0       LD    GR1,0 LOOP  LD   GR0,DAT,GR1       CMA  GR0,ZERO       JZE   NEXT       ADDA  GR2,ONE NEXT   ADDA  GR1,ONE       CMA   GR1,FIVE       JNZ   LOOP こんな感じ。もっと上手い方法があるかも? 丸コピすると、説明できずに苦しむので、 解説はしないから、自分で考えてね。

  • hanmemomo
  • ベストアンサー率35% (205/580)
回答No.1

なつかしい・・・キャッスルかー 久しぶりなので、適当になってしまうかもですが http://www5a.biglobe.ne.jp/~teamcasl/caslkozatop.htm ここを参考にしながら CPAを使いそうなのですが、私の場合プロなのでそうもいかず ANDで行くでしょうね 同じものとANDを取ると値はそのままで、結果として0だったかだけを比較するので、 JZE で分岐させます。 CASLのINCがわからなーぃwww とりあえずジャンプ条件付Z(つまり元が0だった)場合 の残りが、GR2が+1になればOK それ以外はGR2が+1を通らなければOK 後はこれを5回やればOK プログラマの説明ってわかりにくいね ごめんなさい

関連するQ&A

  • CASLIIの問題

    次のプログラムに、 指定された整数値配列の中から最大値を調べるサブルーチンMAXを作成する、 指定された整数値配列の中から最小値を調べるサブルーチンMAXを作成する、 指定された整数値配列を昇順にソートするサブルーチンSORTを作成する、 指定された整数値配列の平均値(整数値)を調べるサブルーチンAVEを作成する、 これらについて教えてください。 PGM START LAD GR1, DATA LD GR2, =10 CALL SUM ST GR0, RESULT RET DATA DC 1,9,3,7,5,10,2,8,4,6 RESULT DS 1 END SUM START PUSH 0, GR1 PUSH 0, GR7 LD GR0, =0 LD GR7, =0 MAIN CPA GR7, GR2 JZE QUIT ADDA GR0, 0, GR1 LAD GR1, 1, GR1 LAD GR7, 1, GR7 JUMP MAIN QUIT POP GR7 POP GR1 RET END GR1はデータの先頭番地、SUMをコールするとGR1が1ずつ加算されてデータが参照できる。 GR2はデータの個数、ラベルMAINで個数を比較している。 などのことはわかるのですが、 プログラムを作るとなるとまったくわかりません。 どなたか教えていただけませんか?? お願いします!!

  • CASLII わかるかた いますか?

    ZAIKO,NYUKO,SYUKKOの各番地にそれぞれ、30、20,10という値が格納されている。 このとき「ZAIKO番地に格納された値+NYUKO番地に格納された値-SYUKKO番地に格納された値」を計算し、その結果をZAIKO番地に格納する。 CASLIIなのですが、 わかる方 いらっっしゃるでしょうか? このもんだいが 解けなくて ずっと引っかかっております。よかったら お願いいたします。

  • CASLIIの問題で困っています

    最近学校でCASLIIを情報の時間に習ったのですが、さっぱり意味が分かりません。 CASLIIの命令、オペランドが表している意味を詳しく解説願います。 カテゴリ間違っていたらごめんなさい! 論理演算プログラム   ラベル    命令     オペランド REI1003   START             LD       GR1,DATA1          OR       GR1,DATA2          LD       GR1,DATA1          AND      GR1,DATA2          LD       GR1,DATA1 XOR GR1,DATA2 RET DATA1 DC #5AOF DATA2 DC #FOFO END 解答お願いします!!><

  • CASLIIでLADやSTなどの命令の読み方がよくわからない

    LD GR6,GR1 LAD GR1,PARAM(8045番地にある) ST GR6,1,GR1 GR1は4という内容、PARAMは8045番地にあるとします。 ST命令ならば、GR6の内容を(1+GR1)へ入れると読むのでしょうが、 「8046番地に入れる」と読むのでしょうか。 しかし、8046番地にはEND命令があり、わけがわからないです。 まだ、CASLIIの初心者であり、読みなれていません。 よろしくお願いします。

  • 戻り番地を逃がしておくの意味が分かりません

    いつもお世話になっております。独学で情報処理の勉強をしています。昨日CASLIIをキャスルツーと読むことを知ったぐらいです。「なるべく専門用語を使わないで答えてくださる方」よろしくお願いします。 基本情報午後の選択はCASLIIがいいと思って参考書を読んでみたのですが、とても難しく、ネットで検索していたら理解を深めるための記事みたいのがあったのですが、【主プログラムから副プログラムのデータの受け渡し】ということで以下のことが書かれてます。 LAD  GR1,123     ;GR1に123を格納する(主プログラムの先頭)   PUSH   0,GR1 ;123をスタックに格納する     LAD   GR2,456 ;GR2に456を格納する     PUSH   0,GR2 ;456をスタックに格納する     CALL   SUB1  ;副プログラムSUB1を呼び出す     POP   GR3    ;加算結果をスタックからGR3に取り出す        :   ;これ以降の処理は省略する  SUB1 POP   GR4   ;戻り番地を逃がしておく  ←これ!!    POP   GR1    ;GR1に456を取り出す(副プログラムの先頭)   POP   GR2   ;GR2に123を取り出す     ADDA  GR1,GR2 ;GR1とGR2の加算結果をGR1に格納する      PUSH   0,GR1 ;加算結果をスタックに格納する      PUSH   0,GR4 ;戻り番地を元通りにする  ←ここも!!     RET      ;主プログラムに戻る(副プログラムの末尾) の、戻り番地を逃がしておくが意味がよく分かりません。なので、戻り番地を元通りにするもよく分かりません。 よろしくお願いします。

  • CASLIIの解説

    以下のような問題があり、解答がありますが理解できません。 すみませんが、どなたか解説をお願いします。 ---------------------------------------------------------- ■問題  10進数の「5×20」の結果を求め、その結果をメモリに格納するプログラムを作成せよ。ただし、「5×20」の数を他の数に置き換えた時も掛け算が行えるプログラムにすること。 ■解答  SAMPLE START LAD GR1,0 LAD GR2,1 LD GR3,=5 LOOP LD GR4,C20 AND GR4,GR2 JZE NEXT ADDA GR1,GR3 NEXT SLA GR3,1 SLL GR2,1 JNZ LOOP ST GR1,ANS RET C20 DC 20 ANS DS 1 END

  • サブルーチンでの加算

    CASLIIの課題で、 主プログラムで、連続したN語の領域に格納されているデータの先頭番地をサブルーチンに渡し、サブルーチンでデータを加算し、主プログラムのANS番地に格納するプログラムを作成しなさい。 という問題が出ました。 サブルーチンでの加算法がよくわかりません。 どなたかご教示ください。 MAIN     START LAD GR0,TBL ST GR0,PARA LAD GR1,1 LD GR0,N ST GR0,PARA,GR1 LAD GR1,PARA CALL  SUBR ST GR0,ANS RET TBL DC 1,2,3,4,5,6,7,8,9,10 N DC 10 PARA DS 2 ANS DS 1 END

  • CASLIIの問題が分かりません。

    資格の勉強のためCASLIIの参考書を買い問題を解いてるのですが分からないので質問します。 4桁の16進文字列を入力し、それを数値に変換してメモリ上に格納するプログラム。 SAMPL16 START LD GR1,0BUF LD GR0,=1000 CALL REVESUB OUT OBUF,LEN LET OBUF DS 4 LEN DC 1 ANS DS 1 END REVESUB START PUSH 0,GR1 PUSH 0,GR2 PUSH 0,GR3 PUSH 0,GR4 LAD GR0,0 LAD GR2,0 LOOP SLL GR0,4 ;ここまでの結果を4ビット左シフト LD GR3,0,GR1 ;1文字取り出し CPL GR3,='A' JMI NEXT ADDL GR3,=9 NEXT AND GR3,C000F ADDL GR0,GR3 LAD GR1,1,GR1 LAD GR2,1,GR2 CPL GR2,=4 JMI LOOP POP GR4 POP GR3 POP GR2 POP GR1 RET C000F DC #000F END SLL GR0,4 で4ビットシフトする意味がわかりません。あとLD GR3,0,GR1で1文字だけ取り出せるのですか?取り出すのは下位からですか?

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

  • CASLの問題が分かりません。

    資格の勉強のためCASLIIを勉強しているのですが、問題がわからなく質問します。 ●10進数1000を16ビットの2進数で表現した時、その値の中に1が何個含まれているかを求め、その結果をメモリに格納するプログラムを作成せよ。 SAMPL  START ; 1が立っている数 LAD GR1,0 LAD GR2,1 LOOP LD GR3,C1000 AND GR3,GR2 ;1が立っているか調べる JZE NEXT ;1が立っていない場合ジャンプ LAD GR1,1,GR1 ;1を加算 NEXT SLL GR2,1 ;1ビットを左にずらす JNZ LOOP ;繰り返し ST GR1,ANS RET C1000 DC 1000 ANS DS 1 END このプログラムでAND GR3,GR2 の部分からよくわからなく、コメントの「1が立っているか調べる」とありますが、1が立っているとはどういう意味なんでしょうか?それ以降から理解できなく、解説をお願いします。

専門家に質問してみよう