次のプログラムに、
指定された整数値配列の中から最大値を調べるサブルーチン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で個数を比較している。
などのことはわかるのですが、
プログラムを作るとなるとまったくわかりません。
どなたか教えていただけませんか??
お願いします!!
No.1ベストアンサー
- 回答日時:
回答がないので調べてみました。
アセンブルは下記を使用しました。バグがあるようなのと知らないのであまり自信がありません。http://www.chiba-fjb.ac.jp/fjb_labo/casl/index.h …
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
丁寧で迅速な説明、ありがとうございます!!
今更なんですが、問題にへんなところがありました。。
最小値のほうのサブルーチンはMAXではなくてMINですね。。
ごめんなさい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- C言語・C++・C# 【CASLプログラム】 定数(80と55)を確保し、その和をGR1に、その差をGR2に求めるCASL 1 2022/12/16 01:17
- C言語・C++・C# このプログラミングの問題を教えて欲しいです。 キーボードから整数kを入力し、kが配列aの中に何個存在 2 2022/12/19 22:50
- C言語・C++・C# プログラミングを教えて欲しいです。 配列aは、int a[9]={7,6,12,8,3,5,10,9 4 2022/12/19 23:27
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- 英語 There are various anatomical and mucogingival cond 3 2022/05/05 10:28
- Ruby 初心者プログラミング 3 2022/10/12 11:31
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- F1・モータースポーツ SUPER GT 2022 SERIES | トヨタ自動車 GT500 編 1 2022/05/15 04:04
- デジタルカメラ 手持ちのRICOH GR DigitalをWebカメラとして使いたい。 2 2023/07/25 07:54
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
COBOLで、Shellを起動するには?
-
例外処理のフローチャートの記...
-
GOSUB命令とは
-
perlの構文でカンマの意味が分...
-
VBAで2重のDoLoop関数から抜け...
-
fortran95実行エラー
-
初歩的な質問なのですが、サブ...
-
BASIC言語で時差を求めるには?
-
VBAのサブルーチンとプロシージ...
-
Excel VBA 『Call』で呼び出す...
-
Excel VBA 定義されたプロージ...
-
「デバイスは PRN を初期化でき...
-
VBA This Workbookモジュール...
-
Excel VBAでリンク切れをチェッ...
-
VBAでoutlook365が起動しません。
-
Excel VBAで、ユーザーフォーム...
-
VBAで別モジュールへの変数の受...
-
エクセルVBAでシートモジュール...
-
perlをバージョンアップしたら...
-
VBでグローバル変数を宣言するには
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
例外処理のフローチャートの記...
-
Excel VBAで、ユーザーフォー...
-
モジュールとサブルーチン
-
perlの構文でカンマの意味が分...
-
COBOLで、Shellを起動するには?
-
ACCESSのVBAでPrivate Sub ~en...
-
GOSUB命令とは
-
サブルーチンを認識しません。
-
エクセルVBAでサブルーチン...
-
ExcelVBA AddinでOnAction
-
初歩的な質問なのですが、サブ...
-
Excel VBAから利用できるフリー...
-
VBAのサブルーチンとプロシージ...
-
VBAで2重のDoLoop関数から抜け...
-
Attempt to free unreferenced ...
-
オフコン(富士通Kシリーズ)...
-
初心者です。Perlではどんな時...
-
”:”がいっぱいの文について。
-
サブルーチンやif分以外での中括弧
-
fortran95実行エラー
おすすめ情報