command.comとASCIIコードについて質問させて下さい。
もし御存じであれば以下について御回答いただけないでしょうか。

例えば、
キーボード上「 あ」・「 い」・「 う」・「 え」・「BS」・「 ←」というキーがあり
そしてそれに対応するASCIIコードが
それに対応して「a1」・「a2」・「a3」・「a4」・「b1」・「b2」となっていたとします。
その時、「あ・い・う」というコマンドを入れたかった場合に
「え・い・う」と間違えて入力してしまった場合、command.comにはENTERが押された時点で「a4・a2・a3」という命令がされることになるのですか?
その後で、「a1・a2・a3」に直したいとき「BS」で戻るというのは「BS」の「b1」というコードが
「a4・a2・a3・b1」と入るわけではなく、直接command.comの入力用バッファが
「a4・a2」となってしまうということになるのでしょうか?
それとも、やはり「a4・a2・a3・b1」となっているんだけどディスプレイ上「え・い」となっているということなのでしょうか?

それに対して「 ←」キーは異なる動作をするということなのですか?
それとも、もともと「b2」というコードはなくて「 ←」と入力されたときは
「BS」と入力されたものと同じ処理をするということになるのでしょうか?

質問の意図が取りにくいかとは思うのですが、是非お答いただけたらと思います。どうか宜しくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

そろそろ「自信なし」の回答になってきます。


まずアセンブラの概念ですね。アセンブラ(というのはプログラムの名前なので、厳密にはアセンブリ言語)は、CPUやメモリを直接操作します。それに対してコンパイラで使うCやJavaなどの高級言語は、メモリなどを抽象化したものを扱います。
具体的にたとえば、文字列の操作をするとき、高級言語では名前をつけた文字列変数を用意して、文字列削除の命令で何番めの文字を削除、という操作をするのですが、アセンブリ言語ではメモリのx1番地からx4番地までを文字列の領域として使う、3文字めを削除するときはx3番地をクリアする、といった操作をプログラム自体に指定します。高級言語でも最終的にやっていることは同じなのですが、高級言語のプログラムソースを見ていても、こうしたことはわかりません。
(実際には、シンプルなC言語での文字列処理はメモリの直接操作に近い方法ですし、アセンブリ言語でもマクロアセンブラを使えばかなり抽象化できますが、とりあえずここでは概念の話です)。
このへんはまさしく「概念」なので、これがわかったからといって実際のアセンブリ言語でのプログラミングには結びつきません(わたしも実はできません)。ただ、最終的にコンピュータの中でこうした仕組みが働いている、と理解しておけば、もちろんアセンブリプログラミングの第一歩になりますし、高級言語のプログラミングや、単に利用する上だけでも、有効なのではないかと思います。

io.sysは、本来のMS-DOSでは、外部入出力(I/O、input/output)とCPUを繋ぐ働きをします。command.comなどからの「この文字を表示しろ」という命令(ファンクションコール)をmsdos.sysが解釈し、それをio.sysが実際のVRAM(表示用のメモリ)の番地に変換して書き込む、といった作業を行っていたはずです。もっとも最近のWindowsでは、msdos.sysは単に以前との互換性のために残されているだけで、io.sysがファンクションコールの処理から行っているような気配ですね。
うーん、このへんは思いっきり「自信なし」です。どなたか補足を……。
    • good
    • 0
この回答へのお礼

御回答ありがとうございました。

本当に参考になりました。
御厚意に感謝いたします。

お礼日時:2001/02/27 11:56

質問の履歴を見ると、だいぶお困りのようですね……。


これについては、入力バッファがどういう構造のメモリであるかを考えるのが近道だと思います。アセンブラそのものの知識は必要ないですが、その基礎になっている概念が必要だ、ということでしょう。
まず、command.comは入力バッファというメモリ領域を用意しています。メモリには(この場合は)1バイト単位で番地が割り振られ、直線上に並んでいると考えることができます。仮にx1,x2,x3,x4...としましょう。また、画面表示用のメモリ領域(内容がそのまま画面に反映される)もあり、これをv1,v2,v3,v4...とします。
質問の例では、x1にa4,x2にa2,x3にa3と、入力された文字を順に格納していき、それがふつうの文字コードなら、そのままv1~v3にコピーして画面上に表示させます。BSまたは←キーを押したとき、x4にいったんコードb1が格納されますが、これは前削除のコードなので、command.comのプログラムがb1を解釈し、x3ひいてはv3をクリアします。もちろんx4に格納されていたb1自体もクリアされます。x4をv4に反映する前にこの処理を行うわけです。(まとめてcommand.comと書きましたが、v1~に反映させるのはio.sysあたりの仕事かもしれません。あいまいな回答ですみませんが)。
素のcommand.comのバッファエディタは、これだけの(x1~に格納されたコードを解釈し、反映させる)作業しかしません。他に、ふつうのキーではEnterとBreakの解釈をするぐらいです。ctrl-H,ctrl-M,crtl-C,ctrl-J,ctrl-Eなどの動作も試してみてください。上記以外がどうなるかは細かく覚えていませんが(^_^;(ctrl-Pとctrl-Nはプリンタ関係なので、下手に触るとハングアップするかもしれないので気をつけて)。
もともとcommand.comの動作はテレタイプを真似たVT-52やVT-100という規格に基づいています。このへんのキーワードも調べてみると面白いかもしれません。新刊書店で参考書を見つけることが難しいようだったら、専門の古書店に当たってみてはどうでしょう。東京なら神保町に、理工学書専門の古書店がいくつかあったと思います。
    • good
    • 0
この回答へのお礼

御回答頂きまして誠にありがとうございます。

御丁寧に教えていただきまして、非常に感謝しております。
入力バッファ領域と画面表示用の領域が別にあるのですか。
そのあたりが私の中で整理がついていませんでした。
おかげさまで何とか宿題の回答を作成することが出来そうです。

ただ、少しだけ御回答いただいたものの中で気になるところがありまして、
しつこくて大変恐縮なのですが、なんとか再度御回答いただけないでしょうか。

ここにいわれるアセンブラの基礎概念とはどういったものなのでしょうか?
また、io.sysとは基本的にどういう働きをするものなのでしょうか。

本当に申し訳なく思いますが、是非よろしくお願いいたします。

お礼日時:2001/02/22 10:03

先ほどの回答に補足します



COMMAND・COMといってもどれくらいの範囲でしょうか
というのはDOS起動時におそらくMS-DOS・SYSと
IO・SYSというファイルが読み込まれると思われるので
プロンプトの制御ルーチンがここに記述されている可能性はあります

masahiro_chi さんが何をやらんとされているのか教えていただければ
もうすこし具体的に回答できるのですが・・・
    • good
    • 0
この回答へのお礼

御回答いただきまして誠にありがとうございます。

io.sysファイルというものもあるのですか。
大変参考になりました。

私が何をしようとしているかと言いますと
数日前に「MS-DOSについて」と言う質問をさせていただきまして
皆様の御回答を拝見させていただくうちに
このような質問に至りました。

御親切にありがとうございました。

お礼日時:2001/02/22 09:04

質問の回答のお礼の回答(・・・?)です



> > 後者の「a4・a2」が正解です。
> >
> とのことなのですが、一度は「b1」をcommand.comが認識して
> 「a3」を消すことになるのでしょうか?
> それとも何か他に制御しているものがあるということなのでしょうか?

command・comを解剖したわけではないので100%ではありませんが
99%command・comがやっているでしょう
私が調べた範囲でですがPC-98シリーズもDOS/V機も
そういった機能をもつBIOSサービスルーチンはありませんでした
・・・となると後はcommand・comがやっているしか考えられません
    • good
    • 0
この回答へのお礼

なるほど。
概要が分かってきました。

御回答いただきましてありがとうございました。

お礼日時:2001/02/22 09:06

えーと


MS-DOSに関してでしたら

> 「え・い・う」と間違えて入力してしまった場合、command.com にはENTERが
> 押された時点で「a4・a2・a3」という命令がされることになるのですか?

そのとおりです。

> その後で、「a1・a2・a3」に直したいとき「BS」で戻るというのは
> 「BS」の「b1」というコードが「a4・a2・a3・b1」と入るわけではなく
> 直接command.comの入力用バッファが 「a4・a2」となってしまう
> ということになるのでしょうか?

後者の「a4・a2」が正解です。

> それに対して「 ←」キーは異なる動作をするということなのですか?
> それとも、もともと「b2」というコードはなくて「 ←」と
> 入力されたときは「BS」と入力されたものと同じ処理をするということに
> なるのでしょうか?

これについてはPC-98シリーズMS-DOSに限って言えば
BSキーと←キーのキーコードは同一
したがって同一の動作をします

DOS/VのMS-DOSやWin95のプロンプトではどうだったかは・・・
    • good
    • 0
この回答へのお礼

御回答ありがとうございます。

質問事項が抜けていたのですね。
その通りMS-DOSに関しての質問でした。
申し訳ありません。

>後者の「a4・a2」が正解です。

とのことなのですが、一度は「b1」をcommand.comが認識して
「a3」を消すことになるのでしょうか?
それとも何か他に制御しているものがあるということなのでしょうか?

もしお分かりでしたら教えていただけないでしょうか。
宜しくお願いいたします。

お礼日時:2001/02/21 16:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qcommand.comの内部動作(エディットバッファ等)と画面表示の問題について

昨日、MS-DOSについて質問させていただいたものです。
私が質問の内容を把握していなかったために皆様に多くの御手数をおかけしましたことをお許し下さい。

昨皆様からのご回答を頂く中で私が聞きたいのはどうやらcommand.comの内部動作(エディットバッファ等)と画面表示上の問題についてということが分かりました。昨日は分かったつもりだったのですが、一晩考えたところ、よく分からない点がありまして出来ればそちらにもご回答いただきたく質問させていただけないでしょうか。どうかよろしくお願いします。質問項目は以下の通りです。

1.command.comは現在入力中の文字列のバッファを
  持たないということなのですがなぜ画面表示が出来て、
  しかも入力中の文字列を[ENTER]を押せば解析し
  実行できるのに、バッファはしていないということになるのですか?
  (直前の[ENTER]キーを押されて実行した文字列を
   バッファしているということは分かりました。)
2.また、編集するには入力中の文字列バッファを持って、
  現在のカーソルの位置を覚えておくという処理が必要ということも
  分かったのですが、そうするとDOSKEYと入力することで
  そういったバッファ領域やカーソル位置を認識する領域を初めて
  確保するということになるのでしょうか?
  DOSKEYの内部動作っていうのでしょうか?
  出来ればそういったものを詳しく教えていただけないでしょうか。
3.それらと画面表示はまったく別物なのでしょうか?

自分がよく分かっていないので質問が的を得ていないかもしれませんが
どの問いに対してでも結構です。どうかご回答のほどよろしくお願いいたします。

昨日、MS-DOSについて質問させていただいたものです。
私が質問の内容を把握していなかったために皆様に多くの御手数をおかけしましたことをお許し下さい。

昨皆様からのご回答を頂く中で私が聞きたいのはどうやらcommand.comの内部動作(エディットバッファ等)と画面表示上の問題についてということが分かりました。昨日は分かったつもりだったのですが、一晩考えたところ、よく分からない点がありまして出来ればそちらにもご回答いただきたく質問させていただけないでしょうか。どうかよろしくお願いします...続きを読む

Aベストアンサー

1についてですが、入力バッファが編集用バッファとしての機能を持っていないということです。入力バッファとか編集バッファとかいろいろ書いてしまったのでわかりにくくなったようですね。元々command.comは、CP/Mを拡張して unixの shに近づけて使いやすくしたという頃もあり、また、編集するとなると表示することが面倒(プログラムのメモリ最寄り多く必要になる)なので、そういう拡張はしていません。
2については、DOSKEYは command.comを拡張する常駐ソフトです。編集用のバッファ機能を DOSKEYが提供しているという形になります。キー入力を DOSKEYが受け取り、command.comに渡しているという形になっています。
3についてですが、キー入力と画面表示は別物です。入力した物を画面に表示するということも command.comがしています。

command.comは、DOSという言葉からわかるように、あくまでディスクを操作する(アプリケーションの起動も含めて)ための OSと人の操作をやりとりするための物なので、多くの機能を含める必要性が無く、またメモリも少なくてすむように作られています。

1についてですが、入力バッファが編集用バッファとしての機能を持っていないということです。入力バッファとか編集バッファとかいろいろ書いてしまったのでわかりにくくなったようですね。元々command.comは、CP/Mを拡張して unixの shに近づけて使いやすくしたという頃もあり、また、編集するとなると表示することが面倒(プログラムのメモリ最寄り多く必要になる)なので、そういう拡張はしていません。
2については、DOSKEYは command.comを拡張する常駐ソフトです。編集用のバッファ機能を DOSKEYが提供し...続きを読む

QAspire M5201 ASM5201-A32&A33

お持ちの方で!使用の感想等を聞かせてください♪
XPのサポート期間だけ使用する考えなんですが・・・(vistaを消してXP導入予定)
(1)7へのアップグレード対象ですか?
(2)動作等はどうですか?
(3)その他感想聞かせてください!
※又、この金額なら~○○○がいいよみたいな~別のお勧めがあれば教えてください~
使用は、ネット・オフィス・JW CAD・メール・DVD作成(ソフトあります)・ダウンロードぐらいですかね!他に質問しているんですが・・・一旦XP用に安く購入して!7が落ち着いてら少し予算を上げて7対象PCを買おうかと考え中です~因みにメモリーやCPUは古いものですか?
感想、アドバイスお願いお願いいたします~

Aベストアンサー

OS持ってるならOS無しで買えばいいんでは。
Lightning AM
http://www.dospara.co.jp/5goods_pc/pc_detail.php?h=d&f=d&m=pc&mc=860
CPUはこっちの方がいい。

もしくはもう少し足せるなら
http://www.pc-koubou.jp/pc/model/mt553aa2x4_main.php
コレをOSなしで買う。\41,480
1500円程度でチップセットも新しい、CPUも4コアで全然良くなる。今ならメモリが倍。

QExcelの事教えていただけませんか?

今度、就職したいのですが…Excelが必須なんです。これから約1ヶ月の間に習得したいのですが、自宅のパソコンにはExcelが入ってません。その代わりといってはなんですが、フリーソフトの「OpenOffice.org」をインストールしてあります。聞いた話によると、互換性もあり操作方法もほとんど同じとの事なんですが、「OpenOffice.org」で練習して大丈夫なんでしょうか?
全く操作できないわけではないのですが、今回の就職先ではかなりのスキルを求められてます。Excelだけではなく、パワーポイントやワードも当然みたいです。
あと、「マクロ」の事を教えていただけませんか?無知ですいませんが、宜しくお願いいたします。

Aベストアンサー

こんにちは。
OpenOffice.orgのことが分からないのに回答させていただきます。
私はもう十年以上前にEXCELの勉強を始めて、本に書いてあることで
分からないことはないと、自分で勝手に自負しております。
EXCELの能力を組合わせると、もうこれは無限の機能を自分で
考えて作り上げることが出来るくらいのものです。
しかし、会社で日常で使う範囲の機能と言えば、会社毎、業務毎に
違いますが、いつも同じ機能しか使いません。
『あるセンサーの耐久性試験データを取得し、Excelにてまとめ
パワーポイントでプレゼンする』のでしたら、そこの部分
(表、グラフ)と、パワーポイントとの連携の部分を重点的に本で
勉強されたらいかがでしょうか。もちろんその前に基本操作
(ファイル保存等)が出来るのが前提です。

あまり基本的なことを職場の人に聞くのはマイナスな反面、
背伸びするのもよくありません。一番大切なことは仕事に対する
姿勢と責任感ではないでしょうか。がんばって下さい。
もちろん一番良いのは短時間でも実際に操作することです。

こんにちは。
OpenOffice.orgのことが分からないのに回答させていただきます。
私はもう十年以上前にEXCELの勉強を始めて、本に書いてあることで
分からないことはないと、自分で勝手に自負しております。
EXCELの能力を組合わせると、もうこれは無限の機能を自分で
考えて作り上げることが出来るくらいのものです。
しかし、会社で日常で使う範囲の機能と言えば、会社毎、業務毎に
違いますが、いつも同じ機能しか使いません。
『あるセンサーの耐久性試験データを取得し、Excelにてまとめ
パワーポイン...続きを読む

QBad command or file nameはなにをいれれば・・・

ノートパソコンにパーティションマジック8.0をインストールして再起動したら
立ち上がらないので緊急用ディスクの一枚目をいれたところDOSが開き
Bad command or file name  A:/>_ ここになにをいれたら
良いのでしょうか おしえてください サポートは電話がつながらず
こまっています。よろしくおながいします

Aベストアンサー

緊急用ディスクの autoexec.bat を他のパソコンのエディタ等(notepad.exe)で開いてみて下さい。この中のどこかの行が、コマンドとして認識されずに処理が途中で止まっているのだと思います。PATHの設定が間違っていて、起動しようとしているコマンドが見つからないのかもしれません。もしDOSの知識が不足している様でしたら、どなたか詳しい方に見て頂いた方が良いと思います。残念ですが、これ以上の対応は OK Web では難しいですね。。。

QDOSで、ASCIIデータをバイナリコピーにて結合するとゴミがはいる?

DOSで、2つのASCIIデータをバイナリコピー(COPY /b)すると1バイトのゴミが入る場合があるのですが、なぜこのようになるのでしょうか?

しかし、必ずゴミが入るわけではないようにも思います。
→たまたま入る時がある?
→ASCIIデータの形によって、入る時がある?
バイナリコピーしない場合(COPY)は混在することは無いように思います。

昔、ASCIIデータは、バイナリコピーしない方が無難と聞いたことがある気もするのですが、昔過ぎて理由等忘れてしまいました。

詳しい方いらっしゃいましたらお教えいただけると助かります。

Aベストアンサー

手元の環境でやってみました(WindowsのDOS窓ですが)

その1バイト増えるごみ というのはもしかしたらファイルの最後に
付いておりデータとして 0x1A(16進) ではありませんか?
(此方でやった限り逆にアスキーコピーした時に付いてるようですが)

そうならファイルの終了マーカを意味している物ではないかと思います
http://support.microsoft.com/kb/29852/ja

ファイルの中間にデータが増えるとか言うのでしたら
具体的なファイルのダンプコードなどをチェックするか
ここに乗せた方がいいのではないかと思います

アスキー(テキスト)ファイルの作成方法によってはファイル終了マーカとして
最後に0x1Aが書き込まれます
例)
DOSプロンプト上で copy con ファイル名 等として直接ファイル入力
終了する時には CTRL+Z の入力となりそのような作成すると
0x1Aが書き込まれます

プログラムなどでファイル造作する場合でもアスキーモードで開けば
このデータは無視されるはずです

手元の環境でやってみました(WindowsのDOS窓ですが)

その1バイト増えるごみ というのはもしかしたらファイルの最後に
付いておりデータとして 0x1A(16進) ではありませんか?
(此方でやった限り逆にアスキーコピーした時に付いてるようですが)

そうならファイルの終了マーカを意味している物ではないかと思います
http://support.microsoft.com/kb/29852/ja

ファイルの中間にデータが増えるとか言うのでしたら
具体的なファイルのダンプコードなどをチェックするか
ここに乗せた方がいいの...続きを読む


人気Q&Aランキング

おすすめ情報