📄 page311.html
字号:
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=gb2312">
<title>第11章 更高级的技术</title>
</head>
<body>
<style type="text/css">
body {
background-color: #c0c0c0;
}
table {
background-color: #c0c0c0;
line-height: 24px;
}
</style>
<!导航条>
<p><a href="content1.html">目录</a> <a href="page310.html">上一页</a> <a href="page312.html">下一页</a> <a href="page328.html">附录A</a></p>
<table border=0 align="center" width=800 frame="box" rules="none">
<!标尺行>
<tr>
<td width=3%></td><td width=6%></td><td width=1%></td> <!左侧空白>
<td width=5%></td><td width=5%></td><td width=5%></td><td width=5%></td><td width=5%></td><td width=5%></td><td width=5%></td><td width=5%></td>
<td width=5%></td><td width=5%></td><td width=5%></td><td width=5%></td><td width=5%></td><td width=5%></td><td width=5%></td><td width=5%></td>
<td width=1%></td><td width=6%></td><td width=3%></td> <!右侧空白>
</tr>
<!页眉行>
<tr height=60 valign="bottom">
<td></td><td></td><td></td>
<td colspan=6><img src="icons/flag.gif"></td><td colspan=4></td><td colspan=6 align="right">第11章 更高级的技术</td> <!章节名>
<td></td><td>-311-</td><td></td> <!页码>
</tr>
<!页眉线>
<tr valign="top">
<td></td><td colspan=20><hr></td><td></td>
</tr>
<!正文>
<font face="宋体" lang="ZH-CN" size=3>
<tr height=20><td colspan=22></td></tr> <!顶部空白>
<tr>
<td></td><td></td> <!左边距>
<td colspan=2>
<br>
<br>
<br>
outseg<br>
code<br>
<br>
;****<br>
<br>
<br>
</td>
<td colspan=2>
pop<br>
pop<br>
ret<br>
endp<br>
ends<br>
<br>
第三个插<br>
<br>
end
</td>
<td colspan=5>
bx<br>
ax<br>
<br>
<br>
<br>
<br>
入点******<br>
<br>
main
</td>
<td colspan=9>
<br>
<br>
;返回主过程<br>
<br>
<br>
<br>
<br>
<br>
<br>
</td>
<td></td><td></td> <!右边距>
</tr>
<tr>
<td></td><td></td> <!左边距>
<td colspan=18>
程序中保留了一些"插入点",用于增加代码。如果就这样直接运行这个程序,那么会得到一个十分令人迷惑不解的结果:这个程序显示一行错误信息--"Not enought memory(没有足够的内存)"。难道内存真的不够吗?
</td>
<td></td><td></td> <!右边距>
</tr>
<tr>
<td></td><td></td> <!左边距>
<td colspan=18 align=center><img src="figures/F11_5.gif"></td>
<td></td><td></td> <!右边距>
</tr>
<tr>
<td></td><td></td> <!左边距>
<td colspan=18>
自由内存有618960个字节,600多KB内存竟然会不够,真让人摸不着头脑。<br>
确实,600多KB的自由内存不应该不够,即使没有600多KB也不至于连10KB都没有。难道我们编写的程序有什么问题?<br>
程序其实并没有任何问题,问题出在DOS身上,因为它太"懒惰"。大家都知道用户程序的长度是不确定的,长的有几百KB,短的可能只有几个BYTE。按理说DOS再调入一个程序时应该先确定这个程序的长度,按程序实际长度给它安排内存,但是DOS并没有这样做。无论程序有多长,它都是一咕脑地把所有自由内存都分给这个程序。所以虽然系统具有几百KB的自由内存,可当程序"GETMEM.EXE"调入内存运行时这几百KB的自由内存都成了它的"私有财产",所以当它再次申请内存时DOS已经没有内存可分了。<br>
因此我们说,一个应用程序在申请内存之前首先需要按自己的实际长度把DOS给它的内存重新划分一下,自己占了多少内存就保留多少,自己不占用的内存就要"无私"地"捐献"出来,这样才能向DOS申请内存,所谓"索取"之前先要"奉献"。<br>
好在DOS提供了一个专用于重新分配内存的功能:
</td>
<td></td><td></td> <!右边距>
</tr>
<tr>
<td></td><td></td> <!左边距>
<td colspan=3 align="center"></td>
<td colspan=15>
功能号:4AH<br>
用 途:重新划分内存<br>
</td>
<td></td><td></td> <!右边距>
</tr>
</font>
<!页脚线>
<tr valign="top">
<td></td><td colspan=20><hr></td><td></td>
</tr>
<!页脚>
<tr height=60 valign="top">
<td></td><td></td>
<td colspan=9><i>Copyright © 2004-2005 <a href="mailto:webmaster@nucstorm.com">Chunk Lee</a></i></td>
<td colspan=9 align="right"><i><a href="http://www.nucstorm.com" target="_top">www.nucstorm.com</a></i></td>
<td></td><td></td>
</tr>
</table>
<!导航条>
<p align="right"><a href="content1.html">目录</a> <a href="page310.html">上一页</a> <a href="page312.html">下一页</a> <a href="page328.html">附录A</a></p>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -