📄 boot.asm
字号:
;;****boot.asm****
org 07c00h
mov ax,cs
mov ds,ax
mov es,ax
mov ax,3
int 10h ;调用中断,清屏
call DispStr ;调用显示字符串例程
main:
mov ah,0h
int 16h ;调用中断,等待键盘输入
cmp al,49
je program1 ;判断输入,为1则跳转program1
cmp al,50
je program2 ;为2则跳转program2
cmp al,51
je exit ;为3则跳转exit
jmp main
program1:
push es
mov ax,1000h
mov es,ax ;给附加段寄存器es赋值
mov bx,0
mov ah,02h ;调用中断,设置磁盘扇区
mov al,1 ;扇区数为1
mov ch,0 ;柱面为0
mov cl,2 ;第二扇区
mov dh,0 ;磁头为0
mov dl,0 ;软盘
int 13h
pop es
jmp 1000h:0 ;跳转,执行program1
program2:
push es
mov ax,2000h
mov es,ax
mov bx,0
mov ah,02h ;调用中断,设置磁盘扇区
mov al,1 ;扇区数为1
mov ch,0 ;柱面为0
mov cl,3 ;第三扇区
mov dh,0 ;磁头为0
mov dl,0 ;软盘
int 13h
pop es
jmp 2000h:0 ;跳转,执行Program2
exit:
push es
mov ax,3000h ; es:bx=3000h:0000
mov es,ax
mov bx,0
mov ah,02h ;设置读磁盘扇区中断功能号
mov al,1 ;扇区数为1
mov ch,0 ;柱面为0
mov cl,4 ;第4个扇区
mov dh,0 ;磁头为0
mov dl,0 ;0软盘
int 13h
pop es
jmp 3000h:0 ;跳转,执行exit
DispStr:
mov ax,BootMessage
mov bp,ax ;es:bp=串地址
mov cx,271 ;cx=串长度
mov ax,01301h
mov bx,000ch ;页号为0,黑底红字
mov dl,0
int 10h
ret
BootMessage: db "Welcome to the Junjie Pan's 0S World Version 1.0!",10,13 ;换行
db "(C) All Copyright Reserved: Junjie Pan ",10,13
db "Department of Computer Science,",10,13
db "Sun Yat-sen University, P.R.China",10,13
db "E-mail: henrypan123@tom.com ",10,13
db " (1)Run Program1",10,13
db " (2)Run Pragram2",10,13
db " (3)Exit",10,13
db "Please Enter the Number above:"
times 510-($-$$) db 0 ;补足剩下的空间,直到占用512字节
dw 0xaa55 ;结束标志
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -