鱼C论坛

 找回密码
 立即注册
查看: 1558|回复: 0

[技术交流] Boot Sector 分析

[复制链接]
发表于 2013-4-10 19:49:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 catch 于 2013-4-10 19:53 编辑

Boot Sector 的 NASM 程序



org  0x7c00
mov  ax, cs
mov  es, ax

call DisplayString
cli
hlt


DisplayString:
    mov  ax, BootMessage
    mov  bp, ax           ; es:bp = Offset of String(BootMessage)
    mov  cx, 16           ; cs = String Length(BootMessage)
    mov  ax, 1301h        ; ah = 13h, al = 01h(Write mode)
    mov  bx, 000ch        ; Page Number = 0(bh = 0), 黑底红字(bl = 0Ch,高亮)
    mov  dl, 0
    int  10h
    ret

BootMessage:            db      "Hello, OS World!"

times   510 - ($ -$$)   db      0

dw      0xaa55

控制BIOS,将代码起始位置放置于: 0x7c00 处。(CS = 0x0,IP = 0x7c00, 结合起来,代码所在的内存地址为:0x0:0x7c00 = 0x7c00)


调用 BIOS 中断 int 10h, 显示字符串到屏幕

有的程序用 jmp $ 代替此处。但 jmp $ 会使 CPU 不停地进行忙碌死循环。
cli 指令,表示 Clear Interrupts,关闭所有的硬件中断。
hlt 指令,表示停止 CPU 运行。



想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-7 20:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表