Я пишу небольшую программу лямбда-исчисления в сборке. Я запускал его с помощью VirtualBox, и он работал отлично, но когда я скопировал код в bootsector моего USB-накопителя и загрузил мой компьютер с него, он не сработал.Виртуальный виртуальный компьютер
Я выделил проблему для начальной загрузки дополнительного сектора, содержащего библиотеку функций. Вот этот фрагмент кода:
PUSH 0x2000
POP ES ;segment 0x2000
MOV BX, 0x0000 ;offset
MOV CX, 0x0002 ;sector 2 and track 0
MOV DX, 0x0080 ;drive 80 and head 0
load:
MOV AX, 0x0201 ;read only one sector
INT 0x13 ;read sector
JC load ;repeat until no error
MOV BX, 0x0007
MOV AH, 0x0E
MOV AL, [ES:0x0000]
INT 0x10 ;print a '!' character to test if the process is successful (purely for debugging reasons)
Так что с VirtualBox я получаю приятный! чтобы показать, что процесс загрузки был успешным, но на моем компьютере он дает мне черное пространство (ASCII 0x00). Все предложения относительно того, что может быть проблемой здесь.
Не знаю, но, пожалуйста, напишите сообщение в блоге об этом, когда вы его заработаете! –
Возможно, ваш USB-накопитель считает, что он диск 0, а не диск 80h? –
Предполагается, что BIOS загрузит номер загрузочного диска в регистр 'DL', поэтому вы должны устранить эту проблему. – Jester