小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

A51匯編器的解釋

 牧童小仙 2010-09-18

A51匯編器的解釋one--看了后悔找我

分享
分類: C51和A51學(xué)習(xí) 2006-05-04 20:53

A51匯編器是運(yùn)行于IBM PC系列及其兼容機(jī)上的交叉匯編軟件,其主要功能是將MCS-51系列單片機(jī)匯編語言源程序翻譯成符合Intel目標(biāo)文件格式的可再定位的目標(biāo)代碼,經(jīng)過L51連接器的連接和裝配,產(chǎn)生可被DS51仿真器調(diào)試或其它任何一種與Intel 目標(biāo)文件格式兼容的仿真器使用的絕對(duì)目標(biāo)代碼.

 

 

:A51的符號(hào):A51中可使用符號(hào)表示數(shù)值(EQU),地址和寄存器名,符號(hào)具有段類型,作用域,值域和可變性等屬性.

 

 

符號(hào)的段屬性:指出符號(hào)所位于的地址空間.段類型有:

 

 

NUMBER        無類型符號(hào)

 

 

DATA          DATA段符號(hào)(可直接尋址的內(nèi)部RAM空間)

 

 

IDATA         IDATA段符號(hào)(可間接尋址的內(nèi)部RAM空間)

 

 

XDATA         XDATA段符號(hào)(外部數(shù)據(jù)存儲(chǔ)空間)

 

 

BIT           BIT段符號(hào)(內(nèi)部RAM低地址區(qū)的可位尋址的空間)

 

 

CODE          CODE段符號(hào)(程序存儲(chǔ)器空間)

 

 

REGISTER      寄存器符號(hào)

 

 

作用域:指出符號(hào)是外部的,局部的還是全局的.(PUBLIC,EXTRN關(guān)鍵字說明)

 

 

:標(biāo)號(hào):定義標(biāo)號(hào)時(shí),標(biāo)號(hào)名后必須接冒號(hào):,以示區(qū)別,每行只能定義一個(gè)標(biāo)號(hào),標(biāo)號(hào)一經(jīng)定義,其值為當(dāng)前地址計(jì)數(shù)器的當(dāng)前值,因此標(biāo)號(hào)代表了指令和數(shù)據(jù)的地址,不能重復(fù)定義.

 

 

:特殊的匯編符號(hào):A51宏匯編語言定義了代表CPU寄存器的特殊符號(hào),這些是保留的關(guān)鍵字,AR0---AR7:表示當(dāng)前工作寄存器的R0R7的絕對(duì)地址,它的值取決于指令所選擇的工作寄存器組.

 

 

:運(yùn)算符:有三種1):算術(shù)運(yùn)算符包括:+,-(正負(fù)號(hào)),---+,,,,MOD(取模),()—括號(hào),改變運(yùn)算順序.2):二進(jìn)制運(yùn)算符號(hào):用來對(duì)二進(jìn)制數(shù)進(jìn)行按位取反,移位或邏輯運(yùn)算.包括:NOT(按位取反),HIGH(取右邊操作數(shù)的高8,LOW(取右邊操作數(shù)的低8)SHR(右移位),SHL(左移位),AND(邏輯與),OR(邏輯或),XOR(邏輯異或).3):關(guān)系運(yùn)算符:>=,<=,<>,=,<,>.

 

 

所有運(yùn)算符的優(yōu)先級(jí)順序:()àNOT,HIGH,LOWà+,-(正負(fù)號(hào))à*,/,MODà+,-(加減)àSHR,SHLàAND,OR,XORà>=,<=,<>,>,<,=.

 

 

數(shù)值表達(dá)式:數(shù)值表達(dá)式由運(yùn)算符和操作數(shù)組成,一個(gè)操作數(shù)又可以是表達(dá)式,與符號(hào)具有段屬性一樣,表達(dá)式也具有段類型屬性,表達(dá)式的類型依賴于操作數(shù)的類型.表達(dá)式的類型如下:BIT,NUMBER,CODE,DATA,IDATA,XDATA.大多數(shù)的表達(dá)式是無類型的,當(dāng)表達(dá)式中包含有段類型的操作數(shù)或者是子表達(dá)式時(shí),運(yùn)算結(jié)果的段類型遵循下面的原則:

 

 

對(duì)于單目運(yùn)算符:(+/-/HIGH/LOW/NOT)表達(dá)式的結(jié)果與操作數(shù)具有相同的類型.

 

 

對(duì)于所有的雙目運(yùn)算符(+/-),表達(dá)式的結(jié)果均為無類型的結(jié)果.

 

 

對(duì)加減運(yùn)算,只有當(dāng)其中的一個(gè)操作數(shù)具有段類型的時(shí)候,運(yùn)算結(jié)果才具有相同的段類型,如果兩個(gè)操作數(shù)具有段類型,即使他們的段類型一樣,結(jié)果也是無類型的(NUMBER).

 

 

總結(jié):只有當(dāng)操作數(shù)加上或者是減去一個(gè)無類型時(shí),才可能產(chǎn)生一類型,其他所有的組合均產(chǎn)生無類型的表達(dá)式.

 

 

 

 

A51提供了偽指令,可以利用這些偽指令在匯編程序中定義符號(hào),保留和初始化存儲(chǔ)空間,定位目標(biāo)代碼等功能,偽指令中除DB,DW外均不產(chǎn)生目標(biāo)代碼,但可以改變匯編器的狀態(tài),并將有關(guān)信息(如段定義)加到目標(biāo)文件中.

 

 

偽指令分四類:

 

 

1):定義符號(hào):SEGMENT,EQU,SET,DATA,IDATA,XDATA,BIT,CODE

 

 

2):保留和初始化存儲(chǔ)空間:DS,DB,DW,DBIT

 

 

3):程序鏈接:PUBLIC,EXTRN,NAME

 

 

4):匯編狀態(tài)控制和段選擇

 

 

:ORG,END,RSEG,CSEG,DSEG,XSEG,ISEG,BSEG,USING

 

 

一 :定義符號(hào)的偽指令

 

 

1SEGMENT

 

 

   格式:  段名符號(hào)  SEGMENT   段類型  [再定位類型]

 

 

SEGMENT指令可聲明一個(gè)可再定位(區(qū)別于CSEG,DSEG,XSEG,BSEG,ISEG等 定義的在相對(duì)應(yīng)的空間固定地址定義的絕對(duì)段—在連接的過程中不允許重新定位)的段符號(hào)和一個(gè)可選的再定位類型,段符號(hào)可以用來定義段,L51連接器可將多個(gè)模塊內(nèi)的具有相同段名和再定位類型的幾個(gè)段合成為一個(gè)段.段類型說明了段所處的地址空間.

 

 

如果是編寫的匯編程序要與C源程序接口,即被C源程序調(diào)用,則全部的匯編子程序所命名的定義的代碼段的段名必須是可用SEGMENT來定義的,而且名字的命名的方法也應(yīng)該參照C51編譯器產(chǎn)生的局部段的段名的轉(zhuǎn)換規(guī)則.段名的作用主要是在匯編的時(shí)候用RSEG來激活的,在連接定位的時(shí)候用到的.與段名相應(yīng)的是用于存儲(chǔ)和傳遞參數(shù)的別名,可以在匯編源程序中直接應(yīng)用局部段的別名,這個(gè)別名主要是在傳遞函數(shù)參數(shù)的時(shí)候用的.在匯編程序中要用PUBLIC 聲明被其他模塊引用的全局符號(hào).

 

 

DATA           (可直接尋址的內(nèi)部RAM空間)

 

 

IDATA          (可間接尋址的內(nèi)部RAM空間)

 

 

XDATA         (外部數(shù)據(jù)存儲(chǔ)空間)

 

 

BIT            (內(nèi)部RAM低地址區(qū)的可位尋址的空間)

 

 

CODE          (程序存儲(chǔ)器空間)

 

 

可選的再定位類型定義了L51連接時(shí)的定位方式,再定位類型:

 

 

UNIT:定義一個(gè)可開始于任一單元的段對(duì)于BIT型的段,一個(gè)單元是一個(gè)位,

 

 

其它所有的段一個(gè)單元是一個(gè)字節(jié).

 

 

PAGE:定義一個(gè)起始地址必須是256的整數(shù)倍的段,段的絕對(duì)地址由L51自己計(jì)算,該類型只允許用于XDATACODE類型段.

 

 

INPAGE:定義一個(gè)由L51連接后必須包含在256B的塊中,只適用于XDATACODE.

 

 

INBLOCK:定義一個(gè)L51連接后必須包含在2KB中的段,只適用于CODE.

 

 

OVERLAYABLE:定義一個(gè)可與其他段交疊的覆蓋段,其段名符號(hào)必須按C51或者PL/M51的規(guī)則命名.C51把局部數(shù)據(jù)段和局部位段定義成DT?FUNCTIONNAME?MODULENAMEBI?FUNCTIONNAME?MODULENAME這是在small模式下.其他的模式略有不同。

 

 

BITADDRESSABLE:定義一個(gè)L51連接后位于可位尋址的區(qū),段長不能超過16B.

 

 

2)       EQU

 

 

  格式:  符號(hào)名 EQU 表達(dá)式

 

 

        符號(hào)名 EQU  寄存器名

 

 

EQU偽指令定義一表示數(shù)值或寄存器的符號(hào),該符號(hào)可用于表達(dá)式或助記符指令的操作數(shù),EQU指令定義的符號(hào)不能被改變或重新定義,其段類型取決于表達(dá)式中的操作數(shù)類型類型,無類型的EQU符號(hào)可用于任何表達(dá)式中.

 

 

   LIMIT  EQU  200

 

 

   VALUE  EQU  LIMIT-100+A

 

 

   COUNTER EQU  R5

 

 

3)       SET

 

 

  格式: 符號(hào)名 SET 表達(dá)式

 

 

       符號(hào)名 SET 寄存器名

 

 

SET指令的功能與EQU指令的功能一樣,區(qū)別是SET指令定義的符號(hào)可以再定義和改變.

 

 

VALUE    EQU  200

 

 

VALUE    SET   VALUE/2

 

 

COUNTER  SET  R1

 

 

TEMP     SET  COUNTER/2

 

 

4)       BIT

 

 

  格式:  符號(hào)名 BIT 表達(dá)式

 

 

BIT指令定義一表示位地址的符號(hào),該符號(hào)一經(jīng)定義便不能重新定義和改變.

 

 

DATA_BSEG SEGMENT  BIT

 

 

    RSEG  DATA_BSEG

 

 

    CTRL  DS  1

 

 

    FLAG  BIT  CTRL.1

 

 

    FLAG2  BIT  FLAG+1

 

 

5)       DATA 

 

 

   格式:   符號(hào)名 DATA  表達(dá)式

 

 

    DATA指令定義一表示MCS-51內(nèi)部數(shù)據(jù)存儲(chǔ)器字節(jié)地址的符號(hào),表達(dá)式必須是一個(gè)絕對(duì)地址值或者是一個(gè)簡(jiǎn)單的再定位表達(dá)式(即數(shù)值確定的,且其值必須在0255之間,類型必須是DATA或者是NUMBER類型)

 

 

例如在匯編程序中:

 

 

   PORT   DATA  90H

 

 

   RESULT_L  DATA  40H

 

 

   RESULT_H  DATA  RESULT_L+1

 

 

6) XDATA,IDATA,CODE 均是也和DATA一樣,都是定義一個(gè)代表相應(yīng)存儲(chǔ)空間單元的地址符號(hào),表達(dá)式也必須是相對(duì)應(yīng)的類型或者是NUMBER類型。

 

 

二 初始化和保留指令

 

 

1)DS

 

 

格式:  [標(biāo)號(hào):] DS 表達(dá)式

 

 

DS指令以字節(jié)為單位,在內(nèi)部或者外部地址空間中保留存儲(chǔ)空間,表達(dá)式中不能包含前向地址參考量,可為除BIT段的任何類型。該偽指令語句使當(dāng)前地址計(jì)數(shù)器加上表達(dá)式的值,需要注意的是地址計(jì)數(shù)器加上表達(dá)式結(jié)果的值不能超出地址空間的范圍。(無論是匯編器還是編譯器,對(duì)每一種不同類型的地址空間(DATA,CODE,PDATA,XDATA,BIT)都產(chǎn)生一個(gè)獨(dú)立的地址計(jì)數(shù)器,每匯編一條指令,計(jì)數(shù)器都會(huì)自動(dòng)增加,不過可以用ORG偽指令改變當(dāng)前段地址計(jì)數(shù)器,用ORG偽指令表達(dá)式的值作為當(dāng)前段地址計(jì)數(shù)器的初值,而當(dāng)前段的改變可以用RSEG偽指令來改變。

 

 

RSEG ?DT?FUNCTION?MODULENAE----聲明當(dāng)前段為局部數(shù)據(jù)段

 

 

FUNCTION?BYTE:-------------函數(shù)局部段的別名

 

 

TIME:  DS  5

 

 

2) DBIT

 

 

   格式  [標(biāo)號(hào):]  DBIT  表達(dá)式

 

 

以位為單位在可位尋址段內(nèi)保留存儲(chǔ)空間, 表達(dá)式中不能包含前向地址參考量或者是再定位的符號(hào)和外部符號(hào),該指令使當(dāng)前地址計(jì)數(shù)器增加表達(dá)式結(jié)果值,其增加量以位為單位.

 

 

3) DB DW

 

 

   格式:  [標(biāo)號(hào)]:  DB/DW  表達(dá)式1[,表達(dá)式2,………]

 

 

這兩個(gè)指令的作用相同,均是以字節(jié)或者是字初始化程序存儲(chǔ)空間,上面是保留存儲(chǔ)空間,存儲(chǔ)空間可以使RAMROM,而這兩個(gè)指令直接就是初始化程序存儲(chǔ)空間.

 

 

Table: DB  “any key to continue!”

 

 

Requst: DB  LOW(Table),HIGH(Table)

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多