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

CASLIIの問題

このQ&Aのポイント
  • CASLIIの問題について質問があります。プログラムに最大値を調べるサブルーチン、最小値を調べるサブルーチン、昇順にソートするサブルーチン、平均値を調べるサブルーチンを作成する方法を教えてください。
  • CASLIIの問題について質問です。プログラム作成についてわからないことがあります。データの先頭番地と個数を指定して、最大値や最小値を調べるサブルーチン、昇順にソートするサブルーチン、平均値を調べるサブルーチンを作成する方法を教えてください。
  • CASLIIの問題について質問です。指定された整数値配列から最大値や最小値を調べるサブルーチン、昇順にソートするサブルーチン、平均値を調べるサブルーチンを作成する方法を教えてください。プログラムの作り方がわかりません。

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

  • ベストアンサー
回答No.1

回答がないので調べてみました。アセンブルは下記を使用しました。バグがあるようなのと知らないのであまり自信がありません。 http://www.chiba-fjb.ac.jp/fjb_labo/casl/index.html PGM START LAD GR1, DATA LD GR2, =10 CALL SUM ST GR0, RESULT CALL AVE ST GR7,WK2 CALL MAX ST GR0,WK3 DUMP RESULT,3 ;システムコール、結果の確認 RET DATA DC 1,9,3,7,5,10,2,8,4,6 RESULT DS 1 WK2 DS 1 WK3 DS 1 SUM 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 ;--------------------- ; 割り算 ; GR7=GR0/GR2 ;HOLD : GR1-GR6 ;--------------------- AVE LD GR7,=0 LOOP2 SUBA GR0,GR2 JMI QUIT2 LAD GR7,1,GR7 JUMP LOOP2 QUIT2 RET ;----------------------------- ; 最大値の検索 ; IN : GR1=DATA TOP ; : GR2=DATA SU ;HOLD : GR1-GR6 ;--------------------- MAX PUSH 0,GR1 LD GR0,0,GR1 LD GR7,=0 LOOP3 LAD GR7,1,GR7 CPA GR7,GR2 JZE QUIT3 LAD GR1,1,GR1 CPA GR0,0,GR1 JPL LOOP3 LD GR0,0,GR1 JUMP LOOP3 QUIT3 POP GR1 RET END ;-------------- ; 以下はソート ;-------------- PGM START LAD GR1, DATA LD GR3, =10 ;DATA SU CALL SORT DUMP DATA,10 ;システムコール、結果の確認 RET DATA DC 1,9,3,7,5,10,2,8,4,6 ;------------------------------------- ; バブルソート ; IN : GR1=DATA TOP ; : GR3=DATA SU ; WORK : GR2=比較用 DATA TOP ; : GR4=SWAP用WORK ; : GR6=基準データ数カウンタ ; : GR7=比較データ数カウンタ ;DESTORY : GR3,GR5以外すべて ;------------------------------------- SORT LD GR6, =0 ;I=0 FOR_I LAD GR2,0,GR1 ;D[I]=D[J] DATA TOP アドレスを同じにする LAD GR6,1,GR6 ;I=I+1 CPA GR6, GR3 JZE QUIT ;I==DATA SU LD GR7,GR6 ;J=I FOR_J LAD GR7,1,GR7 ;J=J+1 LAD GR2, 1, GR2 ;D[J] 比較用のデータアドレスを進める LD GR0,0,GR2 ;GR0=D[I] CPA GR0,0,GR1 JPL NEXT ;D[J]>D[I] 順の入れ替え不要 JZE NEXT ;D[J]=D[I] ” LD GR5,GR0 ;GR5=D[J] LD GR0,0,GR1 ;GR0=D[I] ST GR0,0,GR2 ;D[J]=GR0 ST GR5,0,GR1 ;D[I]=GR5 SWAP D[I],D[J] NEXT CPA GR7, GR3 JMI FOR_J ;J<DATA SU LAD GR1,1,GR1 ;D[I]のアドレスをつぎの配列に進める JUMP FOR_I QUIT RET END

32i
質問者

お礼

丁寧で迅速な説明、ありがとうございます!! 今更なんですが、問題にへんなところがありました。。 最小値のほうのサブルーチンはMAXではなくてMINですね。。 ごめんなさい。