ASM51宏匯編使用手冊(cè)_第1頁(yè)
ASM51宏匯編使用手冊(cè)_第2頁(yè)
ASM51宏匯編使用手冊(cè)_第3頁(yè)
ASM51宏匯編使用手冊(cè)_第4頁(yè)
ASM51宏匯編使用手冊(cè)_第5頁(yè)
已閱讀5頁(yè),還剩32頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

ASM51宏匯編使用手冊(cè)2007-01-2110:33

ASM-51

宏匯編使用手冊(cè)

ASM-51

宏匯編主要用來(lái)開(kāi)發(fā)Inter8051系列單片機(jī),它具有宏處理,數(shù)據(jù)處理,列表處理和條件處理等多種功能。源程序的編寫(xiě)完全采用

Inter標(biāo)準(zhǔn)助記符和行格式。在編寫(xiě)程序過(guò)程中,可借助于文本編輯(Windows的記事本)或文字處理軟件Word等編輯,

經(jīng)ASM-51匯編后生成列表輸出文件(.LST和目標(biāo)代碼文件(.HEX。

此目標(biāo)代碼文件(.HEX可直接用CZS-51或MedWin、Keil、Debug8051進(jìn)行模擬/調(diào)試,或直接用于硬件仿真器上運(yùn)行。當(dāng)然,這也是要燒寫(xiě)到單片機(jī)ROM中的代碼。

1、

宏匯編語(yǔ)言的基本語(yǔ)法

1、1

宏匯編的特點(diǎn)

ASM-51宏匯編完全支持Inter助記符的匯編語(yǔ)言,它含有宏語(yǔ)句,英文大小寫(xiě)字母,變量名,標(biāo)號(hào)等不受限制,有二,十,十六進(jìn)制和串參數(shù)類(lèi)型,有匯編控制指令和多層條件語(yǔ)句,程序邏輯分段,

還有模塊化程序設(shè)計(jì)的連接功能,匯編速度快等特點(diǎn)。

1、2

匯編處理過(guò)程

(1

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

語(yǔ)言源程序,它的文件擴(kuò)展名為。ASM。

(2

用ASM-51宏匯編程序?qū)ι鲜鲈闯绦蛭募M(jìn)行匯編,產(chǎn)生擴(kuò)展名為.LST的列表輸出文件和擴(kuò)展名為.HEX的目標(biāo)代碼文件(.HEX。

列表輸出文件包含源程序語(yǔ)句所匯編成的代碼,以及有關(guān)的地址,語(yǔ)句和符號(hào)表等。

目標(biāo)代碼文件包含源程序語(yǔ)句所匯編成的代碼,

不包含任何符號(hào)信息或助記符。

進(jìn)行模擬/調(diào)試,或直接用于硬件仿真器上運(yùn)行。

1、3

語(yǔ)句

匯編語(yǔ)言可分為兩類(lèi)語(yǔ)句:指令性語(yǔ)句和指示性語(yǔ)句。

(1指令性語(yǔ)句

這一類(lèi)語(yǔ)句是指在匯編過(guò)程中能生成指令代碼的語(yǔ)句(如

MOV

,DEC等。其格式為:

[標(biāo)號(hào):]

[指令助記符]

[操作數(shù)]

[;注釋]

其中方括號(hào)[

]中為選擇項(xiàng)。下同。

(2指示性語(yǔ)句

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

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

1、4

常量與數(shù)值運(yùn)算

(1

常量及其表示

常量,就是在匯編時(shí)已經(jīng)確定的值。

在匯編語(yǔ)言中,常量主要用作指令性語(yǔ)句中的直接操作數(shù),也可用于存儲(chǔ)器操作的組成部分(如位移量,或者為偽指令中的變量輸初值。

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

表--1

數(shù)據(jù)形式

取值范圍

2進(jìn)制

********B

0,1

10011100B

10進(jìn)制

******

0,1,2...9

45723

缺省基數(shù)標(biāo)記

16進(jìn)制

****H

0,1...E,F(xiàn)

0CDE3H

最前面一個(gè)字符應(yīng)是0--9

ASCII

'**'

ASCII

'AD'

只有DB命令中使用

常量以數(shù)值形式直接寫(xiě)在匯編語(yǔ)言的語(yǔ)句中稱(chēng)為字面常量,

若預(yù)先為它定義一個(gè)符號(hào)名,然后在語(yǔ)句中用符號(hào)名來(lái)表示該常量稱(chēng)符號(hào)常量。使用符號(hào)常量的優(yōu)點(diǎn)可改善程序的可讀性,它的定義需要使用偽操作命令"EQU"或“=“。

(2

數(shù)值運(yùn)算

宏匯編中,所有參數(shù)值均被認(rèn)為是整數(shù),并以16位的形式存放,表示的范圍是065535,所有算術(shù)操作均對(duì)整數(shù)以補(bǔ)碼形式運(yùn)算。

(1

基本運(yùn)算

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

表--2

基本運(yùn)算

運(yùn)

以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

說(shuō)明:

R1為符號(hào)常量(即內(nèi)存地址)。

(2

綜合運(yùn)算

綜合運(yùn)算規(guī)則

1:

計(jì)算表達(dá)式時(shí),所有的運(yùn)算全部從左到右順序進(jìn)行,遇到操作數(shù)就進(jìn)行運(yùn)算,不考慮優(yōu)先關(guān)系,括號(hào)有助于視覺(jué)理解,但不改變表達(dá)式的?計(jì)算順序。

例如:

R1

SET

NOT(0C5FH

OR

000CH

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

0F3ACH。

綜合運(yùn)算規(guī)則

2:

當(dāng)兩個(gè)操作數(shù)之間沒(méi)有參數(shù)相隔時(shí),

第二個(gè)操作符優(yōu)先于第一個(gè)操作符計(jì)算。

例如:

R1

SET

NOT

10011010B

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

65H。

1、5

程序分段

8051系列的處理器的結(jié)構(gòu),

把內(nèi)存分成五個(gè)獨(dú)立的內(nèi)存段,

即代碼段(段名CSEG,數(shù)據(jù)段(段名DSEG,

外部段(段名XSEG,

功能段(段名FSEG和位段(段名BSEG等。

各個(gè)段在源程序中的次序可以任意,段的數(shù)目可以根據(jù)需要確定,原則上不受限制。程序中的所有段都必須用段名開(kāi)頭,段結(jié)束語(yǔ)句ENDS結(jié)束。

1、6

源文件

源文件是由匯編語(yǔ)言代碼和匯編程序指令組成的

ASCII

字符文件,

擴(kuò)展名為。ASM。源文件的每一語(yǔ)句行,最多有四個(gè)域。每一行的長(zhǎng)度不超過(guò)80個(gè)字符,

且以“回車(chē)“鍵結(jié)束。

1、7

列表輸出文件和目標(biāo)代碼文件

(1

目標(biāo)代碼文件(.HEX

目標(biāo)代碼文件(.HEX是ASCII文件,它只包含由各種程序語(yǔ)句所生成的代碼,而不包含任何信息或助記符。

該文件是能夠在處理器上運(yùn)行的實(shí)際機(jī)器指令碼。

目標(biāo)代碼文件格式如下:

:cc

aaaa

tt

dd

aa

dd

ss

計(jì)數(shù)器

數(shù)據(jù)類(lèi)型

記錄地址

回車(chē)

記錄地址

代碼的字節(jié)

和校驗(yàn)

目標(biāo)代碼文件(.HEX的每一行以一個(gè)冒號(hào)開(kāi)始,

后面跟著的數(shù)字和符號(hào)分別表示十六進(jìn)制數(shù)據(jù)的計(jì)數(shù)器(cc,記錄第一個(gè)數(shù)據(jù)字節(jié)的16位地址(aaaa,目標(biāo)記錄的數(shù)據(jù)類(lèi)型(tt,代碼的實(shí)際字節(jié)(dd,計(jì)數(shù)器從第一個(gè)數(shù)據(jù)字節(jié)到最后的所有字節(jié)值累加和的相反數(shù)即和校驗(yàn)(ss等等。

(2列表輸出文件(.LST

列表輸出文件也是個(gè)ASCII文件,它由源程序和目標(biāo)代碼文件組成,

可作為程序文檔也可被打印。

列表輸出文件是分頁(yè)顯示,打印的,其長(zhǎng)度由缺省值或偽指令$PAGE決定。

每頁(yè)一開(kāi)始指出匯編程序的類(lèi)型,版本以及頁(yè)號(hào)等。

2、

偽操作指令

匯編語(yǔ)言中的指示性語(yǔ)句(偽指令,不象指令性語(yǔ)句會(huì)產(chǎn)生目標(biāo)代碼,

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

按照它們的功能,大致分成七類(lèi):

符號(hào)定義偽操作,段定義偽操作,數(shù)據(jù)定義崐偽操作,列表偽操作,條件偽操作,宏處理偽操作以及其它操作等。如表--3所示。

表--3

偽操作指令

序號(hào)

類(lèi)

1

符號(hào)定義偽操作

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

2、1

符號(hào)定義偽操作

符號(hào)定義偽操作及其格式:

符號(hào)名

符號(hào)定義名

常量或表達(dá)式

其中符號(hào)定義名可以為EQU,=,DATA,BYTE,WORD,BIT,SET等。下面就是這些符

號(hào)定義偽操作的用法及說(shuō)明。如表--4所示。

表--4

符號(hào)定義偽操作

符號(hào)定義名

說(shuō)

EQU

為常量,符號(hào)名等定義符號(hào)化常量名

符號(hào)名不能重名定義

=

為常量,符號(hào)名等定義符號(hào)化常量名

符號(hào)名不能重名定義

DATA

用來(lái)為一個(gè)字節(jié)類(lèi)型的符號(hào)定值

符號(hào)名不能重名定義

BYTE

用來(lái)為一個(gè)字節(jié)類(lèi)型的符號(hào)定值

符號(hào)名不能重名定義

WORD

用來(lái)為一個(gè)字類(lèi)型的符號(hào)定值

符號(hào)名不能重名定義

8051中沒(méi)有字操作

BIT

用來(lái)定義一個(gè)字位類(lèi)型

SET

用來(lái)定義整數(shù)類(lèi)型的符號(hào)名

符號(hào)名可重名定義

DATA與BYTE的區(qū)別:

DATA與BYTE是相類(lèi)似的偽指令。

當(dāng)程序運(yùn)行到DATA偽指令定義的符號(hào)名時(shí),該符號(hào)名將被顯示;而由BYTE定義的符號(hào)名不被顯示。

2、2

段定義偽操作

(1

ORG

用于設(shè)置或改變程序計(jì)數(shù)器的值。

其格式為:

ORG

常數(shù)或表達(dá)式

例如:

ORG

0008H

ORG

$+5

其中$表示程序計(jì)數(shù)器的當(dāng)前值。

(2

END

表示源代碼結(jié)束。

其格式為:

END

常數(shù)或表達(dá)式

匯編程序遇到END語(yǔ)句即停止運(yùn)行。

若程序中沒(méi)有END,則在匯編源程序時(shí)顯出錯(cuò)

(3

8051系列的處理器把內(nèi)存結(jié)構(gòu)分成五個(gè)段,代碼段CSEG,數(shù)據(jù)段DSEG,外部段XSEG,功能段FSEG和位段BSEG等,其用法及區(qū)別如

表--5所示。

在匯編以上各段所定義的符號(hào)時(shí),系統(tǒng)根據(jù)符號(hào)所在不同段,賦與不同類(lèi)型的字母,如表--6所示。

2、3

數(shù)據(jù)定義偽操作

數(shù)據(jù)定義偽操作格式:

[

標(biāo)號(hào):

]

數(shù)據(jù)定義名

[

表達(dá)式1,表達(dá)式2,。。。

]

其中數(shù)據(jù)定義名可為DB,DW,DS等。

如表--7所示,數(shù)據(jù)定義偽操作的含義及說(shuō)明。

表--5

段定義偽操作

區(qū)

代碼段(CSEG

包含由處理器所執(zhí)行的程序。段名可缺省。有目標(biāo)代碼生成。

數(shù)據(jù)段(DESG

由內(nèi)部工作寄存器的處理器的RAM組成。用來(lái)對(duì)程序使用的數(shù)據(jù)地址賦符號(hào)名,大多以O(shè)RG,DATA,BYTE,WORD,EDNS等組成。

無(wú)目標(biāo)碼生成。

外部段(XSEG

由外部工作寄存區(qū)和RAM組成。使用方法同數(shù)據(jù)段。無(wú)目標(biāo)碼生成。

功能段(FSEG

由特殊寄存器位置組成(如:輸入/輸出部件,計(jì)時(shí)器,中斷控制和連續(xù)的寄存器部件接口等。無(wú)目標(biāo)代碼生成。

段(BSEG

由一些獨(dú)立的位組成,可以用布爾函數(shù)實(shí)現(xiàn)。

該段地址被解釋為位地址。無(wú)目標(biāo)代碼生成。

表--6

程序分段的類(lèi)型符號(hào)

標(biāo)號(hào)(Label

字節(jié)型操作數(shù)(Byte

字型操作數(shù)(Word

代碼段CSEG

數(shù)據(jù)段DSEG

外部段XSEG

功能段FSEG

段BSEG

說(shuō)明:

(1在不同的段中類(lèi)型符號(hào)不同;

(2字節(jié)型操作數(shù)(Byte一般通過(guò)DATA指令賦給符號(hào);

字型操作數(shù)

一般通過(guò)WORD指令賦給符號(hào);

(3如果各段中用BYTE賦值,則在各段中符號(hào)全以S表示;在SIM51模

擬/調(diào)試中的符號(hào)區(qū)顯示功能中,對(duì)BYTE賦值的將被跳過(guò)。

(4在各段中,位類(lèi)型可以用BIT指令賦給。

表--7

數(shù)據(jù)定義偽操作

數(shù)據(jù)定義名

說(shuō)

DB

用于定義一個(gè)字節(jié)包含的值

表達(dá)式不是字符串時(shí),每個(gè)表達(dá)式賦給一個(gè)字節(jié),是字符串時(shí),用單引號(hào)

'

作為分隔符。

DW

用于定義一個(gè)字(16位

每個(gè)表達(dá)式占16位。

如果表達(dá)式中的存貯內(nèi)容為字符串,只取最后兩個(gè)字符。若字符串只有一個(gè)字符,高字節(jié)置“0“。

DS

定義一個(gè)存貯區(qū)

通常用在代碼段中,作為程序的一部分。若用在數(shù)據(jù)段,外部段,則作為位置標(biāo)志使用。

表--8

列表偽操作

偽指令

含義及格式

說(shuō)

$TITLE

給源程序指定一個(gè)標(biāo)題

標(biāo)題不加

“,其最大長(zhǎng)度

格式:

$TITLE

[標(biāo)題行]

60個(gè)字符。若標(biāo)題行省略,

原來(lái)定義的標(biāo)題行作廢。

$SUBTTL

給源程序指定一個(gè)副標(biāo)題

副標(biāo)題不加

“,其最大長(zhǎng)

格式:

$SUBTTL

[副標(biāo)題行]

度60字符。若副標(biāo)題行省略,原來(lái)定義的副標(biāo)題行作廢。

$PAGE

用于形成或定義新的一頁(yè)或行數(shù)

匯編時(shí)頁(yè)長(zhǎng)為66行(適合于格式:

$PAGE

[表達(dá)式]

標(biāo)準(zhǔn)打印紙。表達(dá)式最大為65535,最小為12,

表達(dá)式缺省,則從新的一頁(yè)開(kāi)始。

$LIST

使源程序匯編時(shí),產(chǎn)生程序清單

匯編時(shí)無(wú)此指令照樣產(chǎn)生清單。

格式:

$LIST

$NOLIST

使源程序匯編時(shí)不產(chǎn)生程序清單

格式:

$NOLIST

$NOCODE

源程序匯編時(shí),條件匯編程序值

沒(méi)有此指令匯編時(shí),不論其值是為假的不產(chǎn)生清單。真、假的條件都不產(chǎn)生目標(biāo)碼。

格式:

$NOCODE

2、4

列表偽操作

如表--8所示,列表偽操作的含義,格式及說(shuō)明。

2、5

條件偽操作

條件偽操作格式:

IF

表達(dá)式

[

程序塊1

]

[

ELSE

]

[

程序塊2

]

ENDIF

當(dāng)IF指令中的表達(dá)式為真時(shí),被匯編的代碼段是程序塊1;當(dāng)IF指令中的表達(dá)式為假時(shí),被匯編的代碼段是程序塊2。

在一個(gè)條件結(jié)構(gòu)中,僅有一個(gè)代碼段被匯編,其它的則被忽略。

2、6

宏處理操作

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

(1

宏指令格式

[

宏指令名

]

MACRO

[形式參數(shù),。。。]

代碼段

ENDM

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

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

[

宏指令名

]

[實(shí)在參數(shù),。。。]

注意:1、當(dāng)有兩個(gè)以上的實(shí)參數(shù)時(shí),它們之間要用逗號(hào),空格或列表符隔開(kāi)。

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

功能:

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

格式:

ALTNAME

保留字

自定義名

注意:

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

(2

附加文件的鏈結(jié)

INCLUDE

功能:

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

格式:

INCLUDE

[

驅(qū)動(dòng)器名:

]

[

路徑名

]

文件名

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

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

3、鏈接偽指令可有8級(jí)嵌套,

若要求嵌套的多,

則要修改

DOS

中的

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

3

宏匯編運(yùn)行

3、1

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

ASM-51宏匯編要在IBM-PC及其兼容機(jī)上運(yùn)行(至少128K字節(jié)的RAM;具有一個(gè)軟驅(qū)動(dòng)器或硬驅(qū)動(dòng)器,采用ANSI標(biāo)準(zhǔn)終端(包括鍵盤(pá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

等錯(cuò)誤的個(gè)數(shù)出現(xiàn)后

,鍵入

變返回到DOS提示符下。8051的宏匯編與此相似。

4

匯編的使用

使用ASM-51宏匯編是將8051源程序匯編生成列表輸出文件和目標(biāo)代碼文件,供模擬/調(diào)試時(shí)使用。我們使用的宏匯編完全采用Inter標(biāo)準(zhǔn)助記符和行格式,因此在編寫(xiě)源程序時(shí),可以使用宏匯編中的偽指令,

以增加源程序的運(yùn)行速度和可讀性。也可以直接用

Inter

標(biāo)準(zhǔn)助記符來(lái)編寫(xiě)源程序。再經(jīng)過(guò)ASM-51宏匯編進(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ù)的顯示。

如果沒(méi)有選擇項(xiàng),則表示產(chǎn)生列表輸出文件和目標(biāo)代碼文件,且在LST文件后面列出符號(hào)表。

生成的目標(biāo)代碼便可以進(jìn)行模擬/調(diào)試,如果在模擬/調(diào)試中發(fā)現(xiàn)錯(cuò)誤,則源程序要經(jīng)過(guò)修改,重新匯編,然后再進(jìn)行模擬/調(diào)試,直到完全正確。

若程序匯編過(guò)程中有錯(cuò)誤,則給出出錯(cuò)信息(出錯(cuò)信息見(jiàn)附錄。

生成的目標(biāo)代碼可以進(jìn)行模擬/調(diào)試/燒寫(xiě)。

附錄

ASM-51

匯編出錯(cuò)信息表

1

Address

Out

of

Range

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

2

Badly

Formed

Argument

數(shù)字規(guī)定的類(lèi)型中有非法數(shù)字存在。

3

Illefal

Equale

有不允許的類(lèi)型約定。

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)算符后面沒(méi)有操作數(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

&#118alue

Out

of

Range

有一個(gè)非法的值來(lái)說(shuō)明一個(gè)有著可能值限制的語(yǔ)句。

MCS-51匯編語(yǔ)言指令集2007年04月29日星期日下午03:30MCS-51匯編語(yǔ)言指令集

符號(hào)定義表

符號(hào)

含義

Rn

R0~R7寄存器n=0~7

Direct

直接地址,內(nèi)部數(shù)據(jù)區(qū)的地址RAM(00H~7FH

SFR(80H~FFHB,ACC,PSW,IP,P3,IE,P2,SCON,P1,TCON,P0

@Ri

間接地址Ri=R0或R1

8051/31RAM地址(00H~7FH

8052/32RAM地址(00H~FFH

#data

8位常數(shù)

#data16

16位常數(shù)

Addr16

16位的目標(biāo)地址

Addr11

11位的目標(biāo)地址

Rel

相關(guān)地址

bit

內(nèi)部數(shù)據(jù)RAM(20H~2FH,特殊功能寄存器的直接地址的位

2

指令介紹

指令

字節(jié)

周期

動(dòng)作說(shuō)明

算數(shù)運(yùn)算指令

1.ADDA,Rn

1

1

將累加器與寄存器的內(nèi)容相加,結(jié)果存回累加器

2.ADDA,direct

2

1

將累加器與直接地址的內(nèi)容相加,結(jié)果存回累加器

3.ADDA,@Ri

1

1

將累加器與間接地址的內(nèi)容相加,結(jié)果存回累加器

4.ADDA,#data

2

1

將累加器與常數(shù)相加,結(jié)果存回累加器

5.ADDCA,Rn

1

1

將累加器與寄存器的內(nèi)容及進(jìn)位C相加,結(jié)果存回累加器

6.ADDCA,direct

2

1

將累加器與直接地址的內(nèi)容及進(jìn)位C相加,結(jié)果存回累加器

7.ADDCA,@Ri

1

1

將累加器與間接地址的內(nèi)容及進(jìn)位C相加,結(jié)果存回累加器

8.ADDCA,#data

2

1

將累加器與常數(shù)及進(jìn)位C相加,結(jié)果存回累加器

9.SUBBA,Rn

1

1

將累加器的值減去寄存器的值減借位C,結(jié)果存回累加器

10.SUBBA,direct

2

1

將累加器的值減直接地址的值減借位C,結(jié)果存回累加器

11.SUBBA,@Ri

1

1

將累加器的值減間接地址的值減借位C,結(jié)果存回累加器

12.SUBBA,0data

2

1

將累加器的值減常數(shù)值減借位C,結(jié)果存回累加器

13.INCA

1

1

將累加器的值加1

14.INCRn

1

1

將寄存器的值加l

15.INCdirect

2

1

將直接地址的內(nèi)容加1

16.INC@Ri

1

1

將間接地址的內(nèi)容加1

17.INCDPTR

1

1

數(shù)據(jù)指針寄存器值加1

說(shuō)明:將16位的DPTR加1,當(dāng)DPTR的低字節(jié)(DPL從FFH溢出至00H時(shí),會(huì)使高字節(jié)(DPH加1,不影響任何標(biāo)志位

18.DECA

1

1

將累加器的值減1

19.DECRn

1

1

將寄存器的值減1

20.DECdirect

2

1

將直接地址的內(nèi)容減1

21.DEC@Ri

1

1

將間接地址的內(nèi)容減1

22.MULAB

1

4

將累加器的值與B寄存器的值相乘,乘積的低位字節(jié)存回累加器,高位字節(jié)存回B寄存器

說(shuō)明:將累加器A和寄存器B內(nèi)的無(wú)符號(hào)整數(shù)相乘,產(chǎn)生16位的積,低位字節(jié)存入A,高位字節(jié)存入B寄存器。如果積大于FFH,則溢出標(biāo)志位(OV被設(shè)定為1,而進(jìn)位標(biāo)志位為0

23.DIVAB

1

4

將累加器的值除以B寄存器的值,結(jié)果的商存回累加器,余數(shù)存回B寄存器

說(shuō)明:無(wú)符號(hào)的除法運(yùn)算,將累加器A除以B寄存器的值,商存入A,余數(shù)存入B。執(zhí)行本指令后,進(jìn)位位(C及溢出位(OV被清除為0

24.DAA

1

1

將累加器A作十進(jìn)制調(diào)整,

若(A3-0>9或(AC=1,則(A3-0←(A3-0+6

若(A7-4>9或(C=1,則(A7-4←(A7-4+6

邏輯運(yùn)算指令

25.ANLA,Rn

1

1

將累加器的值與寄存器的值做AND的邏輯判斷,結(jié)果存回累加器

26.ANLA,direct

2

1

將累加器的值與直接地址的內(nèi)容做AND的邏輯判斷,結(jié)果存回累加器

27.ANLA,@Ri

1

1

將累加器的值與間接地址的內(nèi)容做AND的邏輯判斷,結(jié)果存回累加器

28.ANLA,#data

2

1

將累加器的值與常數(shù)做AND的邏輯判斷,結(jié)果存回累加器

29.ANLdirect,A

2

1

將直接地址的內(nèi)容與累加器的值做AND的邏輯判斷,結(jié)果存回該直接地址

30.ANLdirect,#data

3

2

將直接地址的內(nèi)容與常數(shù)值做AND的邏輯判斷,結(jié)果存回該直接地址

31.ORLA,Rn

1

1

將累加器的值與寄存器的值做OR的邏輯判斷,結(jié)果存回累加器

32.ORLA,direct

2

1

將累加器的值與直接地址的內(nèi)容做OR的邏輯判斷,結(jié)果存回累加器

33.ORLA,@Ri

1

1

將累加器的值與間接地址的內(nèi)容做OR的邏輯判斷,結(jié)果存回累加器

34.ORLA,#data

2

1

將累加器的值與常數(shù)做OR的邏輯判斷,結(jié)果存回累加器

35.ORLdirect,A

2

1

將直接地址的內(nèi)容與累加器的值做OR的邏輯判斷,結(jié)果存回該直接地址

36.ORLdirect,#data

3

2

將直接地址的內(nèi)容與常數(shù)值做OR的邏輯判斷,結(jié)果存回該直接地址

37.XRLA,Rn

1

1

將累加器的值與寄存器的值做XOR的邏輯判斷,結(jié)果存回累加器

38.XRLA,direct

2

1

將累加器的值與直接地址的內(nèi)容做XOR的邏輯判斷,結(jié)果存回累加器

39.XRLA,@Ri

1

1

將累加器的值與間接地扯的內(nèi)容做XOR的邏輯判斷,結(jié)果存回累加器

40.XRLA,#data

2

1

將累加器的值與常數(shù)作XOR的邏輯判斷,結(jié)果存回累加器

41.XRLdirect,A

2

1

將直接地址的內(nèi)容與累加器的值做XOR的邏輯判斷,結(jié)果存回該直接地址

42.XRLdirect,#data

3

2

將直接地址的內(nèi)容與常數(shù)的值做XOR的邏輯判斷,結(jié)果存回該直接地址

43.CLRA

1

1

清除累加器的值為0

44.CPLA

1

1

將累加器的值反相

45.RLA

1

1

將累加器的值左移一位

46.RLCA

1

1

將累加器含進(jìn)位C左移一位

47.RRA

1

1

將累加器的值右移一位

48.RRCA

1

1

將累加器含進(jìn)位C右移一位

49.SWAPA

1

1

將累加器的高4位與低4位的內(nèi)容交換。(A3-0←(A7-4

數(shù)據(jù)轉(zhuǎn)移指令

50.MOVA,Rn

1

1

將寄存器的內(nèi)容載入累加器

51.MOVA,direct

2

1

將直接地址的內(nèi)容載入累加器

52.MOVA,@Ri

1

1

將間接地址的內(nèi)容載入累加器

53.MOVA,#data

2

1

將常數(shù)載入累加器

54.MOVRn,A

1

1

將累加器的內(nèi)容載入寄存器

55.MOVRn,direct

2

2

將直接地址的內(nèi)容載入寄存器

56.MOVRn,gdata

2

1

將常數(shù)載入寄存器

57.MOVdirect,A

2

1

將累加器的內(nèi)容存入直接地址

58.MOVdirect,Rn

2

2

將寄存器的內(nèi)容存入直接地址

59.MOVdirect1,direct2

3

2

將直接地址2的內(nèi)容存入直接地址1

60.MOVdirect,@Ri

2

2

將間接地址的內(nèi)容存入直接地址

61.MOVdirect,#data

3

2

將常數(shù)存入直接地址

62.MOV@Ri,A

1

1

將累加器的內(nèi)容存入某間接地址

63.MOV@Ri,direct

2

2

將直接地址的內(nèi)容存入某間接地址

64.MOV@Ri,#data

2

1

將常數(shù)存入某間接地址

65.MOVDPTR,#data16

3

2

將16位的常數(shù)存入數(shù)據(jù)指針寄存器

66.MOVCA,@A+DPTR

1

2

(A←((A+(DPTR

累加器的值再加數(shù)據(jù)指針寄存器的值為其所指定地址,將該地址的內(nèi)容讀入累加器

67.MOVCA,@A+PC

1

2

(PC←(PC+1;(A←((A+(PC累加器的值加程序計(jì)數(shù)器的值作為其所指定地址,將該地址的內(nèi)容讀入累加器

68.MOVXA,@Ri

1

2

將間接地址所指定外部存儲(chǔ)器的內(nèi)容讀入累加器(8位地址

69.MOVXA,@DPTR

1

2

將數(shù)據(jù)指針?biāo)付ㄍ獠看鎯?chǔ)器的內(nèi)容讀入累加器(16位地址

70.MOVX@Ri,A

1

2

將累加器的內(nèi)容寫(xiě)入間接地址所指定的外部存儲(chǔ)器(8位地址

71.MOVX@DPTR,A

1

2

將累加器的內(nèi)容寫(xiě)入數(shù)據(jù)指針?biāo)付ǖ耐獠看鎯?chǔ)器(16位地址

72.PUSHdirect

2

2

將直接地址的內(nèi)容壓入堆棧區(qū)

73.POPdirect

2

2

從堆棧彈出該直接地址的內(nèi)容

74.XCHA,Rn

1

1

將累加器的內(nèi)容與寄存器的內(nèi)容互換

75.XCHA,d

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論