🎉 创建了boot程序!

This commit is contained in:
fslongjin 2022-01-15 12:49:18 +08:00
commit eb37e8a20c
5 changed files with 82 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
/cmake-build-debug/
/bin/

8
.idea/.gitignore generated vendored Normal file
View File

@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

6
CMakeLists.txt Normal file
View File

@ -0,0 +1,6 @@
cmake_minimum_required(VERSION 3.20)
project(dragonOS C)
set(CMAKE_C_STANDARD 11)
add_subdirectory(bootloader)

View File

@ -0,0 +1,9 @@
set(CMAKE_ASM_NASM_SOURCE_FILE_EXTENSIONS nasm asm S)
set(CMAKE_ASM_NASM_OBJECT_FORMAT bin)
set(CMAKE_ASM_NASM_FLAGS "-e")
set(CMAKE_ASM_NASM_LINK_EXECUTABLE "nasm <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
enable_language(ASM_NASM)
#
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
add_executable(boot.bin boot.asm)

57
bootloader/boot.asm Normal file
View File

@ -0,0 +1,57 @@
;将程序开始位置设置为0x7c00处并给BaseOfStack赋值为0x7c00
org 0x7c00
BaseOfStack equ 0x7c00
Label_Start:
;初始化寄存器
mov ax, cs
mov ds, ax
mov es, ax
mov ss, ax
mov sp, BaseOfStack
;清屏
mov ax, 0x0600 ;AL=0时清屏BX、CX、DX不起作用
mov bx, 0x0700 ;设置白色字体,不闪烁,字体正常亮度,黑色背景
mov cx, 0
mov dx, 0184fh
int 10h
;设置屏幕光标位置为左上角(0,0)的位置
mov ax, 0x0200
mov bx, 0x0000
mov dx, 0x0000
int 10h
;在屏幕上显示Start Booting
mov ax, 0x1301 ;设置显示字符串,显示后,光标移到字符串末端
mov bx, 0x000f ;设置黑色背景,白色字体,高亮度,不闪烁
mov dx, 0x0000 ;设置游标行列号均为0
mov cx, 10 ;设置字符串长度为10
;为什么这里不能直接把ds赋值给es
push ax
mov ax, ds
mov es, ax
pop ax
mov bp, StartBootMessage
int 10h
;软盘驱动器复位
xor ah, ah
xor dl, dl
int 13h
jmp $
StartBootMessage: db "Start Boot"
;填满整个扇区的512字节
times 510 - ( $ - $$ ) db 0
dw 0xaa55 ;===确保以0x55 0xaa为结尾