实验5.2不明白,求指点
④对于如下定义的段:name segment
……
name ends
如果段中的数据占N个字节,则程序加载后,该段实际占有的空间为 ((N+15)/16)*16
((N+15)/16)*16 点不理解,这个公式从哪里看来? 同求 顶起 以为段必须被16整除(段寄存器左移4位来寻址,所以必是16的倍数),所以N分为被16整除和不被16整除。
当N被16整除时: 占有的空间为(N/16)*16= (N/16+0)*16=(N/16+15/16) *16= ((N+15)/16)*16.
当N不被16整除时: 占有的空间为(N/16+1)*16,N/16得出的是可以整除的部分,还有一个余数,余数肯定小于16,加上一个16。
程序加载后分配空间是以16个字节为单位的,也就是说如果不足16个字节的也分配16个字节。
(N/16+1)*16 ?=((N+15)/16)*16
此时N/16必有大于等于1且小于16的余数m,((N+15)/16)*16=((N-m/16)+(m)/16+15/16)*16
其中N-m/16能被16整除,(m+15)/16相当于+1.
综上可述:通用的公式:((N+15)/16)*16
页:
[1]