小编Pau*_*net的帖子

自定义操作系统的引导程序没有跳转到内核的麻烦

我最近有一个想法开始开发自己的操作系统.在阅读了我认为可以帮助我完成这项任务的不同网站上的许多文章后,我想我现在可以开始了.(顺便说一句,我使用的是Ubuntu 14.10 x64)

由于软盘是开发操作系统最简单的存储介质,我购买了3.5英寸软盘驱动器.

我使用NASM作为汇编编译器,qemu作为模拟器.使用dd命令,我将一个现有的和空的(就文件而言)软盘克隆到一个名为floppy.img.bak的文件中.

之后,我在x86程序集中编写了一个简单的bootloader:

bootloader.asm

org 7C00h
jmp 0x0000:start    ;go 

msg db 'Loading Kernel...', 0

start:
    ;update the segment registers
    mov ax, cs
    mov ds, ax
    mov es, ax

    mov si, msg

print:          ;prints a string
    lodsb       ;load next char

    cmp al, 0   ;if null terminator...
    je reset    ;...jump to reset:

    mov ah, 0Eh ;print AL
    mov bx, 7   
    int 10h

    jmp print   ;if not null terminator, continue printing

reset:          ;resets the floppy drive
    mov ax, …
Run Code Online (Sandbox Code Playgroud)

linux assembly bootloader

7
推荐指数
1
解决办法
519
查看次数

标签 统计

assembly ×1

bootloader ×1

linux ×1