メールマガジン・新着情報一覧
- TOP
- メールマガジン・新着情報一覧
- A-0116. MS-DOSとの再会 — T.T
2020.11.18
A-0116. MS-DOSとの再会 — T.T
◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇ MS-DOSとの再会 発行:エスオーエル株式会社 https://www.sol-j.co.jp/ 連載「X線CTで高精度寸法測定!?」 2020年11月18日号 VOL.116 平素は格別のお引き立てを賜り、厚く御礼申し上げます。 X線CTスキャンによる精密測定やアプリケーション開発情報などをテーマに、 無料にてメールマガジンを配信いたしております。 ◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇ 今でも仕事に役立っていると思う昔の経験に、 中学高校の頃に夢中になってやっていた アセンブリ言語と機械語があります。 仕事でアセンブリ言語や機械語で 直接プログラミングすることはまずありません。 でも、様々なデータシートの仕様を読むことはよくあります。 装置のシステムには、多くの制御機器が組み込まれています。 トラブルシュートでは、原因調査のため、 アプリケーション開発では、改善や課題解決のため、 データシートを読み込むことがよくあります。 モーションコントローラや通信制御など、 機械語レベルで読んで考えることは意外に多いのです。 機械語に関連したプログラミングが必要な時も、 だいたい C言語を使います。 ニーモニックを並べてアセンブリ言語を書いたり、 16進の数字を並べて機械語を書いたりということは、 過去の遠い思い出でした。 でも、最近は何かに導かれたように、 アセンブリ言語に関連することに触れることが多くなってきました。 キーワードを並べると、 ・浮動小数点数演算 ・ボリュームデータ ・GPU演算 ・通信仕様 ・機械学習 ・量子計算 などです。 これらは、アセンブリ言語と無縁に扱うこともできる時代になりました。 Python のパッケージはとても便利で潤沢です。 でも、物足りないというか満足できないのです。 そこで、最近 VS Code を使い始めた関係もあって、 そこにアセンブリ言語の開発環境を構築しました。 するとこれが、まあなんとも楽しいです。 昔は、i386 CPU のデータシートを読み込んだものですが、 今の Intel Core i シリーズのデータシートを見てみると、 メインのドキュメントが 5000ページあって、付属資料も別途あります。 1/4世紀で、この情報量の増加は大変なものですが、 自分も大量の情報から必要な情報を読み取ることに慣れてしまったので、 数千~万ページのリファレンスマニュアルでも驚かなくなりました。 Windows の開発者向けマニュアルは、もっと膨大です。 仕事で使うデータシートも数千ページというのはよくあります。 さて、アセンブリ言語でプログラムを書くと、 結果を画面に表示したくなります。 すると、Windows という OS 上で動かしているからには、 Windows にお伺いを立てなくてはなりません。 (Windows様を飛び越えて何かをするのは至難の業です。) しかたがないので、Windowsのシステムコールを調べて、 Kernel32.lib を拾ってきて、リンクして、ということやっていると、 C++ でプログラム書くのと、やっていること変わらないじゃん という気持ちになります。 あーあれなんだっけ、 INT 21h が懐かしいという気持ちになります。 INT 21h というのは、MS-DOSのシステムコールで、 CPU の AH レジスタに、機能番号をセットして、INT 21h を呼ぶことで、 いろいろ入出力とかができるものです。 どうしても、INT 21h をもう一度使ってみたいという衝動に駆られて、 とうとう MS-DOS のブートUSBを作ってしまいました。 中身には、 MSDOS.SYS IO.SYS COMMAND.COM AUTOEXEC.BAT CONFIG.SYS という懐かしい面々が揃っています。 パソコン画面が全面真っ黒の背景に白い文字のコンソールになります。 これが、Core i5 上で動いています。感動です。 そして、AH レジスタに 09h をセット(mov ah, 09h)して INT 21h を呼ぶプログラムを書いて、アセンブルすると、 無事に文字列がコンソール上に表示されるプログラムが完成しました。 楽しすぎる。延々と触っていられる。という気持ちになりますが、 これは懐かしいだけの思い出に浸っているだけで、 あまり前に進んでいる感じがしないので、 最新の技術を使いながら同じような楽しさを味わえる何かをしよう と気持ちを切り替えます。 -- 高野智暢