汇编从入门到精通:写MBR

汇编从入门到精通:写MBR

依旧欧美打法

; 程序被加载值0x07c00处,显示Hello from QCOS. 可根据需求自行修改

; 我是不是应该分个段

jmp start

start:
    ; 我是不是应该初始一下栈

    ; 歪门邪道清屏法
    mov ah,0x00
    mov al,0x03
    int 0x10

    ; 源地址是DS:SI
    ; 目的地址是ES:DI

    ; 显示Hello From QCOS!
    mov ax,0x07c0
    mov ds,ax ;段基地址为0x7c00 16位模式下自动左移四位 所以最终是0x7c000

    mov ax,0
    mov si,message ; 基地址已给,此乃偏移地址
    mov di,ax ; 目标偏移地址从0开始写

    mov ax,0xb800
    mov es,ax ; 文本缓冲区地址 0xb8000

    cld ;df = 0,正向传送
    mov cx,message_length ;传送字符串长度
    rep movsb ; 重复这条指令直到cx为0

    jmp $ ; 停这

; 显示的字符串
message db 'H', 0x07, 'e', 0x07, 'l', 0x07, 'l', 0x07, 'o', 0x07, ' ', 0x07, 'F', 0x07, 'r', 0x07, 'o', 0x07, 'm', 0x07, ' ', 0x07, 'Q', 0x07, 'C', 0x07, 'O', 0x07, 'S', 0x07, '!', 0x07
message_length equ ($ - message)

; 填充剩余地方为0
times 510-($-$$) db 0
db 0x55,0xaa

运行效果

8a08951aac20250930205435

原理解读后面发

© 版权声明
THE END
喜欢就支持一下吧
点赞42 分享
一个幽灵的头像-夏雨社区
评论 抢沙发

请登录后发表评论

    暂无评论内容