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

          新聞中心

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

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

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

          主要用來開發(fā)Inter8051系列單片機,它具有宏處理,數(shù)據(jù)處理,列表處理和條件處理等多種功能。源程序的編寫完全采用 Inter標準助記符和行格式。在編寫程序過程中,可借助于文本編輯(Windows的記事本)或文字處理軟件Word等編輯, 經(jīng)后生成列表輸出文件(.LST)和目標代碼文件(.HEX)。 此目標代碼文件(.HEX)可直接用CZS-51或MedWin、Keil、Debug8051進行模擬/調(diào)試,或直接用于硬件仿真器上運行。當然,這也是要燒寫到單片機ROM中的代碼。

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

          1、 宏語言的基本語法

          1、1 宏匯編的特點

          宏匯編完全支持Inter助記符的匯編語言,它含有宏語句,英文大小寫字母,變量名,標號等不受限制,有二,十,十六進制和串參數(shù)類型,有匯編控制指令和多層條件語句,程序邏輯分段, 還有模塊化程序設(shè)計的連接功能,匯編速度快等特點。

          1、2 匯編處理過程

          (1) 用行編輯EDLIN或文字處理軟件WS或全屏幕編輯軟件PE等,編輯宏匯編

          語言源程序,它的文件擴展名為。ASM。

          (2) 用ASM-51宏匯編程序?qū)ι鲜鲈闯绦蛭募M行匯編,產(chǎn)生擴展名為.LST的列表輸出文件和擴展名為.HEX的目標代碼文件(.HEX)。 列表輸出文件包含源程序語句所匯編成的代碼,以及有關(guān)的地址,語句和符號表等。 目標代碼文件包含源程序語句所匯編成的代碼, 不包含任何符號信息或助記符。 進行模擬/調(diào)試,或直接用于硬件仿真器上運行。

          1、3 語句

          匯編語言可分為兩類語句:指令性語句和指示性語句。

          (1)指令性語句

          這一類語句是指在匯編過程中能生成指令代碼的語句(如 MOV ,DEC等)。其格式為:

          [標號:] [指令助記符] [操作數(shù)] [;注釋]

          其中方括號[ ]中為選擇項。下同。

          (2)指示性語句

          這一類語句即通常所說的偽指令,它指示匯編程序后面的指示性語句如何產(chǎn)生代碼。

          ASM-51宏匯編完全支持Inter助記符的匯編語言,因此匯編程序的格式,指令完全與8051匯編語言一樣,這里不再介紹它們的指令系統(tǒng)。

          1、4 常量與數(shù)值運算

          (1) 常量及其表示

          常量,就是在匯編時已經(jīng)確定的值。 在匯編語言中,常量主要用作指令性語句中的直接操作數(shù),也可用于存儲器操作的組成部分(如位移量),或者為偽指令中的變量輸初值。

          為便于程序設(shè)計,常量有多種表示形式:二、十、十六進制數(shù)和字符串等,它們的格式各不相同,并采用不同的基數(shù)標記加以區(qū)分。表--1列出其格式。

          表--1

          數(shù)據(jù)形式 格 式 取值范圍 例 如 備 注

          2進制 ********B 0,1 10011100B

          10進制 ****** 0,1,2...9 45723 缺省基數(shù)標記

          16進制 ****H 0,1...E,F(xiàn) 0CDE3H 最前面一個字符應(yīng)是0--9

          ASCII '**' ASCII 'AD' 只有DB命令中使用

          常量以數(shù)值形式直接寫在匯編語言的語句中稱為字面常量, 若預(yù)先為它定義一個符號名,然后在語句中用符號名來表示該常量稱符號常量。使用符號常量的優(yōu)點可改善程序的可讀性,它的定義需要使用偽操作命令EQU或“=“。

          (2) 數(shù)值運算

          宏匯編中,所有參數(shù)值均被認為是整數(shù),并以16位的形式存放,表示的范圍是0---65535,所有算術(shù)操作均對整數(shù)以補碼形式運算。

          (1) 基本運算

          匯編語言對常量允許進行算術(shù)運算,邏輯運算,分離運算等三種類型的運算。如表--2所示。

          表--2 基本運算

          運 算 操 作 含 義 以ADD為例

          算 + 加操作 ADD A,R1+36

          - 減操作 ADD A,R1-2EH

          * 乘操作 ADD A,R1*0E3H

          術(shù) / 除操作 ADD A,R1/23

          MOD 模除 ADD A,R1 MOD 12

          SHR 右移 ADD A,R1 SHR 3

          SHL 左移 ADD A,R1 SHL 2

          邏 AND 與操作 ADD A,R1 AND 10000101B

          OR 或操作 ADD A,R1 OR 00110000B

          XOR 異或操作 ADD A,R1 XOR 36H

          輯 NOT 非操作 ADD A, NOT 45H

          分 HIGH 高字節(jié)分離 ADD A, HIGH 05E2H

          離 LOW 低字節(jié)分離 ADD A, LOW 77F0H

          說明: R1為符號常量。

          (2) 綜合運算

          綜合運算規(guī)則 1: 計算表達式時,所有的運算全部從左到右順序進行,遇到操作數(shù)就進行運算,不考慮優(yōu)先關(guān)系,括號有助于視覺理解,但不改變表達式的?計算順序。

          例如: R1 SET NOT(0C5FH OR 000CH)

          其結(jié)果應(yīng)為 0F3ACH。

          綜合運算規(guī)則 2: 當兩個操作數(shù)之間沒有參數(shù)相隔時, 第二個操作符優(yōu)先于第一個操作符計算。

          例如: R1 SET NOT 10011010B

          其結(jié)果應(yīng)為 65H。

          1、5 程序分段

          8051系列的處理器的結(jié)構(gòu), 把內(nèi)存分成五個獨立的內(nèi)存段, 即代碼段(段名CSEG),數(shù)據(jù)段(段名DSEG), 外部段(段名XSEG), 功能段(段名FSEG)和位段(段名BSEG)等。 各個段在源程序中的次序可以任意,段的數(shù)目可以根據(jù)需要確定,原則上不受限制。程序中的所有段都必須用段名開頭,段結(jié)束語句ENDS結(jié)束。

          1、6 源文件

          源文件是由匯編語言代碼和匯編程序指令組成的 ASCII 字符文件, 擴展名為。ASM。源文件的每一語句行,最多有四個域。每一行的長度不超過80個字符, 且以“回車“鍵結(jié)束。

          1、7 列表輸出文件和目標代碼文件

          (1) 目標代碼文件(.HEX)

          目標代碼文件(.HEX)是ASCII文件,它只包含由各種程序語句所生成的代碼,而不包含任何信息或助記符。 該文件是能夠在處理器上運行的實際機器指令碼。

          目標代碼文件格式如下:

          :cc aaaa tt dd aa dd ss CR>

          計數(shù)器 數(shù)據(jù)類型 記錄地址 回車

          記錄地址 代碼的字節(jié) 和校驗

          目標代碼文件(.HEX)的每一行以一個冒號開始, 后面跟著的數(shù)字和符號分別表示十六進制數(shù)據(jù)的計數(shù)器(cc),記錄第一個數(shù)據(jù)字節(jié)的16位地址(aaaa),目標記錄的數(shù)據(jù)類型(tt),代碼的實際字節(jié)(dd),計數(shù)器從第一個數(shù)據(jù)字節(jié)到最后的所有字節(jié)值累加和的相反數(shù)即和校驗(ss)等等。

          (2)列表輸出文件(.LST)

          列表輸出文件也是個ASCII文件,它由源程序和目標代碼文件組成, 可作為程序文檔也可被打印。

          列表輸出文件是分頁顯示,打印的,其長度由缺省值或偽指令$PAGE決定。 每頁一開始指出匯編程序的類型,版本以及頁號等。

          2、 偽操作指令

          匯編語言中的指示性語句(偽指令),不象指令性語句會產(chǎn)生目標代碼, 它主要是用來“控制指揮“匯編程序如何把指令性語句翻譯成目標代碼。除本身偽指令申請分配一部分存貯空間作數(shù)據(jù)區(qū)和堆棧區(qū)外,不產(chǎn)生任何目標代碼。

          按照它們的功能,大致分成七類: 符號定義偽操作,段定義偽操作,數(shù)據(jù)定義偽操作,列表偽操作,條件偽操作,宏處理偽操作以及其它操作等。如表--3所示。

          表--3 偽操作指令

          序號 分 類 偽 操 作 指 令

          1 符號定義偽操作 EQU,=,DATA,BYTE,WORD,BIT,SET

          2 段定義偽操作 ORG,END,CSEG,DSEG,XSEG,F(xiàn)SEG,ENDS

          3 數(shù)據(jù)定義偽操作 DB,DW,DS

          4 列表偽操作 $TITLE,$SUBTTL,$PAGE,$LIST,$NOLIST,$NOCODE

          5 條件偽操作 IF,ELSE,ENDIF

          6 宏處理偽操作 MACRO,ENDM

          7 其 它 ALTNAME,INCLUDE


          上一頁 1 2 3 下一頁

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

          評論


          相關(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); })();