如何从汇编操作系统加载 .BAS 文件
How do I load .BAS files From An Assembly Operating System
我需要从引导加载程序中加载一些基本 (.bas) 文件。
我的引导加载程序非常基本,它应该做的就是显示一些文本并将 .bas 文件加载到内存中并执行它。
(我对汇编很陌生,还没有完全理解,所以你可能需要解释一些事情。)
到目前为止,这是我的简单代码(它所做的只是显示文本。):
BITS 16
start:
mov ax, 07C0h
add ax, 288
mov ss, ax
mov sp, 4096
mov ax, 07C0h
mov ds, ax
mov si, text_string
call print_string
jmp $
text_string db 'MyOS BootLoader...', 10, 13
db 'Looking For Kernel..., 10, 13
; *** INSERT .BAS LOADING CODE HERE :D ***
print_string:
mov ah, 0Eh
.repeat:
lodsb
cmp al, 0
je .done
int 10h
jmp .repeat
.done:
ret
times 510-($-$$) db 0
dw 0xAA55
(我的代码基于 Mike Saunders 的 MikeOS(发现 here))
如果有人能帮助我,我将不胜感激。 :)
My boot loader is very basic, and all it is supposed to do is display some text and load a .bas file into memory and execute it.
这比你想象的要难。 运行 BASIC 程序需要解释器。除非您使用的是带有 ROM 中的 BASIC 的真正 IBM PC(自 1980 年代以来就没有了),否则您需要在引导扇区中包含一个解释器。 (这不合适。)
考虑加载不同类型的可执行文件 -- 例如 COM 文件。
我需要从引导加载程序中加载一些基本 (.bas) 文件。
我的引导加载程序非常基本,它应该做的就是显示一些文本并将 .bas 文件加载到内存中并执行它。
(我对汇编很陌生,还没有完全理解,所以你可能需要解释一些事情。)
到目前为止,这是我的简单代码(它所做的只是显示文本。):
BITS 16
start:
mov ax, 07C0h
add ax, 288
mov ss, ax
mov sp, 4096
mov ax, 07C0h
mov ds, ax
mov si, text_string
call print_string
jmp $
text_string db 'MyOS BootLoader...', 10, 13
db 'Looking For Kernel..., 10, 13
; *** INSERT .BAS LOADING CODE HERE :D ***
print_string:
mov ah, 0Eh
.repeat:
lodsb
cmp al, 0
je .done
int 10h
jmp .repeat
.done:
ret
times 510-($-$$) db 0
dw 0xAA55
(我的代码基于 Mike Saunders 的 MikeOS(发现 here))
如果有人能帮助我,我将不胜感激。 :)
My boot loader is very basic, and all it is supposed to do is display some text and load a .bas file into memory and execute it.
这比你想象的要难。 运行 BASIC 程序需要解释器。除非您使用的是带有 ROM 中的 BASIC 的真正 IBM PC(自 1980 年代以来就没有了),否则您需要在引导扇区中包含一个解释器。 (这不合适。)
考虑加载不同类型的可执行文件 -- 例如 COM 文件。