私たちはキーボードやマウスなどによってパソコンを操作しますが、これは キーボードやマウスを使うためのプログラムがあらかじめ用意してあるためで す。そのプログラムはマシン語と言われるもので書かれています。コンピュー タはそのマシン語でしか働くことができません。マシン語は普通の人間にはと てもわかりずらいので、様々なプログラムを作るときには、C言語やベーシッ クと呼ばれる人間にわかりやすい、プログラミングのための言語を使ってプロ グラミングをします。そしてそのままではコンピュータはそのプログラムを解 読することはできないので、コンパイラやインタプリタと呼ばれるマシン語変 換プログラムによってコンピュータを働かせることができます。
10進法と2進法と16進法の対応を表にしてみます。
10進法 | 16進法 | 2進法 |
---|---|---|
0 | 0H | 0000 |
1 | 1H | 0001 |
2 | 2H | 0010 |
3 | 3H | 0011 |
4 | 4H | 0100 |
5 | 5H | 0101 |
6 | 6H | 0110 |
7 | 7H | 0111 |
8 | 8H | 1000 |
9 | 9H | 1001 |
10 | AH | 1010 |
11 | BH | 1011 |
12 | CH | 1100 |
13 | DH | 1101 |
14 | EH | 1110 |
15 | FH | 1111 |
16進法と2進法の相互の変換は、2進法で4桁ごとに区切って考えて、上の表 に対応させるだけなので非常に簡単です。
データの受け渡しが行うには、どこにデータが存在するかが、わからなくて はなりません。例えば、NHKの集金係の人がお金をもらいに行くのにも、その 人のうちの住所(アドレス)を知らなくてはお金を集めてくることができませ ん。データのアドレスを、今度は「アドレスバス」と呼ばれる信号線をとおし て、データの場所を指定してやることで、CPUは初めてデータを読み書きでき るわけです。データの場所は数字で指定されます。(もちろん2進法です。)
データは常にメモリに記憶されています。メモリには大きく分けてROMとRAM というものがあります。前者はRead Only Memoryの略称で、その名の通り読み 込み専用のメモリです。後者はRandom Access Memoryの略称で、読み込みもで きれば書き込みもできるメモリです。ここで注意して欲しいのは、メモリはフ ロッピーディスクやハードディスクとは全く別物であると言うことです。ROM は読み込むことしかできない変わりに、パソコンの電源を切っても記憶は消え ません。一方RAMは読み書きは両方ともできるのですが、電源を切ると消えて しまいます。一般に、ROMはコンピュータに電源をいれたとき、一番はじめに 実行されるプログラムや、BIOS(Basic Input Output System)と呼ばれる基 本的な入出力を行うプログラムが納められています。RAMはCPUのユーザープロ グラムや、処理するための各種データエリアなどに使われます。
I/Oとは日本最古のパソコン雑誌のことではありません。Input/Output Systemの略称、すなわち入出力装置のことです。CPUは大部分の時間をメモリ 間の処理に費やしますが、それだけでは何の結果も知ることができません。モ ニターやプリンタなどに出力することで、はじめて結果を知ることができます。 このような信号のやりとりの接点に当たる部分がI/Oポートと言います。I/O ポートには普通モニタやプリンタなどのほかに、フロッピーディスクやハード ディスクなどが接続されています。ゲームなどの音楽に使われるFM音源ボード もそうです。8086の場合、これらの周辺機器にアクセスするには、I/Oアドレ スと呼ばれるI/O専用のアドレスでアクセスします。8086は16ビットのI/Oア ドレスを持っています。メモリのアドレスとは全く別物なので混同しないよう にして下さい。(モトローラ社の68kのCPUはメモリのアドレスとI/Oのアドレ スが混在しています。)
CPUはバスを介してメモリにつながれていますが、このメモリとは別にCPUの 内部にもメモリが存在し、それをレジスタ(Register)とよびます。レジスタ には8ビット、16ビット、32ビットのデータを格納でできるようになっていま す。レジスタはRAMなどのメモリと違ってアドレスで区別しません。レジスタ には個別に名前が付けられており、8086系ではそのレジスタごとの役割が決め られています。(80386以上のCPUではだいぶ自由になりましたが\dots) CPUは普通、データをいったんレジスタに読み込んでからメモリやI/Oに転送 したり、演算を行ったりします。8086系には一般に14種類のレジスタが存在し ます。それぞれの役割を簡単に示します。
レジスタ | 名称 | 機能 |
---|---|---|
AX | アキュムレータ | 主に演算。 |
BX | ベースレジスタ | 特定のメモリを指し示すポインタ。 |
CX | カウントレジスタ | その名の通り転送や繰り返しの回数のカウンタ。 |
DX | データレジスタ | データの一時記憶やAXと一緒に32ビット演算に用いられます。 |
《インデックスレジスタ群、特殊レジスタ群》
SI | ソースインデックス |
---|---|
DI | ディスティネーションインデックス |
BP | ベースポインタ |
SP | スタックポインタ |
IP | インストラクションポインタ |
《セグメントレジスタ群》
CS | コードセグメント | プログラムの格納されているセグメントアドレスを示します。 |
---|---|---|
DS | データセグメント | データの格納されているセグメントアドレスを示します。 |
ES | エクストラセグメント | DS以外のデータを格納しているセグメントアドレスを示します。 |
SS | スタックセグメント | スタック専用のセグメントアドレスを示します。 |
《フラグレジスタ》
このレジスタは、プログラムによって変化するCPUの状態を表すためのレジ スタとして利用されます。たとえば演算結果がゼロになったり、演算で桁あふ れが生じたときなどこのレジスタを調べることでわかります。
8086は1メガバイトのメモリを操作するために20ビットのバス幅を持ってい ます。しかし8086のレジスタは16ビットの幅しかありません。どのようにして 1メガバイトのメモリにアクセスしているのでしょうか?
8086は2つのレジスタを足し算することで、20ビットのアドレスを実現して います。2つのレジスタとはセグメントレジスタとインデックスレジスタ、ま たはセグメントレジスタと特殊レジスタのことです。単に2つのレジスタを足 し算しただけでは16ビットのままですから、まずセグメントレジスタを4ビッ ト左にずらしそれをインデックスレジスタまたは特殊レジスタとを足し算しま す。16進法で言えば、一桁左にずらして足し算すればよいのです。
(例)
SSがF04AHでSPが159BHの時、CPU(8086)が実際にアクセスするアドレス(つ まりアドレスバス上にあらわれるアドレス)は
F 0 4 A H + 1 5 9 B H -------------- F 1 A 4 B H
となります。
セグメントレジスタに納められたアドレスをセグメントアドレス、特殊レジス タまたはインデックスレジスタに納められたアドレスをオフセットアドレスと 言います。8086がメモリに対してアクセスするアドレスは物理アドレスと言い ます。
8086は1メガバイトのメモリを扱うことはできると言っても、実際は64キロ バイト単位でしかメモリを扱うことができません。つまり連続して1メガバイ トのメモリ空間をアクセスできないわけです。
64キロバイトごとにメモリを使い分けることで、プログラムを作りやすくし ようと考えたわけです。しかしこのセグメントの概念は「64KBの壁」と言われ るようになり、後のプログラマたちを苦しめることになります。
8086はよく言えば8ビットのソフトウエア資産を考えたCPUでしたが、わるく いえば8ビットの呪縛から逃れられないままの16ビットCPUだったのです。(こ の呪縛は80286にも引き継がれていますが、80386以降はかなり強力なメモリ管 理機能が付くようになりました。)
セグメントアドレスはDOS上でプログラミングする場合は、DOSが自動的に設 定してくれるので、セグメントアドレスはプログラマ自身が設定することはま ずありません。しかしプログラムで64キロバイト以上の連続したアドレス空間 が必要な場合、プログラマ自身が設定してやらなくてはならないこともありま す。
マシン語のプログラムで、処理するデータや処理に必要なデータを格納する ためのメモリ領域を、ワークエリアと呼びます。プログラムを制作する過程で、 レジスタの内容を一時的にデータをRAMに退避させなければならない場合が多 く出てきます。たとえば、AXレジスタを演算に使いたいのだが、今現在のレジ スタの内容を保存させておいて演算後にもう一度使いたい、と言う場合などで す。そこでこの「スタック」という概念が生まれました。
SSとSP(スタックポインタ)には、このスタックしてあるデータの一番上の アドレスが入っています。だから普通、SSとSPは常に一緒に使われます。プロ グラマはスタックの出し入れに関する命令を用いる際、スタックポインタがい ったいどこを指しているのかという心配は不要です。というのは、スタックの 出し入れを行う命令では、スタックポインタの操作が自動的に行われるからで す。
すこし予備知識に触れておきます。
UNIX では、複数のユーザが同時に1つのコンピュータを使うことができます。 また、1人のユーザが同時に複数のプログラムを動かすこともできます。 それぞれの動作しているプログラムのことを「プロセス process」といいます。 そして、各プロセスは「完全に独立に」動作することが可能です。 MS-Windowsのように、「1つのプログラムが作業をしている間はほかのプログラムは 動作できない」ということもありません。また、ユーザのファイルもきちんと 公開・非公開の設定が可能です。
また、システムレベルでネットワークがサポートされており、 ネットワークを通じて別のコンピュータにログインして作業をしたり 情報を取得することも比較的容易です。
情報棟のコンピュータは3万人近い人数が利用できますから、まず 使い始めに自分が誰であるか、本当にその本人であるかをコンピュータに 示さなければなりません。
適当に開いている端末を探して、もし電源が入っていなければ(キーボードの 上の方のPowerランプがついていなければ)端末前面左の電源スイッチを 押してください。白地に黒文字でいろいろメッセージが表示された後、 グレーバックにユーザID とパスワードの入力を求める画面が表示されるはずです。 電源が入っていて、そのような状態に初めからなっているかもしれません。
カーソルはユーザIDのところにあるはずです。ここにあなたの ID を入力してください。 Return キーを押すと、パスワードの欄に移るはずです。パスワードは画面に 表示されませんので気をつけて入力してください。
正しく入力できたらなんか「GAME禁止」とか画面に出た後、指示どうりクリックすると、 しばらくして3つのウィンドーと郵便受けが表示されるはずです。
g6?????@xss??>
とか出ている2つを「シェルウィンドー」とか「コンソール」とか
呼びます。下の方に反転した *scratch*
とか出ている方をとりあえず「Mule」
(みゅーる)と呼んでおきましょう。
この画面は、UNIX での標準的なウィンドーシステムである X-window の画面です。 自分でカスタマイズすると見栄えをいろいろと変えることが可能ですが、それはおいておきましょう。
まず、何か処理をする際には、マウスカーソルを処理をするウィンドーに入れることから 始めます。枠線の色が変化して、カーソルが黒くなるはずです。
先に終了の方法を説明しておきましょう。何もウィンドーが無いところ(「ルートウィンドー」と いいます)にカーソルを持っていって、マウスの右ボタンを押しっぱなしにすると、 メニューが出てくるはずです。一番下の「Exit X-Window」かなにかを反転させて マウスを離すと終了します。でも結果の保存は忘れずに。Mule を使った時は Mule をきちんと終了させてからの方が賢明です。
まず、シェルウィンドーの広い方にカーソルをいれて、「finger
」と入力して
Return を押して見てください。これを今後「finger
コマンドを実行する」
と表現します。すると、よほどすいていなければ何人もの人が表示されます。
実は皆さんの手前にある X 端末は実は画面の処理しかしていません。実際の処理は
別の部屋にある「端末サーバ」にネットワークで接続して行っています。
駒場では6〜8台のX端末が同時に1つのサーバを使っていて、いま表示されたのは
その同じ端末サーバを使っている人の一覧です。
実名の登録とパスワードの変更を行います。
シェルウィンドーから chfn
コマンドを実行してください。
あなたの名前の入力が要求されるはずです。メールやネットニュースなどでも
使われるので、ローマ字で実名を入力してください。次に
パスワードを要求されますから、入力してください。
... changed at ecc-ad00
password file busy - try again later
とか出て来た場合は後で再トライしてください。 「パスワードが合わない」とかいわれた場合はパスワードの 入力をミスったのでしょう。やり直して見てください。
次に passwd
コマンドを実行してください。
ここで、「忘れにくく」「他人に勘付かれない」「英数字6〜8字」の
パスワードを決めてください。間違えても自分の名前とか「tsg」とか
「inu」とか「tokyo」とか誕生日とかは駄目ですよ。脈絡のない
英記号2つと数字1つの組み合わせとかでもいいでしょう。決めたら指示に従い
新しいパスワードを2回、これまでのパスワードを1回入力してください。
あとは前の名前の場合と同じです。
パスワードの変更は受け付けられてから1日程度かかる事があるので、 変えたばかりの新しいパスワードがログインの時に受け付けられない時は古い方を 試してみてください。
パスワードは最低でも2ヶ月に一度は変更することが望ましいと考えられます。 管理には十分気をつけてください。普段持ち歩く手帳には書かない方がいいでしょう。
一通り慣れたら電子メールの練習をして見ましょう。
シェルウィンドーから「~g540001/bin/mailtest
」を実行して見てください。
長いので入力を間違えないように。このコマンドは練習用にあなた自身に
メールを送るようになっています。
実行して少しすると、「ビッ」とかいう音とともに郵便受けが黒く反転する はずです。これがメールが届いた合図になります。
メールが届いたら、Mule のウィンドーから「ESC x mh-rmail
Return」と
入力してください。最初の ESC x で画面の下には M-x
とかでてるはずです。
その後ろに mh-rmail
と打ち込んで Return を押すのです。
うまく行かなかったら C-g で戻ってもう一回試して見ましょう。
この操作をすることで、システムの「郵便受け」のメールが「自分の手元」に 取り込むことができます。
画面が切り替わって上半分にはメールの一覧が、下半分には本文が見えているはずです。 読む時のキー操作を書いておきます。
Space | 本文のページをめくる |
↑↓ | メールを選ぶ |
. | 選んだメールを表示 |
ESC R | 古いメールも含めて一覧表示する |
q | mh-rmail を終了する |
i | mh-rmail の最中に届いたメールを取り込む |
次に、試しに自分にメールを出して見ましょう。
mh-rmail を起動した状態で、m
を押します。
画面の下の方に、To:
とか表示されているはずです。
ここに送り先の ID を書きます。ここでは自分の ID を入力して Return を
押してください。
次に cc:
がでてきますが、メールの写しを送っておく相手が
いなければ Return で結構です。
最後の Subject:
にはタイトルを入力します。
そうすると、画面が切り替わって、
To: g******
cc:
Subject: *****
----------
とかなっているはずです。(多少違ってもいいです)
線の下になにかを打ち込んで、To: がちゃんと自分になっていることを
確かめたら、C-c C-c (Ctrl を押しながら
日本語入力の方法は「情報処理入門 補遺」などに記載されています。
日本語が入力できるようになったら、友人宛にメールを出して見ましょう。
本文の画面になってから、気が変って送信をやめるには C-c C-q です。
また、線の上の To: を編集すると宛先を後から変更することも
可能です。
しばらくして(ライセンスの同意を要求されるかもしれない)駒場情報教育棟
のページが表示されるはずですが、文字化けが激しいかも知れません。
最初に設定が必要です*1。
メニューのから、次の順序で設定を変えていってください。
そうしたら一回 [Reload] とかかれたボタンを押してください。
これで正常に立ち上がらなかったら、Menu の File -- Quit で一旦終了して、
もういちど立ちあげてください。
各ページには何ヶ所かの下線の引かれた文字(アンカー)があり、
画面の一番上にはなんか
なお、TSG のホームページは
です。こちらもぜひご覧ください。
コマンドは DOS とはかなり違いますが、いじっていくうちになれるとは
思います。参考書をなにか求めるのがいいでしょうが、
先にDOS ユーザがよく陥る注意を述べておきます。
P.S. 実は Netscape のところで Disk Cache を 0 にしたのはこれの
対策でもあります。その分、駒場ではシステムの方で Web ページを
キャッシュしているので速度はそんなに変わりません。
よく使うコマンドだけ DOS と対照してあげておきます。
[総目次へ]
q
で終了してもう一度mh-rmail を起動するか、i
でメールを
取り込むといま送信したメッセージが取り込めるはずです。できましたか?Netscape
いま世の中で大流行している Mosaic にアクセスして見ましょう。
シェルウィンドーから "netscape &
" と入力して Netscape を
起動して見ましょう。
Options -- Network Preferences -- Cache
Memory Cache Size を 2000 kbytes に
Options -- Document Encoding -- Japanese (auto-select)
Disk Cache Size を 0 kbytes に
Clear Disk Cache にカーソルをあわせてマウスの左ボタンを押す
OK
Options -- Save Options
http://www.komaba.ecc.u-tokyo.ac.jp/
とかかかれた
文字欄があるはずです。この文字欄に URL と呼ばれるページの指定を打ち込んだり、
下線の引かれた文字列の上で左ボタンを押したりしていくとどんどんページが
変わって行きます。ネットサーフを愉しんでください!コマンドについて(MS-DOS ユーザへの注意)
「UNIX 入門」も書くつもりですが、とりあえずちょっとだけ…
*.*
では、「何等かの拡張子のあるファイル(.
のあるファイル名)
になります。DOS と違って、*1
で「最後が 1
で終わるファイル名」
などという指定もできます。
rm *
とかやっても確認はして来ません。
いきなりカレントディレクトリを全削除します。UNIX には
undelete は無いので一度消えたらそれまでです。
rm には注意しましょう。
UNIX DOS
dir ls -sl
dir/w ls
copy cp
del rm
ren,move mv
type cat
cd cd
md mkdir
rd rmdir 今後
次の新入生歓迎号では、Netnews の扱い方とエチケットについて、
それと「UNIX 入門」と題してコマンドを通じて UNIX と情報棟を
256 倍とはいわずとも 16 倍くらいは使う方法に入ります*2。
ぜひ TSG に入って次号を読んでください (^^;。*3
注