cs宇帝 发表于 2023-11-9 15:36:30

汇编实验5

name segment
........
name ends
如果段中数据占N 个字节,则程序加载后,该段实际占有的空间为(N/16+1)*16
请问为什么这样算

isdkz 发表于 2023-11-9 15:37:06

这种计算方式是因为在汇编语言中,数据是按照字节存储的。一个字节占用一个存储单元,而一个存储单元的大小通常是一个字(word),即16位。因此,当段中的数据占用N个字节时,实际上会占用(N/16+1)个存储单元。

为了对齐内存,汇编程序会将段加载到内存中的地址按照存储单元对齐,即地址是16的倍数。所以,为了保证数据对齐,程序会将段实际占用的空间向上取整到最近的16的倍数。

因此,通过计算(N/16+1)*16,可以得到段实际占用的空间大小,以保证数据对齐和内存的有效利用。
页: [1]
查看完整版本: 汇编实验5