汇编语言 实验5 有看不懂的地方。
assume cs:code,ds:data,ss:stack data segment dw 0123h,0456hdata ends stack segment dw 0,0stack ends code segment start:mov ax,stack mov ss,ax mov sp,16 mov ax,data mov ds,ax push ds: push ds: pop ds: pop ds: mov ax,4c00h int 21h code ends end start 对于如下定义的段:name segment……
name ends
如果段中的数据占N个字节,则程序加载后,该段实际占有的空间为 ((N+15)/16)*16 。 解析:N分为被16整除和不被16整除。
当N被16整除时: 占有的空间为(N/16)*16
当N不被16整除时: 占有的空间为(N/16+1)*16,N/16得出的是可以整除的部分,还有一个余数,余数肯定小于16,加上一个16。
程序加载后分配空间是以16个字节为单位的,也就是说如果不足16个字节的也分配16个字节。
两种情况总结成一个通用的公式:((N+15)/16)*16
N刚好是16个字节的倍数,那么实际占用的空间就是N喽。就是这么简单呐。 @小靚同学Leon 看了答案,还是看不懂 dos的内存分配方案就是酱紫滴,比较单一,它是按节来的,一节刚好是16个字节,那不足16个字节还是按16个字节分配滴 我来看下
页:
[1]