无论一个操作系统从软盘启动、还是从硬盘启动,都会验证magic number,所谓magic number,就是软盘/硬盘第一个扇区最后两个字节的值,如果为0xaa55,则表示此扇区为boot sector,如果不为0xaa55,则表示此扇区不能作为boot sector。
但是,今天发现了一个问题,即使第一个扇区末两个字节的值不为0xaa55,也可以正常启动。难道magic number不是给BIOS程序识别的,而是给操作系统编写者识别的?...

- [luwenheasmedu] 那本书啊,有没有电子版的下载啊? 11/09 10:47
- [游客] 长见识了 10/01 23:59
- [Wednesday] [引用]目前,用nasm作为编译器,来重写每一章的练习题。感觉还是蛮爽的。 ---------- 09/30 14:59
- [playboy] 有同感,我已经学了三遍了,每次都有收获! 09/30 12:01
- [游客] 不错~! 09/29 18:48
- [cook702] 路过! 长知识了,呵呵.. 09/29 17:30
- [bloom] 博主既然学完此书了,而且认真的做完了每章的监测点及练习,建议博主应该学习其它的计算机知识了,比如学习 09/29 14:19
[2007-09-29 21:47] 神奇的magic number
阅读全文 |
评论次数(1) |
浏览次数(536) |
所属类型(默认类型)
[2007-09-29 14:32] nasm里面的跳转指令
masm中,有跳转指令:
jmp dword ptr ds:[si]
call dword ptr ds:[si]
如果ds:si指向的内存地址内容为:12 34 56 78,则指令执行后,cs=7856h,ip=3412h。这个没有什么问题。
如果用nasm,以上两条指令也可以正常编译,通过link后也可以生成执行文件。但是执行结果很不一样。这个常常让我这类的新手迷惑不已。究其原因,就是nasm里面dword关键字的用法和masm里面不一样。nasm里面dword仅仅表示地址长度为2个字节。
假设内存0:200h处有一段程序,而ds:si指向的内存地址内容为:00 20 00 00...
jmp dword ptr ds:[si]
call dword ptr ds:[si]
如果ds:si指向的内存地址内容为:12 34 56 78,则指令执行后,cs=7856h,ip=3412h。这个没有什么问题。
如果用nasm,以上两条指令也可以正常编译,通过link后也可以生成执行文件。但是执行结果很不一样。这个常常让我这类的新手迷惑不已。究其原因,就是nasm里面dword关键字的用法和masm里面不一样。nasm里面dword仅仅表示地址长度为2个字节。
假设内存0:200h处有一段程序,而ds:si指向的内存地址内容为:00 20 00 00...
阅读全文 |
评论次数(2) |
浏览次数(561) |
所属类型(默认类型)
[2007-09-29 11:15] 终于找到了家!!!
本人已经看过这本书两遍了,每一遍都有不小的收益。
目前,用nasm作为编译器,来重写每一章的练习题。感觉还是蛮爽的。
有没有其他兄弟姐妹也是用nasm的,有空大家多多交流。...
目前,用nasm作为编译器,来重写每一章的练习题。感觉还是蛮爽的。
有没有其他兄弟姐妹也是用nasm的,有空大家多多交流。...
阅读全文 |
评论次数(4) |
浏览次数(584) |
所属类型(默认类型)
页码数(1):
1