ORG 0x7C00
来源:互联网 发布:淘宝最大的明星周边店 编辑:程序博客网 时间:2024/06/08 12:30
org 0x7c00是告诉编译器,这段代码是要加载到0x7c00处的。编译器在编译代码的时候如果涉及到变量寻址操作是会自动加上0x7c00这个基址的。
因为最终确定每条指令的地址其实是编译器做的事情,在链接的时候会自动的进行重定位和地址分配。这里不是说编译器加载代码到0x7C00,而是由BIOS来自动的将启动代码加载到0x7C00,但是我都到这里了,那么我每次寻址的话就得还加上这个基地址。
0x7c00的来源:0x7C00第一次出现的地方是在IBM PC 5150的BIOS处理int 19(19号中断)的时候。
IBM PC 5150是x86(32位)IBM PC/AT系列的祖先,这款PC于1981年发布,使用intel 8088(16位)的处理器和16KB的RAM内存,BIOS和微软的基本指令均放在该内存当中。
当打开电脑电源,BIOS开始自检,然后触发19号中断。在处理19号中断时,BIOS检测电脑是否具有软盘/硬盘/固定磁盘,如果电脑具有任何可以的磁盘,BIOS就把磁盘的第一个扇区(512B)加载到内存的0x7C00地址处。
现在你知道为什么在x86的文档中找不到0x7C00的相关信息了,因为它是与BIOS相关的。
原文中具有这样的一个表:
+——————— 0×0
| Interrupts vectors(中断向量表)
+——————— 0×400
| BIOS data area(BIOS的数据区域)
+——————— 0×5??
| OS load area(操作系统加载区域)
+——————— 0x7C00
| Boot sector(引导区域)
+——————— 0x7E00
| Boot data/stack(引导数据/堆栈)
+——————— 0x7FFF
| (not used)
+——————— (…)
- ORG 0x7C00
- org 0x7c00解疑
- 当裸机之下没有org 0x7c00之后
- 0x7c00解疑
- 0x7C00 理解
- 0x7c00引导地址详解
- 为什么GRUB起始地址为0x7c00.
- 为什么bios将mbr装载到0x7c00地址,0x7c00怎么来的?
- 为什么bios将mbr装载到0x7c00地址,0x7c00怎么来的?
- 为什么bios将mbr装载到0x7c00地址,0x7c00怎么来的?(翻译)
- 为什么bios将mbr装载到0x7c00地址,0x7c00怎么来的?
- Why BIOS loads MBR into 0x7C00 in x86 ?
- Why BIOS loads MBR into 0x7C00 in x86 ?
- Why BIOS loads MBR into 0x7C00 in x86 ?
- BIOS加载MBR到内存地址0x7C00的由来
- Why BIOS loads MBR into 0x7C00 in x86 ?
- BIOS加载MBR到内存地址0x7C00的由来
- 为什么x86模式里BIOS在0x7c00加载MBR
- 01字串
- Hashtable与HashMap
- Log4J使用笔记
- [jQuery]使用jQuery.Validate进行客户端验证——不使用微软验证控件的理由-目录及简介
- 关于UIView的autoresizingMask属性的研究
- ORG 0x7C00
- VIM中运行shell
- installshield 4075 错误
- Android将Activity打成jar包供第三方调用(解决资源文件不能打包的问题)
- 命令学习_ping
- Jmeter《Java请求》使用总结
- scala学习交流的网站
- android下opengl es文档
- mysql联合索引详解