【アセンブラ】VWware Playerで動かない

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

【アセンブラ】VWware Playerで動かない

#1

投稿記事 by みけCAT » 12年前

Windows Vista Home Premium SP2 32ビット
Intel(R) Core(TM)2 Duo T8100 @2.10GHz 2.10GHz
RAM 4.00GB

gcc 4.7.2
自作開発補助ツール(このトピックと共通)

フロッピーディスクのブートセクタで実行し、同ディスクのルートにあるBOOT.BINを読み込んで実行するプログラムを書いたのですが、
試した中でVMware Playerでだけうまく動かなくて困っています。

添付ファイルの中にあるvmwtest.imgをフロッピーディスクとして読み込み、
VirtualBox 4.2.18、QEMU 0.13.0、VMware Player 6.0.0で起動しました。
仮想マシンのRAMは全て256MBに設定しています。
VirtualBoxとQEMUではきちんとHello, World!と表示されたのですが、
VMware Playerでは「err0(改行)0」と表示され、うまく実行できませんでした。

ブートローダーのプログラムはこれです。(添付loader.s)
► スポイラーを表示
BOOT.BINに置くプログラムも一応載せます。(添付helloworld.s)
► スポイラーを表示
ファイルの読み込みエラーだとしても、想定する動作では2行目に数字が出力されるということは無いはずなので、
メモリ破壊やサブルーチンの呼び出し前後で%spの値がずれるなどのバグがあるかもしれません。
しかし、ソースコードを読み返しても発見できませんでした。

もし原因が分かりましたら、教えていただければありがたいです。
よろしくお願いします。

【追記】
Bochs 2.6.2でもHello, World!と表示されました。

【さらに追記】
http://www.geocities.co.jp/SiliconValle ... toiso.html
のツールでisoファイルに変換し、QEMUで動作確認したあと実機(FMV-BIBLO NF/B50)でテストしましたが、
「err0(改行)0」が大量に出力されました。これはVMware Playerでisoイメージを使った時と同じ挙動(もちろん失敗)です。
添付ファイル
vmwtest.zip
検証用ファイル
(5.41 KiB) ダウンロード数: 120 回
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: 【アセンブラ】VWware Playerで動かない

#2

投稿記事 by みけCAT » 12年前

調べていると、VMware Playerや実機では%dsの初期値が0ではなく0x40であることがわかりました。
そこで、プログラムの最初で%dsを0にすると、
VMware Player(FDおよびCD)、実機(CD)全てBOOT.BINを読み込んで実行することができました。

ただし、VMware Player 6.0.0の起動があまりにも遅かったので、VMware Player 4.0.6を使っています。

BOOT.BINを読み込んで実行するプログラムの改良版
► スポイラーを表示
起動時のレジスタの値を表示するプログラム(ブートローダーの領域に書き込んで使う)
► スポイラーを表示
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

閉鎖

“C言語何でも質問掲示板” へ戻る