教育用仮想計算機の設計
木 村 等
中 村 邦 彦
Ⅰまえがき
従来計算機教育と言えば,ややもすれば特定のコンパイラ、一言語にかたよっ た教育が行なわれがちであったが,その弊害については各方面から指摘されて
(1)
きた。コンパイラ、一言語は異なる計算機間に.おける互換性にすく・トれ,計算機内 部の仕組みをよく知らなくてもプログラムが書けることなど大きな長所がある ので,コソ/くイチ一書語に.よる教育が全面的に.良くないと言うのではない。
特に何らかの必要があって計算機を使用しようとする人にとっては,適当なニコ
ンパイラ 一言語を学習することは不可欠と言える。
しかしながら大学における−・般教養としての計算機教育を行なう場合に.は問 題があると思われる。例えば,コンパイラー言語は必然的に計算機をブラック ボックス化してしまうので,計算機の内部構造に対する理解が得られにくい。
一・つの言語に.かたよった教育は,後に他の言語を学ぶ際に返ってマイナスにな ることがある。特にFORTRANを先に習った場合COBOIJは習いにくいと 言われている。計算機内部の,したがってまたデータの内部表現に対する知識 が得られにくいために・数値計算に誤差の伴うことの理解が得られむ羊・くい。計算 枚の速さに対する実感が?かみに・くいために非効率的なプログラムを書きやす い等々があげられる。
これらの欠点は,計算機の内部構造と不可今の関係にあるアセンブリ・一言語
による教育を行なえば,かなりの程度改善されると思われるが,現代の大型に
して複雑な計算機のアセンブリ・一言語をそのまま初心者向け薮育転用いたので
(1)−松信,計算機序論,共立出版(1973)の第7章に計算機教育に関する問題がま
とめられている。
第ち1巻 第6号
− 2 −
660
は返って逆効果になりかねない。逆にミニコン,マイコンなどと呼ばれる小規 模な計算磯を用いる方法も考えられるが,命令セットが教育的であることはま ず望めない上に.,多人数が実習を行なうには無理がある。
そこで我々は教育を目的とした簡単な‥命令体系をもつ新しい計算磯を設計 し,そのアセンブラ・−・とシミュ・レー・タを作成することにした。以下
(EducationalAssemblySYstem)
(2)
介する。
(3)
なおこの種の教育用仮想計算機としては,Ⅹnu他のMIXがある。これは アルゴリズムの記述及びその実行のた捌こ設計されたらしく,命令体系,数値 の内部表現等にふ、て,現実の計算機とはかなり異なった.ものとなっている。
EASYは,討算磯の仕組み,デ−・タの内部表現といったことも教え易いように したいということからMIXとはまたかなり異なったものとなった。
ⅠⅠ′EASYの基本構成
仮想計算椀EASYは教育用ということで設計に際し主に以下の4点に注意 を払づた。
(1)内部構造が単純で,しかも現実の計算機に似ていること。
(2)命令体系が簡単で扱い易いものであること。
(3)入出力が容易におこなえること。
(4)ェラ・一対策が十分に施されていること。
次にEASYのハ・−・ドゥェアの基本部分を示す。
・46種の命令セットをもつ中央演算処理装置
・16KBの内部記憶装置。
(4)
・ 4台の磁気ディスク装置からなる外部記憶装置。
(2)E阜SYについては,すでにEASY使用手引番を用意したので参考にしてほしい。
(3)Ⅹnuth,D属.,The Art of Computer Programming,Vol.1・Addison Wesley(1968)の中で定義されている仮想計算機。MTXとはIBM7070や360,
PDPllなど,16の計算機名の数字を加えて平均をとり,それをp・−・マ数字で表わ したものである。
(4)一応ディスク装置と呼ぶが,EASYでは順次■アクセスのみが前されている。
教育用仮想計算横の設討
− ∂・−661
・ カード読み取り装置及びラインプリンタ。
以下各装置について,もう少し詳しく紹介する。
現実の計算枚はバイトマシン系のものが主流であるのでEASYもバイトマ シンに近い構成をとり,情報の基本的な単位をバイト(1バイト=8ピッり とした。読み書き及び演算の基本的な単位.である語は4バイトとし,1語で0 から4294967295まで,又は負数を2の補数で表わして−2147483648から2147 483647まで,文字としてこは4文字を表現することができる。中小の計算機では
1語を2バイトにしているものが多いが,これでは表現できる数値の範囲が狭 すぎる(例えば符号何の場合−32768から32767まで)ので1語を4バイトと 長くとった。数値の表現法としセは∴符号のない二進数と負数を2の補数で表 わす符号付二進数表現の2種摂々こ留め,事務計算によく使われる十進数表現や,
科学技術計算濫.よく使われる浮動小数点方式の表現は採用しなかった。
アキヱ.ムレ・一夕は,最近ほこれを複数個備えている計算枚が多いので,これ を汎用レジスタとして3個置いた。3個の汎用レジスタはそれぞれA,B,C
と名付け,AとBはひとつづきの2語長のレジスタのように.扱うことが可能 である。これは1語の数値同士の盾を2語長としたいこと,除算:に.おいて1語 の除数に対しては被除数を2語長として扱いたいためである。
その他のレジスタとしては,16ビット長のプログラムカウンタ,1語長の命 令レジスタ,1ビットの桁あふれ表示器,等しい,小さい,大きい3つの値を
と皐比較表示器を置いた。普通の計算枚ではコンディション・コ、−ドというも のをきめて,各種の演算に.よりその値がセットされるようになっているが,
EASYではこれを比較表示器としで比較演算濫よってのみセットされるよう′に 単純化した。
内部記憶装置は4kW=16KBとしたが,これは特に深い意味ぽなく,ホス トマシンの記憶容量内で適当に定あたものである。記憶域につけるアドレスは バイトマシンのように1バイトごとに0から3f、FF(16進)に付けられてい る。
外部記憶と入出力装置はそれぞれユ・ニット番号に.より参照され,1回の入出
欝51巻 第6号
劇 4 −
662
力命令に.より1レコ・−ドが転送される。レコ・−・ド長は装置に周定されているも のとし,ブロッキングについては考慮しなかった。
EASYの機械命令の構成については後述することとし,ここでは命令の形式 について述べる。命令はすべて1語で表現される。
0 8
16 31
C I R I A
ここでCはオペレーション・コ・−ド部,Rほレジスタ指定部,Aはアドレス 部である。大部分の命令はRで示されるレジスタの内容とAで示されるメモ、
リ・−・の内容との間でオペレー・ションCを行ない,結果をRで示されるレジス タに格納するものと,Aの値をそのまま演算守こ用いるイミディエイト命令で占 められる。アドレス指定方式をこ・れだ桝こ限零すると不便になりすぎるので,
一部のデータ転送命令と分岐命令におい七はアドレスをレジスタで間接指定で きるように.した。多くの計算機はインデックス・レジスタを用いたアドレス指 定の機能をもっているが,命令の記述形式及び機械命令形式が復雑に.なるこ
と,プログラムをデ/ミッグする際に命令コ・−ドとレジスタの内容をみても,デ 一夕のアドレスを求めるためにはインデックス・レジスタの内容と≠ィスプレ
(5)
イスメソトをいちいち十六進数で加算しなければならなくなることを考え,こ り機能はもたせなかった。
ⅠⅠⅠ命令セゝト
EASYの横根命令は,転送命令4種,代数演算命令6種,論理演算命令6 種,比較命令3種,分岐命令10種,シフト・回転命令10種,入出力命令3種,
十進数編集命令2種,その他2種,合わせて46種とした。これは現代の計算機 における主要な命令を含みかつ命令体系の対称性を保つように決定した。命令 体系は本来,効率のよいプログラムが簡単に書けるように決定されるべきもの であろうが,EASYの場合ほ教育用ということで,多少プログラて・−・に工夫し てもらわなければならないように.なっている。アドレスのインデックス修飾の
(5)EASYは計算枚の内部コ・−ドを十六進数で印刷するように.なっている。
教育用仮想計算機の設計
ー ∂ −663
機能は先に述べた理由により設けなかったので,例えば代数演算命令に・おいて 多数のデータを繰返し演算する場合,命令のアドレス部を書き替える必要があ るが,特定の単語長を書き替える命令は含まれていない。草た普通の計算機の コンディション・コ、−ノドに当る比較表示器は比較命令に・よってこのみ影響を受け るようにしたので条件付き分岐を行なうときに能率が悪くなるが,これは命令 体系のわかりやす・さの力が重要であると考えた。要は学習者に速く命令体系を 理解し,アルゴリズム上の工夫及びプログラミング上の工夫を行なう方に進ん で欲しいということである。
−・般にアセンブリ・一言語でプログラミングする際にほ入出力の制御及び数値
と文字との相互変換がわずらわしい。入出力はス叫/く・−ノミイザ、−・コ・−ルにする か直接チャネル制御を行なうのが普通であり,データの変換は,ライブラリ・−
サブル・−チシを使うか,自分のプログラム内で行なうかしなければならない。
初心者をこの問題で苦しめるのを避けるためにEASYでは特別の入出力命令 とデ1一夕変換命令を用意した。
また各命勧与は仮想的実行時間を定め,プログラム実行時間が予測できるよ うに.した。これはプログラミング上の工夫の一・つの目安を与えるためである。
これは仮想計算磯上での実行時間であるので単位ほ特にないが,原則として,
1回メモリーをアクセスするごとに1単位とし∴複雑な命令については,実在 の計算棟のデータを参考にして定めた。入出力命令は各外部装置の動作速度に 依存するはずであり,また並列処理や連続動作をさせることに・よっても全体と
しての処理時間が異なってくるのであるが,EASYの入出力命令はすべて同一 のCPU時間を消費するものとし,入出力動作終了までのbpuの待時間につ し」ては考慮しなかった。
その他上記入出力命令にも関係するが,計算故に.とっ宅本来不可欠の磯能で ある割込み処理については不要であると思われるので省略した。
以上がEASYの命令セットの主な特徴である。個々の命令に?いては付録の
−・覧表,及び使用手引書を参考にして−ほしい。
第51巻 第6号 664
・− β −・
ⅠⅤ アセンブリ、一言語
EASYのアセンブリ・一言語では機械命令の他に.ORG,EQU,DC,DS,
ENDのアセンブラー命令5種,DISPIJAY,TRACEのデ′ミッグ命令2種を使
えるようにした。それぞれの命令については付録を参照してもらうことに・して 言語の文法忙ついてその要点を述べる。
文(ステ、−トメソりは1行,1から72カラムに記述し,73から80カラムは 無視する。文はレー・ベル欄,オペレーション・コー・ド欄,オ・ベランド欄,コメ
ント欄に分けられ,第1カラムだけが特別な意韓を持つ以外は自由に記述でき る。即ちレー・ベル欄は第1カ、ラムから始めなければならないが,以下の欄は1 つ以上の空白により区別される。また第1カラムは*を記入すると1行全部が
コメント欄となり,%を記入するとデ/ミッグ文とみなされる。レ・−ベルとオペ レー・ショシの記述の仕方は工夫の余地が余り残されていないが,オペランドの 記述法は簡単かつ統一・した方が望ましい。これは,(1)3つの汎用レジスタA,
B,Cのうちり1つを指定するレジスタ指定,(2)レジスタによ・るアドレスの 間接指定(この場合(A),(B),(C)のうらの1つを記入する)。(3)アドレ ス,イミディ・エイトデータを指定する式の3通りだ桝こ.した(ただしDC命 令だけは例外)。式は1こっの項か,複数の項を演算子で代数的に思合したもの
とし,演算子は+・−*/で順に加減乗除算を表わす。項は.定数,名札,ロケ・−
ションカウンタ$とし,定数は,ニ進定数∴十進定数,十六進定数,文字定数 とした。式の値はすべて16ビット長として評価される。
アセンブリ、一言語の欠点の1つとしてプログラムの誤りを発見しにくいこと があげられるが,そのためにデバッグ命令を設けた。
血spLAY命令は,その命令の直前の命令が実行されたとき′,指定されたメ
モリ・一領域の内容が印刷され,TRA由命令は,実行される命令が,指定され
たメモリー内にある間,1命令実行毎に内部レジスタの値を印刷するものであ
る。後の使用例2に例を示したので参照してはしい。
ー 7 −−
教育用仮想計算機の設計 665
Ⅴ 使用法
EASYは多人数バッチ処理用の簡単なモニタ・−・,アセンブラ・−,シミ
レ、−タにより構成され,多数のプログラムを連続処理することができる。そのため の制御カ1q・ドとして/ASMか−・ドと/DATAか−Iドを用いるようにしたo以 下に2つの使用例を示す。
使用例1は小さい方から200個の素数を求め,それを印刷するプ占グラムで
(6)
ある。素数を求めるアルゴリズムほKnuthの教科書のものを借用した。見て 使用例1
EDuく▲TZONAL ASSEMBt.Y SYSTEM JOB NAME EXAMPL亡
/ASM EX▲HPしE●⊂Pい−10000000
L∝.OP.ADDRESS
STN S O U R⊂E しIS T
● EXAMPJE PROGR▲M ・小 TA8しE OF Pf!1MES
l−勺一▲・ち′▲丁る9012J▲﹁q:bり・A901−勺︸血﹁■′▲丁89012うヰ5もー8901■t一▲.く′人789012J▲▼ち ュ⊥⊥ューューュl12222222222うう︐うぅうう︐∋さヰヰヰヰヰ一々ヰヰヰうぅ5ううう
」MT 【QU 200
LP E(iU も
OPEN 亡くIU l⊂」OS亡 E(iU O Olく6 0000H
ST∧RT LI A・う
ST AIN
Li A◆1
ST AIJ
ST付PRM J Aり
AI Atl ST AIJ SL A●2
AI AヽPlllME
L B●N MV (Å〉18
し AIJ
⊂J AlJMT βE PRINT
NEXTN し A・N
∧l Aヽ2
ST A●N
LJ ⊂12 TEST MV ▲I⊂
Sし Å▼2 AI AIPRIME
MV A●くA〉
ST AヽPflMK
し A●N
NUM8ヒR OF PllIMES TO βE しISTED UNIT NUMBER OF いN∈ PRINTEll
しET N ■ さ L亡T J■ ユ N IS PRLME LETJ▼J◆1 LどT PTA8り)1N
IFJLLNT TH∈N GO TO PR[NT EしSE ÅDVANCE N
」【T N ■ N ◆ 2
LET K ■ 2● KIS ASSIGNE【〉 TO R亡6・⊂
LET PRI利こ・・FTAB(K)
DiVID【N 8Y PIIMK
IF ftEM人IN【)ER■○,NIS NOT PRIM【
SO 60 TO NEXTN●
IF qUOTIENTく一戸RHlこ rH∈N GO TO 5TRPRM 亡」SEIN⊂REASE K 8Yl一 人ND GO TO T〔ST
︐U100⊥02ヰ⊂⊥080く之Uクー−丁†︵>▲二︹<リ▲:OhO▲ 018
0F O OO OOO9F O O︵8F OF OOO910F200うO10◆ 000110⊥U10010000000010100100⊥000 00000000000000000000000000000000
00000000010000000Z OOOO0000⊥000−○ ㈹80叫80捕8080︐OAO3100AO叫桐畑8040犯80粥う080購∽DO舶0010叩︐030 1010010⊥lO︶OlO l Oェ311ヽ二〇〇う2⊥212⊥2
0●8UOq8UOヰ8COヰOUOヰ8UO●さUOヰlUOヰ8C OO OO⊥⊥l12222︐∋う︐ヰヰヰヰうく′5ノム:b︸▲r−7T OOOO0000000000000000000000000000 00000000000000000000000000000000
ユ2 PRMK 8●O NEXTN ÅヽP11MK STRPRM Dl
(1 βE C Bし 人Ⅰ ⊂11
8 T亡ST
● PRINT SE(;HENT
PI=NT Io⊂
PuT 8Aし L【
● PUT ON∈ LINE PuTしN しⅠ
し
AI ST
くVTI AI
▲Ⅰ し
∧Ⅰ
OP亡N THE FIし∈ OF しINE PRtNTER PuT PAGE AND PRINT TITしE く」EAR THE しIN亡 BuFFER
RE6一8 KとEPS THE NUM8∈R OF PRINTE亡IPRIM【S REG.⊂ls THE く0UNTERIN ▲ L川E SET CH入R OPERAT10N⊂Ot〉∈ 丁く〉CVT之
HODIFY THE く:H人RINSTl‡U⊂TlON
しP◆OP亡N しP●L【lUF く●CJR8UF 8▼く〉
⊂ヽO AlくHAROP A■2◆」tさUF A−ぐ∨丁2 8●1
⊂■1 A●く:VT2 人●10
⊥UOJO O8一ヒヰ▲⊥ヰ人 00■亡0 000U O O√−0 0100 0110000<﹀ 0000 0▲U OOO000 ′○′021 2000†−200 0000 ﹂q0000000 もノヽ′一 々人う8ノ■ノ▲■ノ
ヽ一ヽ︸⊥⊥ ⊥O10ュl︵︶⊥
0◆8U Oヰ8U▲0ヽ▲OC ■○∧○▲占▼︽ 9999A▲‖▲⁚・∧
00∧U O O O▲U二〇二U00∧>
0<V▲U O OO0000▲U O(6)前掲事pp.143−144
第51巻 第6号
ー・・−・β −
666
EDUCATIoIIAJ ASS〔M8LY SYST【M
し0∈・OPADDR∈SS sTN S O U H(:【 しIS T
JO8 NAM亡 EXAHPしE
0080 0β00 00⊂ヰ 6789012=J∧▼ら⁚b7一員ニ0123ヰうる78901ク二っ=†上ノ上789012う ぅqニ︶う▲Ybム云Ybb上Yb色こご 7−−−−7−7−888さ8888889999
ST AICVT2
0084 0088 00b(
00く:0 00⊂ヰ 00C8 00C⊂
00C〉0 00D4 00()8 000⊂
工2ヰ00A OU800 009100AO U90 00100001000 0 0000000000
0000020ら⊥00 00000000000
ユニb︻ノうO A55AうA ︐⊥lうO12う123
MV SL AI MV
⊂vT2 D(
CI 8トほ PuT
⊂I BN〔
HJT HALT
A18 A◆2 AヽPR!ME AI(A〉
0 く●10 CVTl しPILβUF 8●LHT PUTしN
CH相INSTfモU(T10NIS TO8EINSERTE【〉
IF L川E8UFFERIS NOT Fu」し THEN60 To⊂VTI ELSE PUT A しINE
IF ALL PRIMES ARE PR川T〔D TH〔N HAしT FJSE く;O TO PuTLN
O CLEAR L=ほ BUFFER ROUTINE
L ﹂
■ ′ヽ 一しtノ′ヽ0血・血・A O 90009E O 11−00ュ00 ∧>O n:0<V O O
O l l l102 0010001 ▲∵ヰ︻J tノ▲︻■う二︺
O l︻J l12︵
︵U斗8′ヽ○ヰ8 ︻亡︻ヒニヒニヒF亡.亡﹁ 000∧VO O O O O O▲U二U O O
R8UF L L I RI MV
Al
〔1 8N亡
β
A●BLANK 8IしBUF
(8〉tA B■ヰ B●」8UF◆1うも
⊂LRl く⊂)
R H hb し︼T On
★ サN J P Uし 8P P
A
A▼▲.▲ l−●−¶ 2PヰS
0⊥ T9T▲︹ A R U D 6SSS H C︺′しリリQSN N DD O︵D DDO Dr−n二ヒ
00F⊂
0100 010ヰ 010(1 010C O142 01丁8 019う 0198
019C
⊂ANDINATES FOR PR川ES NUM8ER OF PRIM〔S
⊂HAfモ OPERATION COC〉E
LIS T O F P RIM E S 一
O K r亡
K R F N8M M A U ▲∵A−・
P
000
<>00
︵U O O
血.ム▼ 人. ▲U⁚U▲U
O∧>00<︶2
nV▲・ム・▲・▲ 0 000000 0▲.A.4 ■斗▲8 ▲∧00000
n﹀血・▲・▲▼▲▼︵U
DIA(;NOSTl⊂ MESSA6亡S G引1ERAT【D
ERROR20尊大Å丁 891NVAL=〉OPE糾T10N HA」T
l−⊥⊥⊥
勺r■丁 9−7■了二711t一︵7qノ ー﹂了 〇二了 9■J97 ク▼b:Uノ02丁ヰ0′029ノク二9︻ノー一n▼んフ1 11クZ=Jム†人†員′ち■ム一7・りーさ9∩﹀0▲⊥2
ュ⊥⊥⊥
9⊥7⁚∋:ユi⊥−了7ュ丁797丁97ュ︵Jヽ−
1′00′○つh7・qノ∧■うーウー∧ ■埠18︻ノ29′021 1ュ 22ヽ一tノ▲﹁ノーつ ム7二了=A 990ュ21ュ⊥
丁9一丁7・1 919997−9︻J hJ91171 ュヽ−0ノl′○へ′8:q ハ︶a: 07■>19一>10 11−22ヽ一一斗■>一ヽ′ノ077・一九 9901−2
q一勺一l1 9ユニ′ユノー二プ l1991ヽ′ 仏79ヽ− 1■ノ∧﹀くノ9ノ○■⊥84<>丁4 0ム︶人うl AYヰ∧V9 ュ⊥⊥つ■︺■tノ・払︑ノ■ノ ′○︼丁7 ▲び99011
1丁 79■了一7ヽ一▲9q:9ュl l19■17 9▲J T
ュ4 94 9ノま′q−97へ′9′0207勺ノ0白V
l12プユノA ▲叫・lノ′○′b789q⁚0⊥lS▲7▲J9n7t一⊥l久一▲つ ⊥99tノー 7T l−7・1
⊥l■⊥
tノ79ュ▲︸9勺■9⊥9︼了一丁∋二フ⊥⊥tノ⊥l∧J ヽ二7:ユニさへ一9ノ▲/ ■7■ノl■了一■28亡ノ■9′0 ュ 122ヽ−・ル.血.︳ノ′〇一bニー−▲八Y0 9001
111
−⊥3丁9■Jニー■ヽ−9丁7−T19⊥丁79一7t一 lノ ー へT t一8ち′⊥・〇AT Oノ○ヽ一⊥7ヰl▲出■一 ⊥122ヽ−ヰ▲▼ノ■〇一bこー▲邑二89n=O1 ⊥⊥ュ l lっ▲つ■J・q・曝一つ一〇ノウT▲︾▲89001 11■l
SuHH▲RY 王 PRO(;R∧M SI之E ■ 2ヰ08(09る8H)8YTEs しP ■ 3 PAG亡S ⊂Pu TIHE 曽 80855 EXCp ● 21
わかるように,素数をみつける部分は全体のプログラムの半分以下であるが,
結果を1行に10個ずつ印刷するための部分が長くなっている。1行に・1個ずつ 印刷するようにすれば約10命令ほどに短縮できると思われるので,出力を見易 い形に編集することが大変なことがわかる。アセンブリ、−エラーが1つある が,これは第69文に誤ったオペしハーション・コ・−・ドを記入したためである。
使用例2はディスクぺの入出力を行なっているものであるが,途中にデバッ
教育用仮想計算戚の設計 −・9 −・
667
使用例 2
EDU⊂ATIONAし ASS引18しY SYST〔M
/ASH FILEAC⊂ESSTEST
LOく. OP. ADDRESS
STN S(〉 u R(:E L Z S T
.JO8 NAH亡 FIL∈∧⊂⊂ESSTEST
TEST PRO6RAM OFl/0 0PERAT10NS
ュ23ヰら6丁8901二ユ:†一っ▲ 丁890⊥23ヰ亡ノ′0789012うqう6丁8901ク二∋:嶋︳フ▲
⊥l−1111111▲ュ222222222クー勺一B二JtJ勺︶tJヽ=3〇一斗▲†ん⊥†▲∵■ム
1
も
1 0 之0 28 0 ÅlREく●HS(;
β●120
⊂●⊂LEÅR DISK●OPEN A●0
∧.1 10−RE⊂+MS6 DISK●REC AヽNRC OuTPuT DISK●⊂しOS∈
DISK●OPEト】
LP●OPEN DISlこIREC EOF LP●RE⊂
lNPUT DISIく●⊂LOSE
R U UリリU‖﹀G LU ■八丁 E一しU U T T U Q◎︵W QO①▲R −−・A︽U−1▼1日U−・N=n OOE⊂U O
EE E E Fヒ0ししnD・1﹂▲∵⊂二P r二b■1・l︐1▲b二n−一P血U●lK N S
S ∈▲U二し二b
〓)
T
P F N O U
UT
0ヰ8⊂0年nO⊂▲0ヰ8UOヰさUOヰ8U O▲U O O l l l12222tノー′勺■勺一人†・†■嶋・嶋
▲U二じ二U▲U O∧>0000∧︶00∧︶00<V O O▲U OOOOO00000000000<リ000
ム﹁凸○︵Ul014・B⁚q・■▲U l▲8484000 00血・■斗ヰOUO
d77■ノ▲0009Tl1000一斗−▲J O▲00 丁77▲0000う0 00000000000000000000 000000000
00▲U O O<︶<U O O O∧︶0<U O<U OO▲U O O <V<∨▲U=n O O O O O
O l−100▲八一⊥▲U二じ二⊥⊥′01一<∨′00土′00 22200⊥﹁▲00 00000000000000000000 <﹀<>▲U100000
血丁人轟J・b▼血・ノ久︶■一▲八一ノ′○′○′○ヰA亡ノーJ・b6A F■b=A∵⊃=ノム︶▲ハ・ノ︵J
⊥ll■Jl⊥︿J勺−⊥つ■勺一ら一3こJウユ2▲J3︵J OO O︳Jl⊥ュ22
IO⊂ 」PICLOSE HLT
海
D】SP」ÅY START180TTOM⊂L亡AR OR C●E〉りT ST ⊂l〔〉くIT し く、bLANK
⊂しRI MV (A)、C AI 八一ヰ S1 8,ヰ CI BtO 8NE ⊂」RI EXIT B 専一響
qO50 00う4 00さ8 005⊂
00(〉O UO6ヰ 0068 00も⊂
0070
BしANK D⊂
RE⊂ DC 00一斗 40斗0 ヰ○ヰ0
0078 ヰ0ヰ0 4040 00J10J1040
009ヰ DS lO8
80TTOM
% 【QU\ 事 TRA⊂∈ STARTIOUTPUT・・4
亡ND STÅRT
NO DIAく;NOSTIく M亡SSAGE G〔NER八丁ED
TRA⊂E いST 相DR∈SS†0000P(:∫00小IR,1ヰ000094 A■℃00000948一る88000帥C■9う00柏07 く⊂)一0(G)■0(E〉■0 くL)一O TRACE いST ∧ODR亡SS−0004P仁一000さIR■14010078 小000000948薫00000078(■93004BO7 (⊂〉tO(G)■0(E〉一0 くし)−O TRÅ⊂亡 いST At)DR∈SSlOOO8 P⊂■00,0IR■1)020050A−0000009J−8−000000丁8 C■0000000⊂ (C〉■0(G)■0 くE)tO(し)10 TRA⊂EしIST ADDRESS■000C pC■0010】R■36010001A−0000010⊂8−00000000⊂帆4040与040 (⊂)一0(G)■0(E〉■1(し〉■O TRA⊂EいST 柏ORESS−0010P⊂一001ヰIR−1ヰ000000AtOOOOOOOO8■00000000⊂叫04040ヰ○ く⊂〉一0(6〉一0(E〉一1くL〉櫨0
TEST RECORD NO●
TEST RECORD NO・
TEST RE(ORD NO●
T亡ST RE⊂ORC〉 NO●
TEST R亡⊂QRD NOI TEST R亡⊂ORD NO●
丁亡ST RECORC〉 NO一 丁EST RE⊂ORD NO●
TEST RECOIモD NO●
TEST RE⊂ORO NO●
TEST R亡くORD NO●
TEST RE⊂ORD NO●
TEST RECORD NO●
TEST RE〔ORD NOI
TEST R【CORD NO●
TEST11亡CORD NO●
TEST R亡⊂ORD NO●
TEST RE⊂ORD NO◆
TEST RE(:ORO NO●
TEST RE(:ORD NO●
89012︵J.嶋 ■ノ・h▼了▲■090 111⊥l工⊥1−112
1ヰ00009ヰ1ヰ0100丁81さ020050)も010(,01140000001う000001380AO09ヰ 粥0100丁8
1AOOOOIJ12さ00001ヰ:沌010000 うる010001∋もObOO013ヰ010070 2AOOOO叫 3う0600†8之う0000)4 3も010000 うも0ら8000 さAOOOOO00FO20070 08020070 0AO20074 100002
∴;∴:..‥−.‥∴
=
ヰ0ヰOJ10ヰ0 ヰ0ヰ040Jl0 40ヰ0ヰ040 ヰ0ヰ0ヰ040 ヰ0ヰ0ヰ040 4040ヰ0ヰOJ1040qOヰ0 ■0ヰ0ヰ0ヰ0 々仰040ヰ01IOヰ040ヰ0 ヰ0ヰ0ヰ040 ヰ0ヰ0ヰ040 −○ヰOqO00 4040ヰ0ヰ0 ヰ0ヰ040ヰ0 ヰ040ヰ0ヰ0 ヰ0叫ヰ0ヰ0 ヰ0ヰ04帥0 40ヰ0ヰ○ヰOJ10ヰ0ヰ040110ヰOqOヰ0 40斗0ヰ0◆0 ヰ04040ヰ0ヰ0ヰ0ヰ○ヰ0 ADDRESS OOO
ÅDDRESS OO2 ADDRESS OOヰ ADDRESS OOも ADDR【SS OO8 ADDRESS OO人 ADDRESS OO⊂
人DPRESS (〉OE
○ISPLÅY DISPしAY D】SPLAY DISPL人Y DISPしAY DISPLAY DISPしAY DIsp」ÅY
SUHHARY; PROく;RAI疇SIヱE ■ 258く0100=)BYTES LP■ 2PAGES ⊂Pu TIME● ヰ10 ∈Xく:P− bl
668 第51巻 第6号
−JO・−
グ文を挿入してある。TRACEは最初の5命令に.指定してあり,その間のレジ スタA,B,Cの変化がリストされている。DISPLAYは最後のHLT命令を 実行した直後のプログラム領域の内容の印刷を指定し七いる。
ⅤⅠむすび
以上アセンブリー言語を扱うための教育用仮想計算機EASYの概要を紹介 した。このシステムを使用することにより,教育上いくつかの効果が期待でき ることはすでに述べたが,山・方アセンブリ、−・言語を使用サーることにより新たな 問題が生ずることも確かである。その中のいくつかは本システムにより解決な いしは軽減されていると信ずるが,アセンブリ1一言語を使用すろ限り,作成し たプログラムの内容が,したがってまたそこに記述されているラルゴリズムの 内容がわかりにくくなるという問題は解決できない。本・システムを使用するに 際しては,教育目標を十分に検討し,学習者に.適切な課題を与えるような配慮 が必要になろう。
次に問題となるのは,上の目的達成のための最適な計算機システムを作成す ることである。我々は本稿でこれ正対する一応の解答を与えたのであるが,こ れが絶対的なものだと主張するわけにはいかなし、。今後実際に利用してさらに 検討・改善を加えていきたいと考えている。
なお本研究は,昭和53年度大学教育方法等改善経費によって行なわれたもの
である。
教育用仮想計算枚の設計
−Jユーー・・/669
付録IEASY撥械命令−・党表
恥emonie lDescri這tion Operation
eode
MOVE,LOADANDSTORE
L
Loadregister OA
2Ll
T−,eIJOadimmediateregister 14
1Sで Storeregister OB
2MV 〈(ぎ:)〉,〈(ぎ≡)〉 Moveregister/indirect 33
2+αARITH.METIC
A Add to register OC
2AI Addimmediatetoregister 15
1r,e
S
SubtIae七fiOm工・egisteェ OD
2S‡
Subtractimmediatefrom
register 16
1MUL Multiply 2C 10
e
DIV Divide 2D 12
LOGICAI.
OE
2Andimmediatewithregister
1Or with register OF
2 r,eOrimmediatewithregister 18
1ⅩOR ExclusiveOrwithregister 10
2ⅩORI
AND l Andwithregister・ ANDf 17 OR ORI 二 ExclusiveOrimmediatewith register 19
1
COM■pARISOⅣ
C
Comparewithregister 11
2CL
r,eCompar6logicalwithregister・ 12
2CI Compareimmediatewith
register 1A
1第51巻 第6号 670
−ヱ2・−
Mnemonie Description
Operation eode exeeution timeBRANCH
B
Branchunconditional 23 1
BE Branch if equal 24
1BN玉】
Branehifnotequal 25
1BG Branch if greater 26
1Bl一撃
〈(:)〉 BranehiflessoTequal
27
1BL Branch if less 28
1BGE BIanehifg工eate工Orequal 29
1BC Branch if carry 2A
1BNC BIanChifnocarI・y
2王‡ 1BAL
r,eBranchandlinkregister 13 SHIFTANDROTATE
SL Shift left logical 1B
2鱒R
Shift yight logical 1C
2SRA Shift right aYithmetic 1D
2RI. Rotateleft 1E 2
RR 工,e 2 1F Rotateright SLD Shiftleftlogicaldouble 2E
2SRD Shiftrightlogicaldouble 2F
2SRAD
eShiftrightarithmeticdouble 30
2RL Rotate left double 31
2RRD Rotate right double 32
2INPtJTANDOVTPUT
Getrecord
GET
u,eP11treCOエd 34 1
IOC
35 1教育用仮想計算磯の設計
−J∂−671
Mnemonic IDescIiption
Operation eode exeeution timeCONVERSION
2十n/4
NtJ加Ⅰ
n′e
山 Convertto、numeric 87 Converttocharacter 38
2+n/4No opcration
NOPAND‡王AI。T
1
HLT
NOP Halt
39
〔注意〕γ:レジスタA,B,Cのうちの1つ β,・弘,れ:式
α=レジスタ間接指定の数
%:バイト長,%/4ほ小数以下切捨て
付録ⅠIEASYアセンブラ命令一覧表 D/Inemoric
ORG
eEQtT
e五quatesyInbol
Defineconstant
biヱ1ary ー deeima】 DC ㌢ hexadeeima卜 eharaeterstring・ addressexpression
DS
eDefine storage
END
eEnd of program
付録ⅠⅠⅠデバッグ文
% TRAcE a,b
% DISPLAY al,bl〔,a2,b2〕〔,恥bさ〕岬 a,ai,b,biは式である。
/
第51巻 第6号 672
ーヱ4 −・
付録ⅠⅤ 制御文
/ASM二 50bname〔,CPU=n〕〔,PRINT=m〕
n:CPU打切り時間
m:出力ペーージの限度
/DATA
データがあるときプログラムとデ1一夕の間に挿入す−る
付凝V EASY・エ・ラ1・■・・■・メッセ−ジ ControICard Erro
lOlZ NO INPUT DATA
lO2Ⅹ MISSING/ASM CARD
lO3W JOB NAME NOT FOUND
lO4Ⅹ INVALID PARAMETERIN/ASM CARD
AssemblyErI′OrS
201Ⅹ ILLEGAL CHARACTERATl−ST COLUMN
202W LABEL LENGTH EXCEEDS
203Ⅹ NO OPERATION FIELD
204Ⅹ1ILLEGAL OPERATION FIELD 206Ⅹ MISSING END STATEMENT
207Y LABEL TABLE OVERFLOW
208Ⅹ DOUBLE DEアINITION OF LABEL 209Ⅹ MISSING OPERAND
210Ⅹ INVALIDEXPRESSION
211Ⅹ INVALID OPERANI)IN DC STATEMENT
212X INVALID NUNIERIC CONSTANT IN DC STATEMENT
213Z PROGRAM SI乞E EXCEEDS MEMORY SI
217Ⅹ UNDEFINEDLABELINORGOREQUSTATEMENせ
218Ⅹ UNDEFINED LABELIN ORDINARY STATEMENT
219Ⅹ LENGTHOFCHARACTERSTRING
2 二BYTES
220Ⅹ INVALIDNUMERICCONSTANTINEXPRESSfoN
221Ⅹ ILLEGAL REGISTER OPERAND
240Ⅹ ILLEGAL DEBUG STATEMENT 、
241Ⅹ TOO MANY TRACE STATEMENTS 242Ⅹ TOO MANY DISPLAY STATEMENTS
EXCEEDS
教育用仮想計算戚の設計
−・Jタ−673
Execution Errors
301Z PROGRAM NOT EXECUTED DUE TO SEVERE ASSEM:BIJY ERROR
302Z CPU「TIME OVER 30畠Z PRINT PAGE OVER
304Ⅹ INVALID OPERATION CODE 305Ⅹ ACCESSIS OUT OF MEMORY