Assembly 程序集x86:仅处理一个ASM文件
如何在一个Assembly 程序集x86:仅处理一个ASM文件,assembly,x86,Assembly,X86,如何在一个.ASM文件中创建所有操作系统?我检查了MikeOS,它可以处理多个文件(如string.asm,screen.asm等)。启动签名后如何工作和编写代码?在MikeOS中,我知道它将kernel.asm文件加载到内存中。为什么会载入内存?为什么它不能在一个文件中工作 示例代码: bits 16 org 7c00h mov si, bootmsg call ps call hidecursor jmp $ bs: pusha mov al, 8 ;BACKSPAC
.ASM
文件中创建所有操作系统?我检查了MikeOS,它可以处理多个文件(如string.asm
,screen.asm
等)。启动签名后如何工作和编写代码?在MikeOS中,我知道它将kernel.asm
文件加载到内存中。为什么会载入内存?为什么它不能在一个文件中工作
示例代码:
bits 16
org 7c00h
mov si, bootmsg
call ps
call hidecursor
jmp $
bs:
pusha
mov al, 8 ;BACKSPACE
mov ah, 0eh
int 10h
mov al, 32 ;SPACE
mov ah, 0eh
int 10h
mov al, 8 ;BACKSPACE
mov ah, 0eh
int 10h
popa
ret
nl:
pusha
mov al, 13
mov ah, 0eh
int 10h
mov al, 10
mov ah, 0eh
int 10h
popa
ret
ps:
pusha
.test:
lodsb
cmp al, 0h
je .eof
mov ah, 0eh
int 10h
jmp .test
.eof:
popa
ret
hidecursor:
pusha
mov ah, 1
mov cx, 2607h
int 10h
popa
ret
showcursor:
pusha
mov ah, 1
mov cx, 0607h
int 10h
popa
ret
bootmsg db 'Hi', 0
times 510 - ($ - $$) db 0
dw 0xaa55
它也在一个文件中工作。它的可读性和可维护性。你用什么语言编程了吗?您需要加载东西,因为BIOS只加载前512个字节。不过,您仍然可以将所有内容都放在一个源文件中,这是不推荐的。如何创建第二个扇区并继续编码?是的,您可以继续。您仍然需要在运行时自己加载它。我创建了
shutdown
标签,并尝试jmp shutdown
。我不知道它是否跳转,但它没有执行命令(它没有关闭)。此答案中的代码提供了一个基本引导加载程序,它从磁盘上引导加载程序之后的扇区开始加载第二个阶段,并在BIOS加载的第一个512字节后立即将其读入内存:。这个答案还生成了一个1.44 MiB磁盘映像,可以作为软盘在模拟器上使用,也可以作为软盘在使用软盘驱动器仿真引导的USB驱动器上使用。