永发信息网

为什么是07c00h?

答案:2  悬赏:0  手机版
解决时间 2021-03-17 01:18
为什么是07c00h?
最佳答案
我们知道编译器本身在汇编时对指令的地址计算的是相对地址。而对于引导扇区,一切只是从无生有的
阶段,是按绝对地址执行.那么对于用相对地址编译的执行码就要换算成绝对地址.
一般而言,"真实开始执行的引导扇区"都会固定装载到07c00处,注意这句话是说一个真正的引导扇区.
对于硬盘上,会有一个主引导扇区,然后由它来控制和其它引导扇区,比如grub控制windows,linux等.
那么这个主引导扇区会加载在0600h处,当选择其它可引导扇区时再将真正的可引导扇区加载到07c00h.
所以一般而言真正的可引导扇区都装载到07c00h处.
因为编译器在编译时的地址是从第一行开始用0000h开始相对计算的.假如我们定义一个str: dw"zxy"
它的相对地址是0100h,如果我们mov ax str那么就是将0100h传给ax,这在编译后的执行码中是固定的.
而引导扇区是使用绝对地址执行的,指令从07c00h处开始执行,那么访问0100h绝对是错误的访问.真实
的绝对地址是07c00h+0100h,所以如果你不写org 07c00h,把mov ax str写成mov ax str+07c00h对于
传址操作是一样的目的.对于作者的那段程序可以去掉第一行的org 07c00h.把"mov ax,BootMessage"
改成"mov ax,BootMessage+07c00h",效果是一样的.
但是如果有大量的传址操作,那就要在每个地方都要+07c00h,那是一件非常头痛的事.
所以在第一行加上org 07c00h只是让编译器从相对地址org 07c00h处开始编译第一条指令,那么下面的相对地址被编译加载后就正好和绝对地址吻合.
全部回答
支持一下感觉挺不错的
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
完美世界 武侠90到102在哪挂机?
欠银行贷款80万会让法院强制执行房屋拍卖和封
爪极电机原理接线图
谷歌浏览器无法显示百度地图
旭峰汽车美容养护中心在什么地方啊,我要过去
岗位 用藏语文怎么写?
江西省玉山县邮政储蓄银行行号是什么
贺阳外国语学校第一分校怎么去啊,有知道地址
DS-108小黑白机开关电源开关管是13005,基极
3/x-1+4x/1-x2=-1/x+1的解
恒山仅爬山需多少钱,就是不玩其它,进去的门
立志餐厅地址有知道的么?有点事想过去
比较不同材料的柔韧性 实验需要哪些材料
我国历史上有“梅花魂”的人
气机油开口了放三年了还能用吗
推荐资讯
基于Linux的物联网操作系统知多少
高诗琪(小名:颖颖)这名怎么样!!什么意思
顺风快递从厦门到三明尤溪要多久?
工程竣工文字资料的内容可以作为结算依据吗
尚锋地产营销有限公司地址在什么地方,想过去
谁在久久康体网买过保健品?卖的价钱比较便宜
展国强中医卫生室在什么地方啊,我要过去处理
运城民政局网站?
宝沃BX7 2016款 28T 四驱豪华版5座怎么样
尼尔机械纪元游乐设施的隐藏boss触发不了啊怎
13岁男孩尿酸444算高吗
单身女王最好几集怎么看不了
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?