汇编地址与偏移地址

怎甘沉沦 提交于 2020-01-17 04:56:31
1.汇编地址与偏移地址

代码经过编译之后的文件内容,即代码对应的汇编地址如下:

;汇编地址	机器码   源程序代码	
00000000	B800B8	 mov ax,0xb800
00000003	8EC0	 mov es,ax
;注释不编译

对应的汇编地址与偏移地址的关系如下图:

将该段程序加载到物理地址0x60000处,能看到汇编地址与偏移地址是一致的。

2.align

Intel处理器要求段在内存中起始地址为16或32字节对齐,即能被16(32)整除:align =16align =32

segment header
db 0xaa
segment code align=16
db 0xbb
segment date align=16
db 0xcc

汇编地址如下:code段为16位对齐,因此要从0x0010开始,用0x00填充

0x00000000:	aa	00	00	00	00	00	00	00	00	00	00	00	00	00	00	00
0x00000010:	bb	00	00	00	00	00	00	00	00	00	00	00	00	00	00	00
0x00000020:	cc	00	00	00	00	00	00	00	00	00	00	00	00	00	00	00
3.vstart

vstart可以使汇编地址从段开头开始计算:

segment header 
db 0xaa				;0x00
segment code align=16 vstart=0 
db 0xbb				;0x00
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!