.MODEL用于表示所编写程序的代码 数据的大小

语法:.MODEL 内存模式(memorymodel)

下面这个表格提供了 内存模式 可以选择的模式种类

模式说明代码数据数组
SMALL可以在里面存储一个代码段
可以在里面存储一个数据段
OOX
MEDIUM可以存储多个代码段
可以存储一个数据段
OX
COMPACT可以存储一个代码段
可以存储多个数据段
OX
LARGE一个存储多个数据段和代码段
不超过64K字节的数组
O64KB
HUGE一个存储多个数据段和代码段
超过64K以上的字节数组
64KB




前面的文章提到了许多关于的概念。那么,段是什么?
内存并没有分段,段的划分是来自于CPU的,将若干个地址连续的内存单元看做是一个

  • 一个程序必须有:代码段,堆栈段,数据段;
  • 程序运行的时候,需要把程序加载到内存中,然后运行代码,并且运行过程中会保存一些数据到内存中
  • 运行的代码放在代码段;程序的一些数据如已初始化并且不为0的全局变量会存放在数据段;堆栈段存放一些堆栈信息,临时变量等。




数据段:将一组内存单元定义为一个数据段;数据段是专门存储数据的内存空间。通常是指用来存放程序中已初始化且不为0的全局变量的一块内存区域。数据段属于静态内存分配。
使用.DATA来表示 ——下面是例子

.DATA
BYT	DB	10
WRD	DW	?
MSG	DB	'HELLO',0DH,0AH, '$'
LF	EQU	0AH




堆栈段:通常是指采用堆栈方式工作的一段内存区域。在采用段式内存管理方式进行程序内存分配的架构中,堆栈段用来存放局部变量和函数返回地址。函数调用,中断返回都需要栈的支持

用法:.STACK大小(size)

例子:

.STACK	100H	;定义堆栈段,大小为100H(256byte)




代码段:通常是指用来存放程序执行代码的一块内存区域。这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读, 某些架构也允许代码段为可写,即允许程序自修改(self-modifying code)。 在代码段中,也有可能包含一些只读的常数变量,例如字符串常量等。
必须包含MAIN

用法:.CODE 名字(name)

最后修改:2022 年 03 月 08 日
如果觉得我的文章对你有用,请随意赞赏