养乐多505 发表于 2022-3-22 13:36:33

汇编实验

汇编语言王爽老师第四版实验五的第二题,如果段中的数据占n个字节,则程序加载后,该段实际占有的空间为(N/16+1)*16.
麻烦大佬解释一下

jackz007 发表于 2022-3-22 14:58:27

本帖最后由 jackz007 于 2022-3-22 16:05 编辑

       因为段边界对齐,意思是,假如你定义的一个段只占用了 35h 个字节,那么,在编译的时候,编译程序将会为这个段实际分配 40h (64)个字节的空间,这样,相邻的下一个段就会从 10h 整数倍的位置开始。就是说,任何一个段总是会从 10h 整数倍的位置开始,并在 10h 整数倍的位置结束。关于这一点应该不难理解,因为,段地址最小的增减单位是 1,不正是对应于 10h (16)个字节吗?

凡得友 发表于 2022-3-23 22:04:52

debug中用d命令,打开查看内存,一行是16个字节。我理解:定义的空间不够16个字节的话,它也会给你分配一行,也就是16个字节;大于16小于等于32个字节,它会给你分配两行,如果是33个,它就会分配给你三整行,即它会以16为基数,一行一行的给你分配空间。
页: [1]
查看完整版本: 汇编实验