0

私は純粋なハードウェア (OS なし) プログラミングを学んでおり、フラッシュドライブ (Kingston DT101 G2 8Gb を使用) からの起動に問題があります。最初のコードはバックアップされておらず、今では正確に再現することはできません:(、エミュレーター(最新のBochs)とライブハードウェアの両方でうまく機能しました。その後、より多くの機能が追加されました(サブルーチンを出力してロードするダンプ) int 13h の関数 42h を使用してフラッシュ ドライブからセクターを取得した場合、これは Bochs では完全に機能しましたが、ライブ コンピューターではまったく機能しませんでした。最初と変更されたセグメントレジスタの初期化で. これが今どのように見えるかです:

load_address equ 0x7c00                     ;was used earlier but not now, just keeping it if anything

use16                                       ;we start in real mode
bootloader_start:
cli

;setting up the segments
xor ax, ax
mov ss, ax
mov sp, 0x7c00
push word 0x7c0
pop ds
push ds
push word continue
retf

continue:
sti

;copying CS into video memory to check it value (blue background)
mov ax, 0xb800
mov es, ax
mov ax, cs
push ax
mov ah, 0x17
mov [es:0], ax
pop ax
mov al, ah
mov ah, 0x17
mov [es:2], ax


;infinit loop
jmp short $



current_tty_address:        ;was used earlier
dw 0

boot_drive_number:          ;was used earlier
db 0

padding:
;padding to sector size - 2
times 510-($-$$) db 0
dw 0xaa55                   ;mbr identifier

;if comipling for Bochs, padding to hard disk image size (flat mode,   10Mb)
%ifdef BOCHS
padding2:
times 512 * (17 * 4 * 306 - 1) db 0
%endif

しかし、これは正しく機能しませんでした。画面の最初の位置 (0, 0) に文字を配置しますが、次の位置は黒です (ただし、文字コードが何であれ、少なくとも背景は青でなければなりません)。さらに、異なるサイズのフラッシュ ドライブ (Kingston DT101 G2、32Gb) に同じコードを書き込むと、「Missing operating system...」というメッセージが表示されます。さまざまなバリエーションを試しましたが、まだこの作業を行うことができず、何が起こるかわかりません。これはフラッシュドライブの問題ですか? A さんは、数か月前に同じフラッシュ モデルで LinuxLive を試し、4 ~ 5 回起動した後、起動が停止したことを思い出すことができます。ここで私が使用するもの: コンピューター モデル: HP EliteBook 8440p; (オフリース); CPU: Intel Core i5 M520 2.40GHz 2 コア; BIOS: Hewlett-Packard 68CCU Ver. F.0D、14/07/2010 (更新されたかどうかはわかりません); コンパイラ: NASM;

何が起こるかを理解するのを手伝ってください。どうもありがとう。

4

1 に答える 1

0

これは私の非常にばかげた間違いでした... Disk Probe の物理ドライブ リストに何も表示されない場合、Disk Probe を管理者として実行すると推測するのではなく、論理ボリュームのリストから選択していたからです。そのため、ツールは、ドライブ全体のセクター 0 に書き込むのではなく、アクティブ パーティションのセクター 0 に書き込みました。これはハードディスクでは完璧に機能しましたが、使用した両方のフラッシュドライブで何か問題が発生しました (パーティションテーブルの処理における BIOS と Windows + ディスクプローブの非互換性、またはこのようなもの)。幸いなことに、問題は非常に簡単でした。皆さんの努力に感謝します。

于 2015-09-19T15:56:53.250 に答える