mirror of
https://github.com/DragonOS-Community/DragonOS.git
synced 2025-06-08 18:26:48 +00:00
🎉 创建了boot程序!
This commit is contained in:
commit
eb37e8a20c
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
/cmake-build-debug/
|
||||
/bin/
|
8
.idea/.gitignore
generated
vendored
Normal file
8
.idea/.gitignore
generated
vendored
Normal 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
6
CMakeLists.txt
Normal file
@ -0,0 +1,6 @@
|
||||
cmake_minimum_required(VERSION 3.20)
|
||||
project(dragonOS C)
|
||||
|
||||
set(CMAKE_C_STANDARD 11)
|
||||
add_subdirectory(bootloader)
|
||||
|
9
bootloader/CMakeLists.txt
Normal file
9
bootloader/CMakeLists.txt
Normal 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
57
bootloader/boot.asm
Normal 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为结尾
|
||||
|
||||
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user