![ASM51宏匯編使用手冊(cè)_第1頁(yè)](http://file4.renrendoc.com/view/ec2227acd74041eeb7c78bdea63045a6/ec2227acd74041eeb7c78bdea63045a61.gif)
![ASM51宏匯編使用手冊(cè)_第2頁(yè)](http://file4.renrendoc.com/view/ec2227acd74041eeb7c78bdea63045a6/ec2227acd74041eeb7c78bdea63045a62.gif)
![ASM51宏匯編使用手冊(cè)_第3頁(yè)](http://file4.renrendoc.com/view/ec2227acd74041eeb7c78bdea63045a6/ec2227acd74041eeb7c78bdea63045a63.gif)
![ASM51宏匯編使用手冊(cè)_第4頁(yè)](http://file4.renrendoc.com/view/ec2227acd74041eeb7c78bdea63045a6/ec2227acd74041eeb7c78bdea63045a64.gif)
![ASM51宏匯編使用手冊(cè)_第5頁(yè)](http://file4.renrendoc.com/view/ec2227acd74041eeb7c78bdea63045a6/ec2227acd74041eeb7c78bdea63045a65.gif)
版權(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
L
D
W
數(shù)據(jù)段DSEG
D
D
W
外部段XSEG
X
X
E
功能段FSEG
F
F
G
位
段BSEG
B
B
B
說(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度國(guó)際貿(mào)易結(jié)算合同:基于DAF的跨境支付結(jié)算協(xié)議
- 2025年度小微企業(yè)專(zhuān)項(xiàng)貸款合同模板匯編
- 2025年度洗車(chē)服務(wù)與汽車(chē)金融結(jié)合合同
- 2025年度時(shí)尚產(chǎn)品印刷委托合同范本
- 離職申請(qǐng)書(shū)英文
- 現(xiàn)代農(nóng)村商業(yè)發(fā)展的新機(jī)遇與挑戰(zhàn)
- 2025年度事業(yè)單位實(shí)習(xí)生實(shí)習(xí)期間實(shí)習(xí)單位實(shí)習(xí)環(huán)境與設(shè)施保障協(xié)議
- 2025年度農(nóng)村小額貸款借款合同糾紛調(diào)解范本
- 現(xiàn)代市場(chǎng)營(yíng)銷(xiāo)中的活動(dòng)策劃與執(zhí)行
- 2025年度企業(yè)核心員工長(zhǎng)期聘用合同標(biāo)準(zhǔn)樣本
- 小學(xué)高年級(jí)數(shù)學(xué)閱讀能力的培養(yǎng)與
- 醫(yī)院培訓(xùn)課件:《過(guò)敏性休克的搶救》
- JGT161-2016 無(wú)粘結(jié)預(yù)應(yīng)力鋼絞線(xiàn)
- DB32-T 4319-2022 中藥藥渣處理規(guī)程
- 學(xué)前兒童保育學(xué)(學(xué)前教育專(zhuān)業(yè))全套教學(xué)課件
- 人工智能行業(yè)數(shù)據(jù)安全與隱私保護(hù)
- GB/T 9439-2023灰鑄鐵件
- (完整word版)Word信紙(A4橫條直接打印版)模板
- 向高層銷(xiāo)售:與決策者有效打交道
- DB32/T 4443-2023 罐區(qū)內(nèi)在役危險(xiǎn)化學(xué)品(常低壓)儲(chǔ)罐管理規(guī)范
- 尼泊爾簡(jiǎn)介課件
評(píng)論
0/150
提交評(píng)論