IBM汇编语言教程 lec11.pptVIP

  • 2
  • 0
  • 约5.15千字
  • 约 13页
  • 2017-05-07 发布于河南
  • 举报
IBM汇编语言教程 lec11

* 第11回 テーブル操作の プログラミング演習(2) 今日の到達目標 1.テーブル中の数値の大小比較と交換 2.交換ソート (指標レジスタの利用,大小比較,データの交換,条件判定) 3.テーブル中の数値の最大値探索 4.選択ソート (複数のループ変数,条件判定) できるだけヒントを見ずにやってみよう * テーブル中の数値の 大小比較と交換  ラベルTABLEで確保された8語の領域中のI番目(0≦I≦7)の数値とJ番目(0≦J≦7)の数値を算術比較し,もしI番目の方が大きければ何もせず,もしI番目の方が小さければ数値を入れ替えるプログラムを作成せよ。 なお,指標 IとJ にはそれぞれ GR1,GR2 を使用するものとし,これらに適当な値を設定して正しく動作するか確かめよ。  10 5 24 3 73 9 18 1  例えば,ラベルTABLEで確保された10語の領域に 10, 5, 24, 3, 73, 9, 18, 1 が格納されているとし,GR1(I)=1,GR2(J)=6の場合, 1番目の値(5)は6番目の値(18)よりも小さいので数値を交換する TABLE 6 10 18 24 3 73 9 5 1 0   1   2   3   4    5   6   7  番目 TABLE 1 GR2 (J) GR1 (I) * テーブル中の数値の 大小比較と交換 TBLCMP START LAD GR1,1 ; GR1: 指標Iの値 LAD GR2,6 ; GR2: 指標Jの値 ; LD GR3,TABLE,GR1 ; GR3 - TABLEのI番目のデータ LD GR4,TABLE,GR2 ; GR4 - TABLEのJ番目のデータ CPA GR3,GR4 JPL SKIP ; GR3 GR4 ならばSKIPへ JZE SKIP ; GR3 = GR4 ならばSKIPへ ; ST GR3,TABLE,GR2 ; GR3 - TABLEのJ番目に格納 ST GR4,TABLE,GR1 ; GR4 - TABLEのI番目に格納 ; SKIP RET ; TABLE DC 10,5,24,3,73,9,18,1 ; 8個のデータ END * 課題11-1 交換ソート (1) まずは前ページに示したTBLCMPを作成,デバッグ実行し,GR1, GR2 に設定した値応じて、適切にデータ交換が行われることを確認せよ。 (2) 上記のTBLCMPを修正して、本課題のプログラムを workb1.cas という名前で作成する。 (3) このプログラムをデバッグ実行し,実行後にラベルTABLEで確保された領域の内容が 大きい順番(降順)になっていることを確認せよ。  ラベルTABLEで確保された8語の領域に格納されている符号つき数値を“交換法”によって,大きい順番(降順)に並べ替えるプログラムを作成せよ。 交換法:  テーブルの先頭から最後まで,順番に隣り合った2つの要素の大小比較を行い,降順になっていない場合,それらの要素を入れ替える。 テーブルの先頭から最後まで比較していく中で,一回でも交換があった場合は,またテーブルの先頭から繰り返して行い,一度も交換が無くなれば終了する。 10 5 24 3 73 9 18 1 左から順番に7回の比較を行い,降順でなければ交換する。 この操作を一度も交換が無くなるまで,最初から繰り返す。 ①  ②  ③  ④  ⑤  ⑥  ⑦  交換があったかどうかはFLAGに記憶する ファイル名 workb1.cas * 交換ソートのアルゴリズム I=7? J ← I+1 GR3 ← TABLE(I) GR4 ← TABLE(J) WORKB1 RETURN YES NO GR3≧GR4? FLAG=0? GR3 → TABLE(J) GR4 → TABLE(I) FLAG  ← 1 FLAG ← 0 I ← 0 I ← I+1 NO NO YES YES FLAGはメモリデータとしても良いし,使っていない レジスタを使用しても良い。 例えば,FLAG ? GR0, I ? GR1,J ? GR2 とする 隣り合うデータが降順になっていなかったので,データの交換を行う。このとき,FLAGを1にセットする LOOP1 LOOP2 SKIP LAST この部分は前述のTBLCMPと同様の処理をしている * 課題11-1の補足 このソートはバブルソートの一種(バブルソートには様々なバリエーションがある). 少し発展的な参考 第10回のテーブル処理と同様のコーディングのほかに,下記のようなコーディング方法

文档评论(0)

1亿VIP精品文档

相关文档