<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ASM-51宏匯編應(yīng)用指南

          ASM-51宏匯編應(yīng)用指南

          作者: 時(shí)間:2012-05-12 來源:網(wǎng)絡(luò) 收藏

          2、6 宏處理操作

          本文引用地址:http://www.ex-cimer.com/article/171459.htm

          在源程序中,如果有一段程序需要多次使用,為使程序不重復(fù)書寫這段程序,可用宏定義把所需要重復(fù)出現(xiàn)的程序塊定義成宏指令,此后在宏指令出現(xiàn)的地方,宏程序總是自動(dòng)地把它們替換成相應(yīng)的代碼段。

          (1) 宏指令格式

          [ 宏指令名 ] MACRO [形式參數(shù),。。。]

          代碼段

          ENDM

          在宏定義中,使用了“形式參數(shù)“,它們引用宏指令時(shí)被給出的一些名字或數(shù)值(實(shí)在參數(shù))所替換。使用形式參數(shù)給宏指令帶來了很大的靈活性。

          (2)宏調(diào)用格式

          [ 宏指令名 ] [實(shí)在參數(shù),。。。]

          注意:1、當(dāng)有兩個(gè)以上的實(shí)參數(shù)時(shí),它們之間要用逗號(hào),空格或列表符隔開。
          2、實(shí)參數(shù)項(xiàng)將對(duì)應(yīng)替換宏指令中形式參數(shù)。如果形式參數(shù)為標(biāo)號(hào)時(shí),則在宏調(diào)用中,實(shí)參也應(yīng)為標(biāo)號(hào),且要求實(shí)參是唯一的。如果宏定義中有自己的標(biāo)號(hào),則在宏調(diào)用時(shí),程序自動(dòng)地把標(biāo)號(hào)變成唯一的標(biāo)號(hào)。

          2、7 其他

          (1) 替換名 ALTNAME

          功能: 這一偽指令用來自定義名字,以替換源程序中原來的保留字,替換的保留字均可等效地用于子程序中。

          格式: ALTNAME 保留字 自定義名

          注意: 自定義名與保留字之間首字符必須相同。

          (2) 附加文件的鏈結(jié) INCLUDE

          功能: 利用此偽指令可將一個(gè)源文件插入到當(dāng)前源文件中一起,最終成為一個(gè)完整的源程序。

          格式: INCLUDE [ 驅(qū)動(dòng)器名: ] [ 路徑名 ] 文件名

          注意:1、文件名中若沒有擴(kuò)展名,則系統(tǒng)默認(rèn)是。ASM(該文件必須是能打開的)。

          2、被插入的源程序中不能包含END偽指令,否則匯編會(huì)停止運(yùn)行。被鏈接文件的每一行,在程序清單中以“I“開頭。

          3、鏈接偽指令可有8級(jí)嵌套, 若要求嵌套的多, 則要修改 DOS 中的

          CONFIG。SYS文件的FILES參數(shù)。

          3 宏匯編運(yùn)行

          3、1 系統(tǒng)運(yùn)行環(huán)境

          宏匯編要在IBM-PC及其兼容機(jī)上運(yùn)行(至少128K字節(jié)的RAM);具有一個(gè)軟驅(qū)動(dòng)器或硬驅(qū)動(dòng)器,采用ANSI標(biāo)準(zhǔn)終端(包括鍵盤,顯示控制器,打印機(jī),至少一個(gè)RS-232異步通訊接口)。軟件有PC-DOS,MS-DOS 2。0 以上版本,ASM_51系統(tǒng)。

          3、2 宏匯編程序的運(yùn)行

          以 8051 宏匯編為例,在DOS系統(tǒng)的提示符下鍵入

          A> ASM51 文件名。ASM CR>

          等錯(cuò)誤的個(gè)數(shù)出現(xiàn)后 ,鍵入 CR> 變返回到DOS提示符下。8051的宏匯編與此相似。

          4 匯編的使用

          使用宏匯編是將8051源程序匯編生成列表輸出文件和目標(biāo)代碼文件,供模擬/調(diào)試時(shí)使用。我們使用的宏匯編完全采用Inter標(biāo)準(zhǔn)助記符和行格式,因此在編寫源程序時(shí),可以使用宏匯編中的偽指令, 以增加源程序的運(yùn)行速度和可讀性。也可以直接用 Inter 標(biāo)準(zhǔn)助記符來編寫源程序。再經(jīng)過宏匯編進(jìn)行匯編,便可得到列表輸出文件和目標(biāo)代碼文件。

          匯編的格式如下:

          > ASM51 文件名。ASM [ 可選項(xiàng) ]

          其中可選項(xiàng)為: /L, /H, /S, /P, /N

          /L 表示源程序匯編后不生成列表冊(cè)輸出文件(.LST),只顯示在屏幕上。

          /H 表示源程序匯編后不生成目標(biāo)代碼文件(.HEX)。

          /S 表示源程序匯編后不生成符號(hào)表。

          /P 表示源程序匯編后生成符號(hào)表。

          /N 表示源程序匯編后,程序是連續(xù)的顯示。

          如果沒有選擇項(xiàng),則表示產(chǎn)生列表輸出文件和目標(biāo)代碼文件,且在LST文件后面列出符號(hào)表。 生成的目標(biāo)代碼便可以進(jìn)行模擬/調(diào)試,如果在模擬/調(diào)試中發(fā)現(xiàn)錯(cuò)誤,則源程序要經(jīng)過修改,重新匯編,然后再進(jìn)行模擬/調(diào)試,直到完全正確。

          若程序匯編過程中有錯(cuò)誤,則給出出錯(cuò)信息(出錯(cuò)信息見附錄)。 生成的目標(biāo)代碼可以進(jìn)行模擬/調(diào)試/燒寫。

          附錄 ASM-51 匯編出錯(cuò)信息表

          1 Address Out of Range 一個(gè)被計(jì)值的目標(biāo)地址超出了當(dāng)前語(yǔ)句的范圍。

          2 Badly Formed Argument 數(shù)字規(guī)定的類型中有非法數(shù)字存在。

          3 Illefal Equale 有不允許的類型約定。

          4 Label Name Conflicts With Symbol Name 在程序中有兩個(gè)符號(hào)相同。

          5 Label Address Changed On Pass 2。 源程序在此錯(cuò)誤之前,還有一些錯(cuò)誤。

          6 Missing Argument in Expression 表達(dá)式中算術(shù)運(yùn)算符后面沒有操作數(shù)。

          7 Missing END Statrment 匯編的源程序結(jié)尾未發(fā)現(xiàn)END語(yǔ)句。

          8 Multiply Defined Label 源程序中定義了兩個(gè)標(biāo)號(hào)。

          9 Unbalanced Parentheses 表達(dá)式中多余或缺少括號(hào)。

          10 Undefined Symbol 語(yǔ)句中的符號(hào)名可能拼錯(cuò)或未被定義。

          11 Unrecognized Statemen or Undefined Argument 未定義參數(shù)的指令或代碼。

          12 Value Out of Range 有一個(gè)非法的值來說明一個(gè)有著可能值限制的語(yǔ)句。


          上一頁(yè) 1 2 3 下一頁(yè)

          關(guān)鍵詞: 指南 應(yīng)用 匯編 ASM-51

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();