首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

段有关问题

2012-03-14 
段问题在dos汇编中,如果代码段的起启位置为3000h:0000h,大小为20h,那么那下一个相邻的段的起始地址为3002h

段问题
在dos汇编中,如果代码段的起启位置为3000h:0000h,大小为20h,那么那下一个相邻的段的起始地址为

3002h,但如果代码断的大小不为20h,而是17h,那下一段的地始地址是多少呢?为什么?

[解决办法]
3000h:0000h,大小为20h的物理地址范围是:30000H~3001FH
如果代码断的大小不为20h,而是17h,那下一段的地始地址是多少呢?为什么?
下一段的起始地址还是30020,因为DOS分配内存时,分配的最小粒度是16字节,称为一个段或节,之所以这样分配,是为了配合“段值*16=段起始地址”这一公式。只有分配粒度是16字节时,实际的段起始地址右移四个二进制位(相当于除以16),才可以放入段寄存器中,而不会出现舍去余数的现象。这样,段寄存器中存放的就是段值(段号(16字节称为一个段))

热点排行