?? masm2.htm
字號:
<html>
<head>
<title>匯編程序的格式</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body bgcolor="#cccccc">
<b>
<p align="center" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font face="黑體" lang="ZH-CN" size=2>第三節</font><font size=2>
</font><font face="黑體" lang="ZH-CN" size=2>匯編程序輸入和輸出文件的格式</font></p>
</b>
<p style="line-height: 150%; margin-top: 0; margin-bottom: 0"> <b><font face="宋體" lang="ZH-CN"><a name="_Toc416236552">
<font size="2">一、源文件</font></a></font><font face="黑體" lang="ZH-CN"><font size="2">
</font></font></b></p><b><font face="黑體" lang="ZH-CN">
<p style="line-height: 150%; margin-top: 0; margin-bottom: 0"></p>
</font></b>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font face="宋體" lang="ZH-CN" size=2>源文件是由文字編緝器編寫的由匯編指令和MASM51偽指令構成的文本文件。源文件一般應以.ASM為擴展名。</font></p>
<ol>
<p style="line-height: 150%; margin-top: 0; margin-bottom: 0"><b><font face="宋體" lang="ZH-CN">
<a name="_Toc416236552"><font size="2">二、源文件的格式</font></a><font size="2">
</font></font></b></p><b><font face="宋體" lang="ZH-CN">
<p style="line-height: 150%; margin-top: 0; margin-bottom: 0"></p>
</font></b>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font face="宋體" lang="ZH-CN" size=2>以回車作為結束的一行稱為語句行。每一語句行長度應少于80個字符(即40個漢字)。每一個語句行對于匯編程序來說都是一條單獨的命令行,它可以是一條匯編語言指令,也可以是一條注釋,或是空白(即什么也不寫),還可以是系統允許的偽指令。所有行必須按照INTEL標準格式書寫即:</font></p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font face="宋體" lang="ZH-CN" size=2>標號:</font><font size=2>
</font><font face="宋體" lang="ZH-CN" size=2>命令</font><font size=2>
</font><font face="宋體" lang="ZH-CN" size=2>參數</font><font size=2>
</font><font face="宋體" lang="ZH-CN" size=2>;注釋</font></p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font face="宋體" lang="ZH-CN" size=2>即一行由四部份組成,各部份的順序不能搞錯,但可以根據需要缺省其中的一部份或幾部份,甚至全部省去,即空白行。標號后面必須有‘:’,而命令語句和參數之間必須用空格分開,如果命令有多個參數,則參數與參數之間必須用‘,’分開,注釋前必須用‘;’,也即‘;’后面的語句將不參與匯編,不生成代碼,所以可以在‘;’引導的后面寫任何字符,包括漢字。</font></p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font face="宋體" lang="ZH-CN" size=2>標號是標志程序中某一行的符號名,標號的數值就是標號所在行代碼的地址。在宏匯編MASM51中標號的長度不受限制,但標號中不能包含‘:’或其它的一些特殊符號,也不以用漢字,可以用數字作標號,但必須用字母開頭。當標號作參數用(如標號作轉移地址),在命令后面出現時,必須舍去‘:’(如</font><font size=2>
</font><font face="Arial" size=2>
LJMP START</font><font face="宋體" lang="ZH-CN" size=2>中的</font><font size=2>
</font><font face="Arial" size=2>
START</font><font face="宋體" lang="ZH-CN" size=2>)。</font></p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font face="宋體" lang="ZH-CN" size=2>每行只能有一個標號,一個標號只能用在一處,如果有兩行用了同一個標號,則匯編時就會出錯。由于標號的長度沒有限制,可以用有意義的英文來說明行,使源程序讀起來更方便。</font></p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font face="宋體" lang="ZH-CN" size=2>命令及參數請參考有關單片機教材,其規定符合INTEL公司的51單片機匯編語言要求。這里必須注意:當采用十六進制數時,如果數值是以</font><font face="Arial" size=2>A,B,C,D,E,F</font><font face="宋體" lang="ZH-CN" size=2>開頭的,則為了區分是數字還是字母,應當在這些數字前加</font><font face="Arial" size=2>'0'</font><font face="宋體" lang="ZH-CN" size=2>,如</font><font face="Arial" size=2>FFH</font><font face="宋體" lang="ZH-CN" size=2>,應當寫成</font><font face="Arial" size=2>0FFH</font><font face="宋體" lang="ZH-CN" size=2>,</font><font face="Arial" size=2>C0H</font><font face="宋體" lang="ZH-CN" size=2>應寫成</font><font face="Arial" size=2>0C0H</font><font face="宋體" lang="ZH-CN" size=2>等。</font></p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font face="宋體" lang="ZH-CN" size=2>注釋用于對程序的說明,它以分號開始,以回車結束。源程序行可以只包含注釋,注釋只是被復制到列表文件中,不產生機器碼。由于匯編程序不直觀,所以在編寫源程序時,應當養成多寫注釋的習慣,這樣有助于源程序的閱讀。否則,時間一長,自編的程序也會搞不清表達的含義。典型的注釋有如下幾種:1.在一行的后面寫,以說明這一行語句的用途;2.在一段子程序的前面寫,以說明這一子程序的用途,由什么程序調用,入口參數,出口值,占用資源等等情況;3.在整個源程序的最前面書寫,以說明本程序的用途,資源的分配等情況。以下是一個例子:</font></p>
<i>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font face="Arial" size=2>;</font><font face="宋體" lang="ZH-CN" size=2>堆棧從</font><font face="Arial" size=2>5FH</font><font face="宋體" lang="ZH-CN" size=2>起</font></p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font face="Arial" size=2>;01H</font><font face="宋體" lang="ZH-CN" size=2>單元</font><font face="Arial" size=2>,</font><font face="宋體" lang="ZH-CN" size=2>用作鍵盤掃描程序判斷是否有鍵按下</font><font face="Arial" size=2>,</font><font face="宋體" lang="ZH-CN" size=2>有為</font><font face="Arial" size=2>'1',</font><font face="宋體" lang="ZH-CN" size=2>無為</font><font face="Arial" size=2>'0'</font></p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font face="Arial" size=2>;38H</font><font face="宋體" lang="ZH-CN" size=2>單元</font><font face="Arial" size=2>,</font><font face="宋體" lang="ZH-CN" size=2>音量大小代碼</font><font face="Arial" size=2>,</font><font face="宋體" lang="ZH-CN" size=2>初始為</font><font face="Arial" size=2>2</font></p>
<font face="Arial" size=2>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> ORG 0000H</p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> LJMP START</p>
</font>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font face="Arial" size=2> ORG 0003H ;</font><font face="宋體" lang="ZH-CN" size=2>外中斷</font><font face="Arial" size=2>0</font><font face="宋體" lang="ZH-CN" size=2>處理程序</font></p>
<font face="Arial" size=2>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> NOP</p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> RET</p>
</font>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font face="Arial" size=2>START: ;</font><font face="宋體" lang="ZH-CN" size=2>初始化程序</font></p>
<font face="Arial" size=2>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> MOV SP,5FH</p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> .</p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> .</p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">;***********************************************</p>
</font>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font face="Arial" size=2>;</font><font face="宋體" lang="ZH-CN" size=2>以上初始化程序</font></p>
<font face="Arial" size=2>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">;***********************************************</p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">MAIN:</p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> LCALL KEY</p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> LJMP MAIN</p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">;**********************************************</p>
</font>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font face="Arial" size=2>;</font><font face="宋體" lang="ZH-CN" size=2>以上主程序</font></p>
<font face="Arial" size=2>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">;*******************************************</p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">;***********************************************</p>
</font>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font face="Arial" size=2>;</font><font face="宋體" lang="ZH-CN" size=2>以下鍵盤程序</font><font face="Arial" size=2>,</font><font face="宋體" lang="ZH-CN" size=2>鍵值從</font><font face="Arial" size=2>0</font><font face="宋體" lang="ZH-CN" size=2>開始</font></p>
<font face="Arial" size=2>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">;***************************************</p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">KEY:</p>
</font>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font face="Arial" size=2> PUSH PSW ;</font><font face="宋體" lang="ZH-CN" size=2>將</font><font face="Arial" size=2>PSW</font><font face="宋體" lang="ZH-CN" size=2>推入堆棧</font></p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font face="Arial" size=2> SETB RS0 ;</font><font face="宋體" lang="ZH-CN" size=2>選第一工作區</font></p>
<font face="Arial" size=2>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> MOV SBUF,#00H</p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">KEY_DISP:</p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> .</p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> .</p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> .</p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> POP PSW</p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> RET</p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">;*********************************************************</p>
</font>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font face="Arial" size=2>;</font><font face="宋體" lang="ZH-CN" size=2>以上鍵盤程序</font></p>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -