• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:アセンブラ、ビデオモード al 13h でマウスのポインタを表示)

アセンブラでビデオモード al 13h にマウスのポインタを表示

このQ&Aのポイント
  • アセンブラのビデオモード al 13h を使用して、マウスのポインタを表示することは可能ですか?
  • ビデオモードを設定しない場合は Alt + Enter でフルスクリーンにすると、ポインタが表示されます。
  • masm32環境で、マウスのポインタを表示するためには、ビデオモード al 13h を設定する必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • ralf124c
  • ベストアンサー率52% (232/446)
回答No.2

お待たせしております。 以下のソースはFASSTというヨーロッパ製のアセンブラ処理系用に書き直して確認しました(ご質問のソースと同じものです)。 ------------------------------------------------ここから org $100 mov ax,$0013 int $10 mov ax,$0001 int $33 mov ah,$01 int $21 mov ax,$0003 int $10 mov ah,$4c int $21 -------------------------------------------------ここまで  アセンブルでき、実行ファイル(COMファイル)も生成され、英語モード(WinXPならUSコマンド<->JPコマンド)では実行するとちゃんと大きなカーソルが表示されます。  ただ、日本語モードではINT10の割り込みがフック(呼び出し先のアドレスが書き換えられる)されるているため日本語モードでは動作しないです。  モードの切り替えもプログラムでできたと記憶していますが(CHEVコマンドを逆アセンブルしてLSI-C試食版でその部分を作り直した記憶があります)当時のソースが見当たらず申し訳ありません。  資料の入手に関しては単純に年のせいです。リアルタイムにかかわってきた上に貧乏性で捨てられないためです。  いま、オンラインで手に入る資料としては参考URLの「OADGテクニカル・リファレンス」が一番ではないかと思います。SOFTBANKからも「DOS/Vテクニカルリファレンスマニュアル」(1993)という本がDOS/V時代の終盤に出版されて古本屋でたまに見かけます。  DOSには非公開の機能が多くそれについて書かれたものは上記の本以外で網羅したものは少なくほとんど洋書になってしまい現在入手は不可能かと思います。  あと、Simtelという有名なDOS時代のオンラインソフトサイト(ftp.simtel.net)に当時の蓄積がかなり残ってます(消えたものもあります)。  BIOSやシステムコール、割り込みを制するとDOSが見えてきます。割り込みベクターテーブル、ソフト割り込み、ハード割り込み、タイマ割り込み、なんかの言葉を調べていじってみると面白い発見があるかと思います。

参考URL:
http://www.oadg.or.jp/techref/download.cgi
yasu182
質問者

お礼

回答ありがとうございます。 英語モードで試してポインタの表示を確認できました。 何時間か調べてみたのですが、こんな落とし穴があったんですね  そういえばデバッガの code view を使ってみた時も やはり日本語環境で文字化けしたのを覚えてます。 勉強になりました 参考資料もとても詳しいですね ありがとうございます よろしければもう一つだけお伺いしたいのですが、 x dw 20 のように宣言した後、 x の値、20 を表示するには どうすれば良いのでしょうか? Java で言う System.out.println(x); をしたいのですが... これが出来ると offset x など調べるのに便利だと思いまして。

yasu182
質問者

補足

あらためて質問を投稿しました いろいろなアドバイスありがとうございました ^^

その他の回答 (1)

  • ralf124c
  • ベストアンサー率52% (232/446)
回答No.1

懐かしいです。 いまどきBIOSコールを使われる方がいらっしゃるとは驚きです。 いま手元に当時の資料が無いのであとで自宅で調べてみますが、たしかでかいカーソルが表示されたような記憶があります。 ただ、ビデオモードやアセンブラのコードが英語(オリジナル)環境が前提になってますので、DOS/Vだと終了時に元の画面に戻らない気がします。仮想VRAMを事前に取得してうんぬんだったかと・・・。 ちょっと、家の資料をひっくり返して見ますのでお待ちください。 追伸:  レジスタを0クリアするときは「MOV」より「XOR」を使うのが定番です。  例: xor al,al  ハンドアセンブルしてみるとニーモニック長がぜんぜん違うのがわかると思います。

yasu182
質問者

お礼

回答ありがとうございます プログラミング言語の先祖ってどんなものだろう、と思いまして ^^ オンラインで資料を探してもあまり多くないですね ユーザーが少ないので仕方ないと思いますが。 ralf124c さんはどこで資料を手に入れたのでしょうか? また、Intel のドキュメンテーションを探そうと思ったのですが みつけることが出来ませんでした。 どこかに役に立つものは存在するのでしょうか??

関連するQ&A