当前位置:  技术问答>linux和unix

看书的问题,请帮忙!

    来源: 互联网  发布时间:2015-12-28

    本文导语:  org 07c00h ; 告诉编译器程序加载到7c00处 mov ax, cs mov ds, ax mov es, ax call DispStr ; 调用显示字符串例程 jmp $ ; 无限循环 DispStr: mov ax, BootMessage mov bp, ax ; ES:BP = 串地址 mov cx, 16 ; CX = 串长度 mov ax, 01301...

org 07c00h ; 告诉编译器程序加载到7c00处
mov ax, cs
mov ds, ax
mov es, ax
call DispStr ; 调用显示字符串例程
jmp $ ; 无限循环
DispStr:
mov ax, BootMessage
mov bp, ax ; ES:BP = 串地址
mov cx, 16 ; CX = 串长度
mov ax, 01301h ; AH = 13,  AL = 01h
mov bx, 000ch ; 页号为0(BH = 0) 黑底红字(BL = 0Ch,高亮)
mov dl, 0
int 10h ; 10h 号中断
ret
BootMessage: db "Hello, OS world!"
times  510-($-$$) db 0 ; 填充剩下的空间,使生成的二进制代码恰好为512字节
dw  0xaa55 ; 结束标志


上面的代码是《自己动手写操作系统》一书上的,请问第一句中为什么是07c00h,我试着修改成别的数字,运行结果不对,为什么?

|
好像是计算机体系结构规定的,CMOS程序会自己到07C00H地址处加载引导程序,所以就必须是07C00H,换成其他的,系统都不能成功引导。

|
不用资料,你可以用书上介绍的bochs来调试。按照书上讲的方法写好.bat文件之后,运行.bat文件,进入调试界面,敲入命令"b 0:0x7c00"回车,再敲入"s"回车,表示单步运行,你就可以看到你的程序(用disassemble还可以看到你写的代码的对应代码)是从这里开始运行的了,所以就可以知道实际上BIOS是将我们的引导代码拷贝到这里然后开始运行的。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 看书烦了,上来逛逛~~~
  • 我想看书!
  • 看书当中发现:书上的函数这样写法:
  • 请给出linux 学习书籍以及循序渐进的看书顺序
  • 笔试和面试时回答不出具体服务的配置怎么办?有些Linux服务都是看书才会做的。
  • 麻烦各位进来帮菜鸟我看看,, 今天自学看书时遇到了一个困惑。。。。。。。
  • 看书时有些东西高不太明白,请高手给指点一下,谢谢
  • 看书的时候有个地方不懂:instanceof的用法,以及它的概念。不要写英文呀:)
  • 如果没有LINUX环境,仅凭看书,如何在短时间内尽可能多地熟悉LINUX下的操作?
  • 光看书没什么用,所以偶想用JAVA做个什么东东的,请高手指点


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3