⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 page48.html

📁 李春生的汇编书籍
💻 HTML
字号:
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=gb2312">
<title>第4章 奇妙的声音</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="page47.html">上一页</a> <a href="page49.html">下一页</a> <a href="page80.html">下一章</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>-48-</td><td></td> <!页码>
<td colspan=6>PC机汇编语言实战精解</td><td colspan=4></td><td colspan=6 align="right"><img src="icons/flag.gif"></td> <!书名>
<td></td><td></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></td><td></td>
<td colspan=2>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
MAIN<br>
CODE<br>
<br>
</td>

<td colspan=2>
OR<br>
OUT<br>
MOV<br>
INT<br>
POP<br>
OUT<br>
RET<br>
<i><u>ENDP</u></i><br>
<i><u>ENDS</u></i><br>
<i><u>END</u></i>
</td>
</td>
<td colspan=4>
AL,3<br>
61H,AL<br>
AH,1<br>
21H<br>
AX<br>
61H,AL<br>
<br>
<br>
<br>
MAIN
</td>
<td colspan=7>
;将61H端口的低2位改为1<br>
;打开定时器及与门<br>
;选择DOS API的01号功能<br>
;调用21H中断等待键盘输入<br>
;取回61H端口的原状态<br>
;关闭定时器及与门<br>
<br>
;主过程结束<br>
;代码段结束<br>
;进程结束
</td>
</tr>

<tr>
<td></td><td></td> <!左边距>
<td colspan=18>
  这个程序看上去很眼熟吧,它就是PROG6的源程序形式,不过和PROG6相比,它有点面目全非了。我们先来讨论一个简单的问题:源程序中的数。<br>
  采用DEBUG编程时所用的数都是16进制的,如果需要使用其它进制的数,程序员就必须自己将其转换为16进制。而编制汇编源程序则没有这个烦琐的问题,我们可以在源程序中使用任意进制的数,只需在数的末尾给出进制标识即可。
</td>
<td></td><td></td> <!右边距>
</tr>

<tr>
<td></td><td></td> <!左边距>
<td colspan=3 align="center"><img src="icons/attention.gif"></td>
<td colspan=15><font face="楷体_GB2312">
除了前面讲过十六进制数末尾加"H"之外,汇编语言还规定二进制数末尾要加"B"(Binary),八进制数加"O"(Octal),十进制数加"D"(Decimal)。不过有两点需要注意的地方:<br>
① 若一个数末尾不加任何标识,则编译程序默认这个数为十进制;<br>
② 以A-F打头的十六进制数前要补"0"。1111B、15、15D、17O、0FH表示的是同一个数。
</font></td>
<td></td><td></td> <!右边距>
</tr>

<tr>
<td></td><td></td> <!左边距>
<td colspan=18>
  在PROG7.ASM中,幻数用二进制数10110110B表示,端口地址都用了十六进制数,而系统功能都用了十进制数。编译程序将自动处理这些不同进制的数据。<br>
  在程序头部的尾部还新增了不少"伪操作",伪操作的概念在第三章中已讨论过,它虽然和指令写在一起,但它并不是写给CPU的,而是写给编译系统的。当应用DEBUG编程时这些伪操作要由DEBUG完成,现在要使用真正的汇编语言编译系统,伪操作自然要由编译程序完成。我们先来讨论程序的第一行和倒数第二行:
</td>
<td></td><td></td> <!右边距>
</tr>

<tr>
<td></td><td></td> <!左边距>
<td></td><td colspan=2><hr></td>
<td colspan=4><font size=5>CODE SEGMENT</td>
<td colspan=11><hr></td>
<td></td><td></td> <!右边距>
</tr>

<tr>
<td></td><td></td> <!左边距>
<td colspan=18><font face="楷体_GB2312">
  "SEGMENT"是"段定义"伪操作,它表示一个段的开始。其中"CODE"是这个段的名字,表示这个段的段地址。名字可以是除了汇编语言保留字之外的任何字符串,但要注意打头的字母不能是数字。
</font></td>
<td></td><td></td> <!右边距>
</tr>

<tr>
<td></td><td></td> <!左边距>
<td colspan=18><hr></td>
<td></td><td></td> <!右边距>
</tr>

<tr>
<td></td><td></td> <!左边距>
<td colspan=18>
  为什么要定义段?以前应用DEBUG编制程序时我们并未考虑分段的问题,所有的数据和指令都在一个段内,这就有这样一个问题,一个段长度只有64K,也就是说用DEBUG编制的程序长度不能超过64K,再明确一点,凡是".COM"类的可执行文件都不能大于64K。这个限制使".COM"类文件的应用范围受到制约。<br>
  如何突破64K的限制?可以设想只要把代码、数据和堆栈分别放入不同的段内,甚至把代码中的各个子程序(模块)也分散到不同的段内,这样就可以使程序超出64K,这就是".EXE"文件的结构。因此在编制源程序的时候就需要定义不同的段。
</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 &copy; 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="page47.html">上一页</a> <a href="page49.html">下一页</a> <a href="page80.html">下一章</a></p>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -