• 検索結果がありません。

吉村

N/A
N/A
Protected

Academic year: 2021

シェア "吉村"

Copied!
4
0
0

読み込み中.... (全文を見る)

全文

(1)

−23−

SDOS‑43(II)アセンブラフ°ログラムにおける

入出力処理

吉村

ゞllll

Input/outputPrograminSDOS‑43(n)Assembler

TakashiYOSHIMURA (昭和54年10月25日受理)

Weconsidersomel/Otechniques inassemblerprogram, especialyamethodofusingtheexecuter ofFORTRANobjectprogramunderthediscoperatingsystemSDOS‑43(II)oftheOKITAC‑4300.

Inorder toexplainthesetechniques,weusesomeexamples insection2and3.

リに収容してユーザに提供されるので, たとえ高級 言語が普及したとしても,マイクロコンピュータの メモリ容量を節約するためにアセンブラが多く用い られることには変りがないであろう。

ところで高専におけるプログラム言語教育の現状 はどうであろうか。詳しい統計資料はないが,「高等 専門学校における情報処理教育の実態調査報告書」(2) によれば,使用教科書一覧表から推して,電気工学 科を除けば多くの学科ではFORTRANのみというと

ころが大半なのではなかろうか。アセンブラ言語教

育の重要性を再認識すべき時期にきているものと思 われる。

アセンブラ教育が敬遠される理由の第1としては,

アセンブラ言語が機種毎に全く異なるという点があ げられる。しかし,教育の目的力ざプログラミング方 法論の指導にあるとすれば, 、言語の違いは第2義的 な問題と考えてよいであろう。

本校には現在HITAC‑8250とOmTAC‑4300の2 機種が設置されているが,バッチ処理による実習を 前提にアセンブラによるプログラミングを初学者に 指導するとすれば,機械命令の種類の少ないミニコ ンシステムOKITAC‑4300を用いて行なうのが学び 易いであろう。 しかるに, このシステムのオペレー テイングシステムSDOS‑43(II)アセンブラには入 出力に関するシステムサブルーチンが用意されてい ないので,全くの初心者にとって入出力に関するプ ログラム作成を非常に困難なものにしている。

一方,SDOS‑43(II)の管理下で機能するFORTRAN

に関しては,オブジェクト嘆行時の補助ブロック(主

として入出力関係のルーチ'ンから成る)があるのだ

, 1 ,i

から, これを同じくSDOS一一w43(II)の下でのアセン

1 .緒

1971年にIntel社よりマイクロフ・ロセッサ4004が発 売されて以来,半導体技術の急速な発展により,マ イクロプロセッサの品質の向上,小型化,軽量比が 実現され,低価格のマイクロプロセッサの普及とあ いまって広範囲にわたる応用製品が開発きれ続けて いる。情報処理システムの端末,計測装置や分析機 器と連動したデータ処理システム,プロセス制御或 いは自動製図機等の数値制御への応用など,従来コ ントローラとしてはミニコンピュータが使われてい た分野にマイクロコンピュータが代って用いられる ようになり, コンパクトかつ高性能のシステムが構 成され,価格的にも充分採算のとれるものが供給さ れるようになった。加えて, キャッシュレジスタや 自動販売機など商業的応用や,燃費節約のための点 火時期の制御を始めとする種々の自動車制御への応 用,或いは画像表示端末などデータ通信への応用等 々, 巾広い新応用分野が開発されつつある。(1)

ところで,マイクロコンピュータのう°ログラミン グ言語としては, ミニコン以上の一般コンピュータ と同様アセンブラはもちろん,PL/I系,FORTRAN, COBOL.RPG,BASIC等の高級言語も考えられて いるが,現時点ではアセンブラ言語が最も広く使わ れており,高級言語としてはBASICが普及しつつあ る状態である。 しかし, ソフトウエア開発の比重が としてはBASICが普及しつつあ し, ソフトウエア開発の比重が であろうから,いずれ近い将来

〈使われることになろう。

−ラ的応用製品にあっては,制 メーカによって作成され, メモ

コハ

ru

幾器

肖木ubh士

(2)

−24−

吉村

プラプログラムに利用できない筈はない。また,プ ログラムの生産性の面から考えても折角現にあるソ フトウエア資源の有効利用を図ることは初学者に対 してのみならず大切なことであろう。

次節以下にいくつかのプログラム例をあげて上記 難題の解決策を考察することにしよう。

プログラム例2はニュートン法による正数Aの平 方根Yを求めるプログラムである。この例ではプロ

グラム間のデータ受け渡しは引数を用いて行なって いる。なお, このプログラムではシステムライブラ リの組込み関数ABSを用いている。システムの組込 み関数や基本外部関数の利用についての詳細はOKI‑

TAC‑4300SDOS‑43(II)の解説沖を参蝿された

↓、

C

OOOO1 SQP

OOOO2 SUB SQRGOT

OOOO3 TaP N6

00004 FL Q

OOOOS FQ C1

00006 FH C2

00007 FT X

DOOOB LaBP FL R

OOOO9 FD X

OOO10 FQ x

OOO11 FH C2

O001Z FT Y

OOO13 FS X

0つ014 CRL QBS

OOO1S FS EPS

OOO1S JNZ (S)。 EXT

OOO17 FL Y

OOO18 FT X

OOO19 J L6aP

OOO20 EXT CQL BUTPUT

OOO21 DEF R

OOO2Z DEF Y

OOO23 J Zo TaP

OOO24 Cl DC 1.O

OOO2S C2 DC 0.5

00026 EPS DC 1.OE−3

00027 R DC 7日218.O

OOO2B X BRV 2

00029 Y BRV 2

00030 END

2.FORTRANサブプログラムによる方法 先づ第1に思いつく方法は入出力に関する部分を FORTRANのサブルーチン副プログラムで構成する ことである。プログラム例1はユークリッドのアル ゴリズムによる2つの正整数A, Bの最大公約数C を求めるプログラムである。主プログラムと副プロ グラムの間におけるデータの受け渡しはCOMMON によっている。

1z34Ss7B9O12345S7B9012345S78900oOOOOOO11111111112222222222OooOOoOOOOOOoOOOOOOOoOOOOOoOOOOOOoOOOOOOOOOOOOOOOOOOOOOoOOOOoOooOOOOOOODOoOOOOOOOOOOOOo PBHLDDRLvVVDRUaeRRR角ZRRRRNSSCNCLTLTLSSDXJTLTLTJLTCJBBBE

EUCLID RoBoC

INPUT R N1 B N2 N1 15 1 N2

(Q), GCD N3

N2 N1 N3 N2 HBD N2 C eUTPUT I, TBP

1 1 1 TBP

NBD

︐OY19FR9くく了TUYOP0BTRRUHajSO0EON6HT上︑Q凸TらくUくTNaERRRTHUB1RTDUReENSHFRE

1234SOOOOOOOOOODOOoO 8.s・gjTO□aooBEBRZlQI2SS80︒7EYTRUBCHくEETDFXHBNBEGEE¥R単単

GCD

Oo279674BOE03

123NNN

プログラム例2

う°ログラム例3は(4, m)行例Aと (m, n)行 列Bの積Cを求めるう°ログラムである。配列要素を

引用するには,先頭要素が格納されているメモリア ドレスからの偏位値をBレジスタ修飾等の方法で指 定しなければならないが, COMMON要素に対して は間接指定やBレジスタ指定等のアドレス修飾がで

きないので,配列をCOMMONによって引渡すこと はできない。引数によるプログラム間のデータ授受 の方法をとらざるを得ない。 ところで, 引数が配列 の場合,パラメータアドレスは実引数の値が入って いるアドレスではなく, アレイサブテーブルヘのリ ンクアドレスである。アセンブラフ°ログラムではア レイサブテーブルから配列要素の実際のアドレスを 求めて処理することになる。配列要素のアドレスを 求めるルーチンとしてシステムライブラリの中にE$‑

UBP9NCRI︐CB︐jjE︐BOSNR︐OIIRS2TRoくuENSTNeGeく角RREHDHUBTHQRTDUNaEBENSICRFRE

1234567oOOOOOOoOOOOOoOOOOOOO

−−

C︐丁OSUBIPogT角くUCHa︐CjlB︐0︐E︐BONR︲SHIRolTREtuENくTNaGBERRREHTHUBTHIRTDUNaR6ENSICHFRE

12345670000000000000○OOOoOOO

¥EXECUTE,EUCLID HEHBRYoSIZEoO754

782, 15)= 2

¥END

¥EDF

図1 . プログラム例1

秋田高専研究紀要第15号

(3)

rIil

−25−

SDOS‑43(II)アセンブラフ°ログラムにおける入出力処理

ACというルーチンがあるので,これを利用してもよ いが, う.ログラムが簡単なのでプログラム例3では これを記号番地ADRから始まるサプブロックで計 算させている。

なお,アセンブラプログラムにおける配列の取扱 い,特にアレイサブテーブルの柵成については上記

マニュアルを参照されたい。

JFFFJFFFSSJFFPBHLFFFLTSEEEBLTSEEEBLHQTIDgEERUBBQEEESSCNcDDDLTLTLTLTFFLTLTTDDDLFFTDDDLFFFFHHJTDD

1234Ss7B901234SS7B901234SS7B901234SS7B901234000000000111111111122222222223333333333444△△OOOOOOOOOOOOOOOODOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOODOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOODOOOOOOOOoOOOOODOOOOOO 数号号番番行行列$︾0DJuDDBDR1PNNRNRPくNSSSEOEOEEODHLI角BCLICINJCJZuHKCKQLIK

TBP

【LP

3.EXE等の利用 JLP

前節の方法ではアセンブル時間に加えてFORT‑

RAN副プログラムのコンパイル時間が余計必要とな る。そこで入出力ブロックを直接アセンブラプログ ラムの中で櫛成することを考えよう。

SDOS‑43(II)FORTRANで番かれたソースプロ グラムをコンパイルすると,秤式つき入出力文の READ(u, f)k/WRITE(u, f)kはオブジェク

トプログラムの中では次のように展開される。

KLP IRRRHKJIBRHHKKKRLI DKRDKNPRNIDNIELD XXD

BB

LFFACEECDDD

IO$R

入出力の別‑{全職:}:1

入出力デバイスのアドレス FORMAT文番号アドレス

SS7B9012345S78901234S67B90123455789044444SS5SS5SSSSSS66S6E6S67777777777BOOOOOOOOOOOOOOOOOOOOoOoOODOOOOOOOOOOoOoOOOO・OoOOOOODOOOOOOOOoDOOOOOOOOoOODOODOODOD0ODOOOODOOOOOOOOODODDOODODO

単粘度整数型 単糖度実数型 倍梢度実数型 複素数型 論理型 倍精度整数型

FSSSSLFFFRRVVvVVVVvELBTIDIDQEEEBBQRCCCRRRRRRRRDFLFHHJHHJCDDDJNLLNXRHXTJDDDBBBBBBBB

JHICJJJIIIBQBCTQ201C1320011111112 NELELUSSSBD2No. DNPNPTPRDO XDDPX

LFBACELCDD

嵐十3

LI$T データの型 データアドレス

B▽

CAL IO$E

ID

3つのルーチンIO$R,LI$T, IO$Eはいずれも FORTRANオブジェクト実行時の補助サブブロック

としてのシステムモジュールEXE$に属している。

IO$RとIO$Eは1つのREAD文或いはWRITE文に 対して1回だけコールされるが,LI$Tは入出力並び の中の要素毎にコールされる。入力にカードリーダ,

出力にラインプリンタを用いるとして,プログラム 例4にこれらのルーチンの使い方を例示する。例で はIは単精度整数,Aは単精度実数, Dは倍精度実 数, Cは複素数, Lは論理型, Jは倍精度整数を表わ

している。

RDR

99gJJ﹄

口々″ロ●▼△■■■■■■■■■■■■■■〃71■■■■■■■■■且■■■■■■ロ

B・

BDDDXRNNND20EEEENCCZIJKIJKIH

1■P4﹃︑︒α■■﹄毎F﹄■j皇■に毎画日日BgBBRuDD口0口口nuDooDoOnJココココココ可

なお,FORMAT文を構成一 JC命令で与えたのではコー|

ステムのIOCS引用ルーチン A/IOJI61から始まる40語のヰ

】I

?v、〃)てや,

OJI51おJ

RFAD、

」肖木U5R王

(4)

−26−

吉村

PBJFJFLFFLFLFLFLFLFLFLLQU6SCECOSCECORCEEBQCEBRCEBRCEBQCEBQCEBRCEQQCSSNTDDDNTDDDNCDDDLCDDLCDDLCDDLCDDLCDDLCDDCCD

12345678901234567890123456789012345578901234000000000111111111122222222223333333333444ムムOOOOOOOOOOOOOOOOOOooOoOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOODOOOOOOOOOOOOOOOOOOOO

90.1z3ムラ67830B9999993gS90000000000001oOOOOOOOOOOOOOOOCOOCOOOO vvvDCCCCECCCRRQNDDDDDDDD8BBE B18BBB133へC133I11 0506TTEROOlRO1STTTTN01013$3$3$もも1もlCT3$3$3SBJ8J◆IキーOBO口FOBOFOOOeOVH◆I+I◆I◆IHAAHBAAHBI八DF*LOI*L1角中L2D*L3C*L4L*LSJIIA

HQIN

Cs

QBr﹄

図3 プログラム例3

よびWRITE文に対するFORMAT文を読み込ませ ている。このルーチンのコーリングシーケンスの詳 細については前記マニュアルを参照されたい。

FORTRANプログラムの中では,READ/WRITE 文に対するFORMATには必ず文番号をつけなけれ ばならないことになっているが, アセンブラプログ ラムの中では文番号そのものは必らずしもそれを要 しないので,プログラム例では記号番地FMT51なら びにFMT61のところで文番号を実際に定義すること なく単にNooperationとしている。

4.付

IO$R,LI$T, IO$Eの3つのルーチンのコーリン グシーケンスを導き出すのにSDOS‑43(II)のモニ

",FORTRANコンパイラおよびエグゼキュータを 解読しなければならなかったが, IOCS引用ノレーチン の使い方その他細々とした点に関する質問に対し,

沖電気工業のソフトウエア事業部技術サポートセン タの幾人かの人達から懇切なる回答をお寄せいただ いた。入出力に関する上記3つのルーチンがEXE$

のサブプロックだということも, ロードモジュール のダンプをとってみてはどうかという示唆によって 知ることができた。記して謝意を表わしたい。

SS7B901234S67B901234S67B901234S67B901234S44444S55SS5SSSSS6S6S666E57777777777BBBBBBOOOOOOOOOOOOOOOOOOOOOOOoOOOOOOOOOOOOODOOOoOOOOOOOOOOOOOOOOOOOOOOoOOOOOOOOOOOOOOOOOOOOOOOOOOOOOODOoOOOOODOOOODOOOOOOOoDDDDDD 26TTTTTTENCT3も3$3$3$3$3$$IDOvH◆I◆I◆I↑I+I+IBRDF*LOI*L1R*L2D*L3C*L4L*L5JIH122341B144

FFLFLFLFLFLFLFLvVvVvVVVDEEBQCEBRCEBRCEBQCEBQCEBQCEQRRRRRRCCBRBRNDDLCDDLCDDLCDDLCDDLCDDLCDDCJBBBBBBDDNBNBE

参考文

1)森亮一編マイクロコンピュータハンドブ ック朝倉1979

2)高等専門学校における情報処理教育の実態調査 報告書第2報,高等専門学校情報処理教育研究 協議会, 1977

3)OKITAC‑4300科学技術計算用デイスクオペ レーティングシステム(II型)解説書

12SCCTVVHIJRDCLDDF

HeJI51 FHTS1 HeJI61

図4. プログラム例4

秋田高専研究紀要第15号

参照

関連したドキュメント

近年、めざましい技術革新とサービス向上により、深刻なコモディティ化が起きている。例え

はじめに

セキュアで大容量のクラウドストレージがビジネスを加速 Working

近年の食品産業の発展に伴い、食品の製造加工技術の多様化、流通の広域化が進む中、乳製品等に

人間は科学技術を発達させ、より大きな力を獲得してきました。しかし、現代の科学技術によっても、自然の世界は人間にとって未知なことが

更にSSD搭載のストレージは小型である半導体の特長が活かされ、省スペースと なり、コスト削減も可能です。.. ◆ 《自社・顧客》 サーバ.

かつ、第三国に所在する者 によりインボイスが発行 される場合には、産品が締 約国に輸入される際に発

わな等により捕獲した個体は、学術研究、展示、教育、その他公益上の必要があると認められ