📄 mkmbr.s
字号:
;REM 重写硬盘主引导程序的测试文件
;\batsdev\bin\nasm -fbin %0 -o mkmbr.com -E \batsdev\src\debug\mbr.err
;\batsdev\bin\nasm -e %0 -o \batsdev\src\debug\mbr.dbg
;goto batend
org 0x100
BEGIN:
mov ax, 0201h
mov bx, 200h
mov cx, 1
mov dx, 0080h
int 13h ;读硬盘主引导扇区到es:200
jnc CHGPARTAB ;读正确?
xor ax, ax ;不正确?磁盘复位,再读
int 13h
inc si ;次数计数器
cmp si, 3 ;连续读3次
jnz BEGIN ;不到3次?再读
DOSREADERR: ;3次都不正确?错误处理
mov dx, DOSERRMSG
mov ah, 09h
int 21h
ret
CHGPARTAB: ;获取分区表信息
mov si, 3beh
mov di, 7beh
mov cx, 040H
CLD
REP
MOVSB ;更换分区表数据
WMBOOTSECT:
mov ax, 0301h ;写一个扇区
mov bx, 600h ;把es:bx的内容写到主引导扇区
mov cx, 1
mov dx, 0080h ;写第一块硬盘
int 13h
jnc WMBOOTOK ;写正确
inc si
cmp si, 3
jnz WMBOOTSECT
mov dx, WRITERRMSG
MOV AH, 09H
INT 21H
RET
WMBOOTOK:
mov dx, WRITOKMSG
MOV AH, 09H
INT 21H
RET
DOSERRMSG db 'Read main boot sector error !',0dh,0ah,'$'
WRITERRMSG DB 'Writ main boot sector error !',0dh,0ah,'$'
WRITOKMSG DB 'Make BATS MBR OK !',0dh,0ah,'$'
times 0x500-($-$$) db 0
incbin "mbr.bin"
;:batend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -