著者まえがき BASICを卒業されたみなさんは‘‘マシン語’'という言葉にどこか神秘的 なイメージを抱いていることと思います.確かに,すべてが数字で表される マシン語は,冷淡で人間の思考と相容れない部分があります.しかし実際に 触れてみれば,とてもホッ トで,私逹を熱くする魅力を,そしてまた広大な ’i:'Ili1レそこに発見することでしょう. ヤかイ滓か最近のパーソナル・コンピュータは,屯源を入れるとすぐに BASICh •使えるようになっており, コンビュータのしくみやマシン語の存 (1.を、0識させません.これはある意味では正しい方向ではあるのですが,コ ン1:..’;1ークの本質を理解ナる妨げになっていますし,少し高度なことをしよ うとする とすぐにBASICという壁に遮られてしまうのも事実です.そもそ もコンビュークとは, マシン語のみを実行する ものであるため,BASICの厚いカーテンの外側からではその能力の 100% を発揮させることは不可能です.BASICでは‘‘自由な処理ができない”,‘‘処 理速度がおそい”など,いくつもの不満をあげることができますが,本むは このような不満を持っているみなさんのための,マシン語およびコンビュー タの,本当の意味での入門をお手伝いします. 本内は6809用のマシン語入門杏ですが,そのタイトルrはじめて砒む6809』 からもわかるように,村瀬康治氏の執策された rはじめて読むマシン語』の 6809版であり,本内の内容は全般にわたり,原著 rはじめて読むマシン語』 に準拠しています.特に6京までのコンピュータの基本的な知識に関する解 説では,6809の特徴的な部分を除き,原著と同じ内容構成になっています. また,7章以降の6809マシン語命令の解説においても,なるぺく原箸の`‘わ かりやすさ”を反映するように努めました.しかし,筆者の力がおよばず至 らぬ点があれば,今後読者の方々のご叱正をお願い申し上げます. 『はじめて曲むマシン語』が,数多くの80系ハーソナル ・コンビュータ ・ユ ーザーのマシン語の手引き心となったように,本lいが6809ハーソナル ・Jン ビュータ ・ユーザーにとっての手引きほとなれば,頂名としてこれに勝る召 びはありません. なお,本1i}は村瀬氏の監作によるものですが,木,1}の6809にl\lclJる飢'lliiぉ ‘F よびプログラムについての買任は,すべて 者の負うところです. 最後になりましたが, '岱士通株式会社 ,株式会社日立製作所には,舟!tlu) 提供等で大変お世話になりました.ここに感謝の意を火しよ-J. 1984年II月 11'.illi;り樹 監修のことば 心'trはじめて、:)しむ6809』は, Z-80CPUを対泉に した拙秤rはじめて読む マシン {りを1!i休と して,品山浩樹さんの紫睛らしいリライトによって6809 II を対(Kとしたマンン語の人l11I曹として誕生しました. 「れはまだBASIC荒野をさまよっているのか」 これはその「はしめて説むマシン語』(1983年10月初版発行)に当初予定し ぴ,I•幻のサフクイトルです. 結局これは, もう少しやさしい表現となり, Iげんど 1グ)コノピュータと出逢うために」というbilj題で出版されましたが, と丁らも. BASICを脱出しなければコンピュータの世界は開かれないことを -,てし・ます. 11 Z 80CPUを対象にした rはじめて説むマシン語』は,今までに何冊かのマ /ノ99{tの人I'‘l,9Fに挑戦したにもかかわらず挫折した人を含めて,「ほんとうの コンピュータ」を知ろうとしている多〈の人たちへ,ソフトウェア 自立への 足掛かりとなる 淋を附りたい、という気持ちから杏いたもので,私としても かなり象餡所な構成をしたつもりです.幸いこの本は,アンケート葉杏などか らみて もかなり好評で,各方而で広〈受け入れられており,発必以米すでに 何万人もの説者が「BASICから脱出」する契機となった只]であると自itして います. ところヵ<rはじめて切しむマシン語』は, Z-80を対象にしているため,発売 された当初から`箱士辿や日立などのパーソナル・コンビュータのユーザーを 中心に、非常に多くの人たちから,6809用の『はじめて説むマシン語』を出 してほしいという希望が寄せられていました.これは私の宿題であり,早〈 リライトしなければ,と思っていましたが,なかなか手を付ける余裕がない ままでいたところ,足山浩樹さんの素II,t.'らしいリ ライトによって,『はじめて 読む6809』として実現することができました. これは氏の6809に対する豊貨な知識と,梢熱と↑!雌lI性によるものであり. 叡}以上の出米栄えに, 6809の一7ァンとしても」I:‘i化にttんでいます.見山 さんに深くお礼を巾し上げます.どうもありがとうございました. 本、1汐のタイトルは『はじめてぷも、6809』ですか、ただ6809のマシン,;Ii(/)人 1"間 にとどまらず、広く「ほんとう のコンピュ-:タ」との出述いの:!只ともな るでしょう .6809ハーソナル ・コンビュータを前に.本lドをfeにしたJ)lt. t たとない絶好の機会です.この機を逃さずに.BASICばかりては1.11ること のできない,ほんとうのコンピュータのIll;界へ、').j気を出してぜひ粘み込ん で〈たさ\ヽ. 本LI}をしっかりとぶみ迫めば,マシン品やCPUを中心にしたコンヒ'..l.ータ の甚本的な勅きは.実に単純であることに気づくてしょう . 途中で挫折せす,本杏を繰り返し最後まで,ぷみ進んでみてくたさい.その とき.あなたの前にコンビュータの世界が大きく開かれていることでしょ う. 次の言葉は,rはじめて品むマシン語』の日頭部に占いた,盆むへのメ ソセ ージですがこの言菜を rはじめて祉む6809』のdた者へも,ぜひ附りたいと 思しヽます. BASICの殻から一歩を踏み出し,マシン語_一つま りはコンピ ュータの基礎を学ぼうとしている賢明な説者に,心から励まし の言菜を送ります. あなたと``コンビュータ’',そのはんとうの出逢いは本1ドから始 まるのかも知れません. 1984年11月 村面罪 CONTENTS 著者まえがき....................................................................3 監修のことば・・・.................................................................5 1 一コンピュータの内部にさわる……………………… 11 1. 1 モニタの機能 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・13 1. 2 モニタ操作の実習 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・14 _ 2 メモリの基礎知識・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・21 2. 1 ピット,/\'イト,アドレス・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・23 2. 2 メモリの内容を見る•................................................··27 2 .3 16進数・・・・・・・・・•........................................................•31 _ 3 コンピュータはマシン語て動く••…………………•39 3. 1 BASICインタープリタはマシン語のプログラム…………•41 3 .2 マシン語で命令してみよう ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・46 4 一コンピュータ・システムの構造 ・・・・・・・・・・・・・・………•••49 4. 1 CPUの働き ........................................................・..・51 4.2 メモリの慟き・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・53 4.3 1/0の働き..........................................................・・56 _ 5 CPU コンピュータの中心 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・59 51 CPUの内部 ・・・・......................................................・・61 . 5.2 プログラム実行のメカニズム・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・65 6 ァセン 一 フ'’l)号-ロ圭ロとアドレッシングモード ·……•••67 6.1 マシン語とニーモニック・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・69 6.2 アドレッシングモード(Addressingmode)••……•・・・・・・·・71 7 転送命令(レジスタ⇔メモリ) _ ••…,.............. ......•75 71 LD, ST命令・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ . ・・・・・・・・・・・・・・77 7.2 命令の動作確認・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・82 卓 2項演算命令(算術演算,論理演算比較命令) •••89 8•1••算 術演算ADD,SUBほか ................................... ・・・・・"91 82 論理演算AND,OR, EOR................................. 83 ・・・・・・・・・•99 比較CMP,BIT........................................... .. ・・・・・・・..103 一9 単項演算命令(増減,クリア,テスト命令) ……• 105 9. 1 算術,論理演算NEG,COM ・・・・ ・ ・ ・ .. ・・・・・ . . ..... ・・・.. .・・・ ・・ ・ ・・ ・ ・・ 1 0 7 9.2 増減命令INC,DEC.............................................. 112 9.3 クリア,テストCLR,TST.......................................... 114 10 一シフト/ ローテート命令・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 119 10. 1 ロジカ)レ・シフトLSL,LSR...................................... 121 10.2 アリスメティック・シフトASL,ASR.......................... ・12 4 10.3 ローテートROL,ROR........ ・・.. ......................... ・・... . ・12 8 _ 11 転送命令(レジスタ⇔レジスタ)・………………•• 131 11. 1 トランスファTFR・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・13 3 11. 2 エクスチェンジEXG・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 135 _ 12 スタックを扱う命令・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 139 12. 1 スタックの概念・・・・・・・・・・・・・・・・・・・..........•·•············•.....•. • 141 12.2 スタックを利用するPSH,PUL ・・・ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・1 4 4 _ 13 分岐命令・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 149 13. 1 プログラムの流れを変えるJMP(絶対アドレス指定の分岐命令) ・・・151 13. 2 サプルーチンを呼ぷJSR/RTS .....…•・・・・・・·…,.......... 153 13. 3 条件判断とプランチ命令B00(相対アドレス指定の分岐命令)・・・ 158 13. 4 フラグと条件分岐.................................................161 _ 14 ィンデックスモードのアドレッシング方式•…•••169 14. 1 レジスタによるアドレス指定・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 171 14. 2 ポストノ<イト ・・・・・・・・・・・...............................................181 14. 3 実効アドレスのロート'L.EA......................................185 _ 15 ゃさしいプログラム例 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 187 15. 1 入出力)レーチン・・・.................................................189 15. 2 除算)レーチン ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・•・ •• 19 1 15. 3 データの並ぺ換え ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・•... 19 3 15. 4 BASICとマシン語の結合.........................................196 APPENDIX ・・・・・・・・・--・・・・・・・・・・・・--・・----・・・--・・------・・・--・--・・・・ 203 1. S WI命令と初期設定につしヽて・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・•204 2.機種別メモリマッフ゜.................................................. ..206 3 . キャラクタコード表 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・208 4. 6 809マシン語命令表 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・•209 I・····· ·································••................ 索 弓 213 イラストレーショ‘ ;,, :細田稚亮 コンピュータの内部にさわる