闲逸笔记

keep it simple & stupid

操作系统从软盘引导分区(Boot Sector)到加载Loader过程原理与实践总结

1 软盘磁头号, 磁道号, 起始扇区计算方法

《自己动手写操作系统》一书中提到的公式:
    ; 设扇区号为 x
    ;                             ┌ 磁道号 = y >> 1
    ;       x              ┌ 商 y ┤
    ; --------------    => ┤      └ 磁面号 = y & 1
    ;  ...

▼  展开全文... 评论(0)
总结关于操作系统进入保护模式的相关知识点

1 进入保护模式的代码分析

代码来自《自己动手写操作系统》一书. 在原有基础上加了些自己的注释.
; ==========================================
; pmtest1.asm
; 编译方法:nasm pmtest1.asm -o pmtest1.bin
; ==========================================

%include    "pm.inc"    ; 常量, 宏, 以及一些说明

org    07c00h
    jmp    LABEL_BEGIN


[SECTION .gdt]
; GDT ...

▼  展开全文... 评论(0)
制作一个 Boot Sector 并使用 Bochs 进行调试

1 Boot Sector 的 NASM 程序

org  0x7c00

mov  ax, cs
mov  es, ax

call DisplayString
cli
hlt

DisplayString:
    mov  ax, BootMessage
    mov  bp, ax           ; es:bp = Offset ...

▼  展开全文... 评论(0)
NASM 版 Hello World 详细说明及注释

1 代码及注释

section .data
    msg:     db   "Hello World!!", 0ah, 0dh ;注:0ah(ASCII码:换行符),odh(ASCII码:回车符)
    msglen:  equ  $ - msg                   ;注: msg 标志的是字符串 "Hello World!!",0ah ...

▼  展开全文... 评论(0)
通过 gdb 调试 nasm 汇编程序

1 NASM 版 Hello World 程序

$ vi t.asm
section .data

msg:
    db "Hello World!!", 0ah, 0dh

section .text
    global main

main:
    mov eax, 4
    mov ...

▼  展开全文... 评论(0)
top bottom