实际上我想制作一个很长的代码,但是我在代码末尾的一些子程序上遇到了一些麻烦,比如我所拥有的空间还不够,所以我发现像在.data等会话中破坏我的代码。 stack .model small等所以在这些会话中破坏我的代码会给我一个解决方案吗?链接器如何翻译这些会话以便可以处理长代码? 存在什么样的模型类型? 我正在使用8088,所以如果你知道我可以在Windows中使用的任何16位编辑器,编译器,调试器,我会很感激。感谢名单
答案 0 :(得分:0)
嗯,你问了很多问题,但我想主要的问题是在编译和链接汇编代码时内存模型是如何工作的。实际上,我没有8088处理器的经验,但我猜它与8086没什么不同,因为它必须在real mode中工作。
好的,当你编写汇编代码时,你要选择你的程序所在的内存模型。它已经完成了.model
指令(AFAIR,TASM和MASM都使用它)。
该指令可以具有以下参数:TINY,SMALL,MEDIUM,COMACT,LARGE和HUGE。它们中的每一个都定义了程序的内存模型。 TINY内存模型意味着您的代码和数据将成为一个细分市场。其他型号允许您声明代码和数据分开。或者甚至声明一些包含代码的段(如果它们超过64KB限制)。这是一个首发。
现在,尽管如此,我们需要注意的是,不同的内存模型会改变我们处理数据的方式。如果选择TINY内存模型,则代码和数据位于同一段中。但在SMALL模型中他们不是。因此,访问DATA段的所有ASM指令都应具有适当的段寄存器集(DS)。