• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:casl(2)の質問)

casl(2)のじゃんけんの勝敗判定プログラム

このQ&Aのポイント
  • CASL(2)のじゃんけんの勝敗を判定するプログラムの作成方法について紹介します。
  • PLAY1とPLAY2の手の結果がHANTEIに格納され、PLAY1が勝ち(1)、PLAY2が勝ち(2)、あいこ(0)を表します。
  • 副プログラムの部分の命令には何を記述すればいいのか解説します。

質問者が選んだベストアンサー

  • ベストアンサー
  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.1

そこには、GR4を1増やす命令が入ります。 LAD GR4,1,GR4 または ADDA GR4,=1 この後で演算結果を判定する必要がないので、LADのほうが効率的でしょう。 このロジックはループを最大3回まわして判定をします。 1回目:あいこ(0)の判定…………GR4=0 にて PLAY1とPLAY2 比較  2回目:PLAY1が勝ち(1)の判定…GR4=1 にて PLAY1+1とPLAY2 比較  3回目:PLAY2が勝ち(2)の判定…GR4=2 にて PLAY1+2とPLAY2 比較 PLAY1+1(or2)が3になると判定できないので0に戻しています。 これは高級言語ならMOD(演算または関数)をつかうところです。 なかなか面白いアルゴリズムです。

momo385
質問者

お礼

ありがとうございました。すごく助かりました。 ほんとは回答は期待してなかったのですが、良かったです。♪ ~ o(^-^o)☆ ♪

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • CASLの問題なんですが…。

    このプログラム、動きはするのに終了してくれません。どうすれば良いでしょうか。 電話番号テーブル(名前18文字、電話番号12文字を対にして格納。全て半角)から指定された名前を検索し、名前と電話番号を表示するプログラムです。 SEARCH START BEGIN LD GR0,SPACE LAD GR1,0 LOOP1 ST GR0,INBUF,GR1 LAD GR1,1,GR1 CPA GR1,C18 JNZ LOOP1 INPUT IN INBUF,LENG LAD GR0,47 CPL GR0,INBUF JZE FIN LAD GR0,0 ST GR0,FLAG LAD GR2,TABLE LOOP2 ST GR2,POINT LAD GR0,47 CPL GR0,0,GR2 JZE LAST LAD GR1,0 LOOP3 LAD GR0,42 CPL GR0,INBUF,GR1 JZE FOUND LD GR0,INBUF,GR1 CPL GR0,0,GR2 JNZ TNXT LAD GR1,1,GR1 LAD GR2,1,GR2 CPA GR1,C18 JNZ LOOP3 FOUND LAD GR0,1 ST GR0,FLAG CALL DIS TNXT LD GR2,POINT LAD GR2,30,GR2 JUMP LOOP2 LAST LAD GR0,1 CPA GR0,FLAG JZE BEGIN OUT NFIND,C10 JUMP BEGIN FIN RET DIS LAD GR3,0 LD GR0,POINT LOOP4 LD GR0,0,GR1 ST GR0,OBUF,GR3 LAD GR3,1,GR3 CPA GR3,C30 JZE EXIT1 LAD GR1,1,GR1 JUMP LOOP4 EXIT1 OUT OBUF,C30 RET POINT DS 1 TABLE DC 'ヤマダ タロウ 0123-456-789' DC '/' INBUF DS 80 LENG DS 1 OBUF DS 80 SPACE DC #0020 C10 DC 10 C18 DC 18 C30 DC 30 NFIND DC '該当者なし' FLAG DS 1 END

  • CASLII(以前の問題について)

    次のプログラムに、 指定された整数値配列の平均値(整数値)を調べるサブルーチンAVEを作成する、 という問題で、手も足もでないということで以前に質問させていただきました。 丁寧な回答をいただいたのですが、それとは別に、AVEを作ってみました。 ところが、どこかが間違っているらしく、うまく動きません。 それどころか、だらだらと長くなってしまい、自分自身でも途中からわからなくなってしまいました。。 このたどたどしいプログラムの修正と、解説をどなたか回答していただけませんでしょうか?? あと、上記のSUMがコールされたあとのGR0の役割、 SUM内おけるGR0、GR7の役割、 SUM内においてGR1、GR7をPUSH、POPする理由、 サブルーチンSUMの機能を教えてください。 お願いいたします!! 元からあるプログラム 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 自分が作成したAVEのプログラム PGM START LAD GR1,DATA LD GR2,=10 LD GR0,=100 LD GR6,=6 LD GR5,GR6 CALL AVE 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,7,GR7 LAD GR6,6,GR6 JUMP MAIN QUIT POP GR7 POP GR1 CALL AVE RET END AVE START PUSH 0,GR6 LD GR3,=0 CPA GR0,GR6 JMI AQUIT SHIFT CPA GR0,GR6 JMI STEP SLA GR6,1 JUMP SHIFT STEP SRA GR6,1 STEP1 CPA GR0,GR6 JMI STEP2 SLA GR3,1 SUBA GR0,GR6 ADDA GR3,=1 JUMP STEP3 STEP2 SLA GR3,1 STEP3 SRA GR6,1 CPA GR6,GR5 JMI AQUIT CPA GR0,=0 JZE AQUIT JUMP STEP1 AQUIT POP GR6 RET END

  • 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についての質問です

    このプログラムは6桁の入力データが数字かどうかを調べ、そうでなければエラーを表示するものです。 BEGIN IN INAREA,LENG1 LAD GR3,6 LOOP SUBL GR3,=1 JMI LBL LAD GR1,48 *** CPA GR1,INAREA,GR3 JPL ERROR LAD GR1,57 CPA GR1,INAREA,GR3 JMI ERROR JUMP LOOP LBL ・・・ ERROR ・・・ INAREA DS 256 LENG1 DS 1 「***」で示した行の「CPA GR1,INAREA,GR3」は GR1とINAREAのGR3個目の値を比べる。つまり、 GR1=#0008 INAREA=#000A GR3=12 だとすると「1」と「1」を比べてることに なるのですか?

  • CASL2について質問です。

    FEの過去問、行列の回転の応用で次のような課題が出されました。 いろいろやってみましたがうまくいきません。 詳しい方、ヒントをください!お長居します! 問1、文字列を出力の際に4*4の行列で表示できるようにメインプログラムを変更せよ。 例、入力→ ABCDEFGHIJKLMNOP 出力結果1 ABCD EFGH IJKL M NOP サブプログラムでの処理後 出力結果2 MIEA NJFB OKGC PLHD 問2、回転する回数を指定し、その回数だけ回転した結果を出力するように、メインプログラムを変更せよ。回転回数上限は9回までとする。 例、入力→ABCDEFGHIJKLMNOP 回数入力→4 出力閣下 ABCDEFGHIJKLMNOP 変更前メインプログラム↓ MON001 START IN INBUF,INLENG LAD GR1,INBUF LAD GR2,OUTBUF OUT INBUF,OUTLENG CALL ROTATE OUT OUTBUF,OUTLENG RET INBUF DS 16 INLENG DS 1 OUTBUF DS 16 OUTLENG DC 16 END 参考までにサブプログラム↓ ROTATE START RPUSH LAD GR3,16 LOOP0 LAD GR4,4 LOOP1 LD GR5,0,GR1 ST GR5,3,GR2 SUBA GR3,=1 JZE FIN LAD GR1,1,GR1 SUBA GR4,=1 JZE NXTROW LAD GR2,4,GR2 JUMP LOOP1 NXTROW LAD GR2,-13,GR2 JUMP LOOP0 FIN RPOP RET END よろしくお願いします。

  • CASL2の問題について教えて下さい。

    CASL2を勉強したばかりで、いろいろ調べても分からず、下記の問題が解けなくて困っています。 どなたかお分かりの方いらっしゃいましたら教えて下さい。 よろしくお願いいたします。 下記のプログラムを実行すると、ANS番地からの6語に、以下のようなビットパターンが格納される。 ANS番地+0番地 0111111111111111 ANS番地+1番地 1111101111111111 ANS番地+2番地 1111111110111111 ANS番地+3番地 1111111111110111 ANS番地+4番地 1111111111111101 ANS番地+5番地 1111111111111110 このとき、(1)~(6)の空欄に適切な命令コードやオペランドを入れて、プログラムを完成させよ。 START LAD GR0,1 LAD GR1,1 LD GR2,LEN LOOP SUBA GR2,=1 JMI FIN LD (1) (2) GR3,WK ST (3) SLL GR0,0,GR1 LAD (4) JUMP LOOP FIN RET ANS DS 6 LEN DC (5) WK DC (6) END

  • CASLIIのFINについて教えて下さい

    CASLIIの『FIN』とはどんなときに使うのか、どんな意味があるのか教えて下さい。下の2個の例のように、JUMPでFINに飛んだり、単なるラベルであったりしています。 ;100を初めて超える7の倍数 LAD GR1,0 LOOP CPA GR1,C1000 JPL FIN LAD GR1,7,GR1 JUMP LOOP FIN ST GR1,ANS RET C100 DC 100 ANS DS 1 END ;1000を16ビットの2進数で表した時1が立っている数 LAD GR1,0 LAD GR2,1 LOOP LD GR3,C1000 AND GR3,GR2 JZE ZEXT LAD GR1,1,GR1 NEXT SLL GR2,1 JNZ LOOP FIN ST GR1,ANS RET C1000 DC 1000 ANS DS 1 END

  • CASL どうかアドバイスくださいm(_ _"m)ペコリ

    2000÷127を計算して ANSWER=15 AMARI=95 としてアウトしたいんです(×_×;) ↑の文字「ANSWER=」等も出したいんです☆ 以下、自分で考えてみました☆ 合ってるかわからないですけど 何かアドバイスお願いします☆ 間違ってたら間違いを教えてくださいm(_ _"m)ペコリ お願いしますm(_ _"m)ペコリ      START     LAD "GR1,0"     LAD "GR7,0"     LD "GR7,C2000" EX1 SUBA "GR7,C127"      ADDA "GR1,C1"      CPA "GR7,C127"      JMI EX      JUMP EX1 EX   CALL SUB1      OUT "BUFFER,LENGTH"      LAD "GR1,0,GR7"      LAD "GR3,AMARI"      CALL SUB2      OUT "AMARI,LENGTH"      RET C1   DC 1      DC 127      DC 2000 AMARI DC AMARI='      END SUB1 START      LAD "GR3,BUFFER"      CALL SUB2      RET BTD10 DC 10 BUFFER DC ANSWER=' LENGTH DC 10 BTDOR DC #0030      END SUB2 START      LAD "GR3,9,GR3" BTDL1 LAD "GR2,0" BTDL2 CPL "GR1,BTD10"      JMI BTDL3      SUBA "GR1,BTD10"      LAD "GR2,1GR2"      JUMP BTDL2 BTDL3 OR "GR1,BTDOR"      ST "GR1,0,GR3"      LAD "GR3,-1,GR3"      LD "GR1,GR2"      JNZ BTDL1      RET      END

  • CASL2

    プログラミングCASL選択したのですがいくら考えても問題が解けません。解き方と回答を教えていただきたいです。長い質問ですみませんがよろしくお願いします。 2つのプログラムBCNT1 BCNT2はいずれも与えられた1語の中のビット値1の個数を数える副プログラムである。 1.処理対象となる1語の値はGR1に設定されて主プログラムから渡される。 2.副プログラムで数えたビット値1の個数はGR0に格納して主プログラムに戻る。 3.たとえばGR1に#00FEを設定して副プログラムBCNT1を呼び出すとGR0に#0007が返却される。副プログラムBCNT2も同様である。 (プログラムBCNT1) (行番号) 101 BCNT1 START 102 RPUSH 103 a 104 L10 SLL GR1,1 105 b 106 JZE L12 107 JUMP L10 108 L11  ADDA GR0,=1 109 JUMP L10 110 L12 RPOP 111 RET 112 END        (プログラムBCNT2) (行番号) 201 BCNT2 START 202 RPUSH 203 a 204 LAD GR3,#0001 205 L20 LD GR2,GR1 206 AND GR2,GR3 207 c 208 ADDA GR0,=1 209 L21 d 210 JNZ L20 211 L22 RPOP 212 RET 213 END a アLAD GR0,0 イLD GR0,0 ウLD GR1,GR エPUSH 0,GR1 オST GR0,0   b アJMI L11 イJMI L12 ウJOV L11 エJOV L12 オJPL L11 カJPL L12 c アJMI L21 イJMI L22 ウJNZ L21 エJNZ L22 オJZE L21 カJZE L22 d アSLL GR1,1 イSRL GR2,1 ウSLL GR2,1 エSLL GR3,1

  • 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で個数を比較している。 などのことはわかるのですが、 プログラムを作るとなるとまったくわかりません。 どなたか教えていただけませんか?? お願いします!!

このQ&Aのポイント
  • 楽天やヤフーで使用可能な捨てメアドとは?
  • 捨てメアドを使い続けても安全なのか?
  • アドレス変更でのスパムメール回避方法はあるか?
回答を見る

専門家に質問してみよう