?? masm1.htm
字號:
<html>
<head>
<title>宏匯編軟件的使用</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body bgcolor="#cccccc">
<div align="center">
<p style="line-height: 150%; margin-top: 0; margin-bottom: 0"><b>
<font face="宋體" lang="ZH-CN" size=2>宏匯編軟件</font><font face="宋體" size=2>MASM51</font><font face="宋體" lang="ZH-CN" size=2>的使用</font></b></div>
<ol>
<ol>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<div align="center">
<p style="line-height: 150%; margin-top: 0; margin-bottom: 0"><b>
<font face="宋體" lang="ZH-CN" size=2>第一</font></b><font size="2" face="宋體">
</font> <b><font face="宋體" lang="ZH-CN" size=2>節</font><font size=2 face="宋體">
</font><font face="宋體" lang="ZH-CN" size=2>概</font><font size=2 face="宋體">
</font><font face="宋體" lang="ZH-CN" size=2>述 </font> </b> </div>
<p style="line-height: 150%; margin-top: 0; margin-bottom: 0"></p>
</ol>
<ol>
</ol>
<ol>
<font face="宋體" lang="ZH-CN" size=4>
<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="宋體" lang="ZH-CN" size=2>單片機開發可以用手工匯編和機器匯編兩種方法。采用手工匯編就是先編寫出匯編程序,然后對照單片機匯編表手工將匯編程序翻譯成機器碼,最后將機器碼一個一個地送入開發仿真器的RAM中去進行調試。</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>而采用機器匯編,在很大程度上可以避免上述麻煩。只要通過鍵盤輸入源程序后,其余作工作都由計算機來進行,即查出相應的機器碼,對地址進行定位,建立能被開發裝置接收的機器碼文件、建立能打印出清單的列表文件等等。機器碼不需要再一個一個地從仿真器的鍵盤上鍵入,只要從PC機的通訊口直接傳送到開發裝置中去。因此使用機器匯編大大提高了單片機開發的速度。</font></p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font face="宋體" lang="ZH-CN" size=2>源程序被輸入到機器中后,以一個文件的形式保存起來,然后就可以對這個文件進行處理了,要對這個文件進行匯編,必須有相應的匯編程序。在PC機上進行匯編的程序有多種,以下介紹的MASM51軟件就是其中的一種,它的主要特點有:</font></p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font face="宋體" lang="ZH-CN" size=2>1.對用戶編寫的源程序格式要求不太嚴格,例如,英文字母的大、小寫不受限制,變量名或標號名沒有長度限制,對源程序中的空格數也沒有嚴格的要求等等。這些給用戶編寫程序帶來很大的方便。</font></p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font face="宋體" lang="ZH-CN" size=2>2.具有較強的功能,例如支持宏語句,使同一程序中類似的程序結構,只要輸入一次,在使用時可用宏語句調用。此外還允許用條件匯編語句以及完善的偽指令系統等。減少了編寫、輸入源程序的工作量。</font></p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font face="宋體" lang="ZH-CN" size=2>3.不管用戶的源程序有多少錯誤,它都能全部匯編完,并能形成列表文件及目標文件,以供用戶修改錯誤。</font></p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font face="宋體" lang="ZH-CN" size=2>4.可以接收漢字注釋,并能完整的將漢字注釋復制到列表文件,而其它一些匯編軟件則不能處理漢字,或會使列表文件中的漢字注釋混亂。</font></p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font face="宋體" lang="ZH-CN" size=2>運行MASM51軟件的條件很低,現在的PC機都能達到。</font></p>
<font face="宋體" lang="ZH-CN" size=3>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
</font>
<div align="center">
<p style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font face="宋體" lang="ZH-CN" size=2>第二節</font><font size=2 face="宋體">
</font><font face="宋體" lang="ZH-CN" size=2>如何啟動MASM51宏匯編程序</font><b><font face="宋體" lang="ZH-CN" size=2>
</font></b></div>
<b><font face="黑體" lang="ZH-CN" size=4>
<p style="line-height: 150%; margin-top: 0; margin-bottom: 0"></p>
</font></b>
<ol>
<b>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> <font face="宋體" lang="ZH-CN">
<font size="2">一、啟動和退出 </font>
<p style="line-height: 150%; margin-top: 0; margin-bottom: 0"></p>
</font></b><font face="宋體" lang="ZH-CN" size=3>
<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="宋體" lang="ZH-CN" size=2>MASM51軟件有兩個文件:MASM51.EXE和MASM51.OVL,只要將這兩個文件拷入硬盤的一個目錄中(如MASM51)中,然后在DOS命令行中打入:</font></p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font face="宋體" lang="ZH-CN" size=2>MASM51(回車)</font></p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font face="宋體" lang="ZH-CN" size=2>即在顯示器上顯示如下信息:</font></p>
<font face="宋體" size=2>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> The Cybernetic Micro Systems</p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> CYS-8051 Software Package</p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> Version 3.03`</p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> for the IBM Personal Computer</p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> (C)Copy right Cybrenetic MIcro Systems,Inc 1983,1984,1985,</p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> 1986</p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">High Level Language Commands</p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> ASM51[file] P8751 file P8744 file//</p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> P27XX file COMP[file] READ[kbytes] DISP[start,num]</p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> INITIALIZE CLEAR LIST EXIT</p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> RUN[file] GOTO Label STOP CONT</p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> DIR[spec] TYPE file DOS cmd HELP</p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> PRINT arglist EQU = WARBLE</p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> DELAY[secs] CLS HLSEARCH flag BEEP</p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> OFFSET pc[,loc] PROM type SECURE SAVE file[,start,num]</p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"> LOAD file EDBYTE pc PVOLT value PSETUP num,value</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="宋體" lang="ZH-CN" size=2>信息的出現說明已進入MASM51宏匯編程序,在屏幕下方出現的符號‘〉’是宏匯編程序提示符,它的出現告訴用戶,宏匯編程序處于接收命令狀態。</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>ASM51</font><font size=2 face="宋體">
</font><font face="宋體" lang="ZH-CN" size=2>盤號:文件名</font><font size=2 face="宋體">
</font><font face="宋體" lang="ZH-CN" size=2>〈回車〉</font><font size=2 face="宋體">
</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>DIR</font><font size=2 face="宋體">
</font><font face="宋體" lang="ZH-CN" size=2>盤號:文件名</font><font size=2 face="宋體">
</font><font face="宋體" lang="ZH-CN" size=2>〈回車〉</font><font size=2 face="宋體">
</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>EXIT</font><font size=2 face="宋體">
</font><font face="宋體" lang="ZH-CN" size=2>〈回車〉</font><font size=2 face="宋體">
</font><font face="宋體" lang="ZH-CN" size=2>退出宏匯編</font></p>
<b><font face="宋體" lang="ZH-CN">
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<li></li>
<p style="line-height: 150%; margin-top: 0; margin-bottom: 0"> </p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<li>
<p style="line-height: 150%; margin-top: 0; margin-bottom: 0"><a name="_Toc416236549">
<font size="2">二、進行匯編</font></a></li> <p></p>
<p style="line-height: 150%; margin-top: 0; margin-bottom: 0"></p>
</font></b>
</ol>
<font face="宋體" lang="ZH-CN" size=3>
<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="宋體" lang="ZH-CN" size=2>用戶在使用宏匯編程序之前,應該已使用編緝器(如EDIT、CCED等)編好了8051匯編語言的源程序,并已作為一個文件存盤,該文件一般以.ASM為擴展名。</font></p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font face="宋體" lang="ZH-CN" size=2>進入MASM51后,鍵入</font></p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font face="宋體" size=2> ASM51 [d:filename[.asm] [</font><font face="宋體" lang="ZH-CN" size=2>選項</font><font face="宋體" 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><font face="宋體" size=2>.asm</font><font face="宋體" lang="ZH-CN" size=2>,如果不以</font><font face="宋體" size=2>.asm</font><font face="宋體" lang="ZH-CN" size=2>為擴展名,則應鍵入文件的全名。匯編后,將產生兩個輸出文件:一個是16進制代碼文件,以</font><font face="宋體" size=2>.hex</font><font face="宋體" lang="ZH-CN" size=2>為擴展名,另一個是列表文件,以</font><font face="宋體" size=2>.lst</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>1.</font><font face="宋體" size=2>/L</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>2.</font><font face="宋體" size=2>/H</font><font face="宋體" lang="ZH-CN" size=2>選項:匯編后不在磁盤上產生</font><font face="宋體" size=2>.hex</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>3.</font><font face="宋體" size=2>/S</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>4.</font><font face="宋體" size=2>/P</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>5.</font><font face="宋體" size=2>/N</font><font face="宋體" lang="ZH-CN" size=2>選項:使生成的列表文件在打印(或顯示)時不分頁。不加</font><font face="宋體" size=2>'/N'</font><font face="宋體" lang="ZH-CN" size=2>則每隔55行源代碼生成一個新頁頭。</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>如下面所示:</font></p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<font face="宋體" size=2> ASM51 Filename[.asm] [</font><font face="宋體" lang="ZH-CN" size=2>回車</font><font face="宋體" 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>下面列出DEMO51.ASM的源文件,及用MASM51匯編后產生的代碼文件和列表文件,以供參考。</font></p>
<i><font face="宋體" size=2>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">T0_flag bit 0</p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">T1_flag bit 1</p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">INIT_Timer0 equ 0FE80H</p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">INIT_Timer1 equ 0FD00H</p>
</font><font face="Arial" size=3>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"></p>
</font><font face="宋體" size=2>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">X0_vector equ 0003H</p>
<p align="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">X1_vector equ 0013H</p>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -