當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]1、DS ---預(yù)留存儲(chǔ)區(qū)命令格式: 〔標(biāo)號(hào):〕 DS 表達(dá)式值 其功能是從指定地址開(kāi)始,定義一個(gè)存儲(chǔ)區(qū),以備源程序使用。 存儲(chǔ)區(qū)預(yù)留的存儲(chǔ)單元數(shù)由表達(dá)式的值決定。 TMP: DS 1 從標(biāo)號(hào)TEP地址處開(kāi)始保留1個(gè)存儲(chǔ)單元

1、DS ---預(yù)留存儲(chǔ)區(qū)命令

格式: 〔標(biāo)號(hào):〕 DS 表達(dá)式值
其功能是從指定地址開(kāi)始,定義一個(gè)存儲(chǔ)區(qū),以備源程序使用。
存儲(chǔ)區(qū)預(yù)留的存儲(chǔ)單元數(shù)由表達(dá)式的值決定。
TMP: DS 1
從標(biāo)號(hào)TEP地址處開(kāi)始保留1個(gè)存儲(chǔ)單元(字節(jié))。
2、BIT---定義位命令
格式: 字符名稱 BIT 位地址
其功能用于給字符名稱定義位地址。
SPK BIT P3.7
經(jīng)定義后,允許在指令中用SPK代替P3.7。
3、USING指令
USING指令通知匯編器使用8051的哪一個(gè)工作寄存器組。
格式: USING 表達(dá)式 (值必須為0-3,默認(rèn)值為0。)
USING 0
使用第0組工作寄存器。
4、SEGMENT指令
SEGMENT 指令用來(lái)聲明一個(gè)再定位段和一個(gè)可選的再定位類型。
格式: 再定位段名 SEGMENT 段類型〔再定位類型〕
其中,“再定位段名”用于指明所聲明的段。
“段類型”用于指定所聲明的段將處的存儲(chǔ)器地址空間。
可用的段類型有 CODE、XDATA、DATA、IDATA和BIT。
STACK_SEG SEGMENT IDATA
DATA_SEG SEGMENT DATA
5、RSEG---再定位段選擇指令
再定位段選擇指令為RSEG,用于選擇一個(gè)已在前面定義過(guò)的再定位段作為當(dāng)前段。
格式: RSEG 段名
段名必須是在前面已經(jīng)聲明過(guò)的再定位段。
DATA_SEG SEGMENT DATA ;聲明一個(gè)再定位DATA段
RSEG DATA_SEG ;選擇前面聲明的再定位DATA段作為當(dāng)前段
6、絕對(duì)段選擇指令
CSEG---絕對(duì)代碼段
DSEG---內(nèi)部絕對(duì)數(shù)據(jù)段
XSEG---外部絕對(duì)數(shù)據(jù)段
ISEG---內(nèi)部間接尋址數(shù)據(jù)段
BSEG---絕對(duì)位尋址數(shù)據(jù)段
格式:
CSEG [AT 絕對(duì)地址表達(dá)式]
DSEG [AT 絕對(duì)地址表達(dá)式]
XSEG [AT 絕對(duì)地址表達(dá)式]
ISEG [AT 絕對(duì)地址表達(dá)式]
BSEG [AT 絕對(duì)地址表達(dá)式]
括號(hào)內(nèi)是可選項(xiàng),用來(lái)指定當(dāng)前絕對(duì)段的基地址。
CSEG AT 0000H
AJMP MAIN
7、ORG指令
ORG指令用來(lái)改變匯編器的計(jì)數(shù)器,從而設(shè)定一個(gè)新的程序起始地址。
格式: ORG 表達(dá)式
表達(dá)式必須是絕對(duì)或簡(jiǎn)單再定位表達(dá)式。
ORG 0000H
AJMP MAIN
設(shè)定 MAIN 程序的起始地址為 0000H。
8、END指令
END指令用來(lái)控制匯編結(jié)束。在每個(gè)匯編程序的最后一行必須有一條END指令,
并且END指令只能出現(xiàn)一次。
9、EQU指令
EQU 指令用于將一個(gè)數(shù)值或寄存器名賦給一個(gè)指定的符號(hào)名。
格式: 符號(hào)名 EQU 表達(dá)式
或 符號(hào)名 EQU 寄存器名
表達(dá)式必須是一個(gè)簡(jiǎn)單再定位表達(dá)式。
用 EQU 指令賦值以后的字符名,可以用作數(shù)據(jù)地址、代碼地址、位地址或者
直接當(dāng)做一個(gè)立即數(shù)使用。
LIMIT EQU 1200
COUNT EQU R5
10、DATA 指令
DATA 指令用于將一個(gè)內(nèi)部 RAM 的地址賦給指定的符號(hào)名。
格式: 符號(hào)名 DATA 表達(dá)式
數(shù)值表達(dá)式的值在 0-255 之間,表達(dá)式必須是一個(gè)簡(jiǎn)單再定位表達(dá)式。
PORT1 DATA 40H
11、DB 指令
DB 指令以表達(dá)式的值的字節(jié)形式初始化代碼空間。
格式: [標(biāo)號(hào):] DB 表達(dá)式表
表達(dá)式中可包含符號(hào)、字符串、或表達(dá)式等項(xiàng),各個(gè)項(xiàng)之間用逗號(hào)隔開(kāi),字符串應(yīng)用引號(hào)括起來(lái)。
括號(hào)內(nèi)的標(biāo)號(hào)是可選項(xiàng),如果使用了標(biāo)號(hào),則標(biāo)號(hào)的值將是表達(dá)式表中第一字節(jié)的地址。
DB 指令必須位于 CODE 段之內(nèi),否則將會(huì)發(fā)生錯(cuò)誤。
TABLE:
DB 0C0H, 0F9H, 0A4H
TABLE1:
DB " 89C51 "
51匯編程序基本框架
向大家介紹一種可以不用 EQU來(lái)定義變量的方法。
先說(shuō)說(shuō)用 EQU 定義變量的缺點(diǎn):
1:人為為每一個(gè)變量指定地址,還必須注意防止地址沖突,工作量太大。
2:編譯器只是把用 EQU 定義的標(biāo)識(shí)符當(dāng)作常數(shù)而已,在很多情況下當(dāng)用戶把該標(biāo)識(shí)符用錯(cuò)時(shí),編譯器不會(huì)給出警告或報(bào)錯(cuò)。
例如,假設(shè)想在 IDATA 區(qū)定義一個(gè)變量,如果用 EQU 方式作如下定義:
MYBYTE EQU 87H ;(其實(shí)編譯器只是將 MYBYTE 視為一個(gè)常量而已)如果想將該變量(位于 IDATA 區(qū))賦值到累加器 A,正確的訪問(wèn)方式應(yīng)該是
 MOV R0,#MYBYTE
MOV A,@R0
如果程序員將上面的語(yǔ)句錯(cuò)寫(xiě)為:
MOV A,MYBYTE
(原因可能是粗心,或者忘記了 MYBYTE 是大于 7FH 的)
編譯器不會(huì)為此報(bào)錯(cuò),結(jié)果執(zhí)行的操作是將地址為 87H 的特殊功能寄存器的內(nèi)容賦值到 A,而不是將 IDATA 區(qū)的 87H 賦值到 A,與用戶的本意大相徑庭。
這只是一個(gè)例子,實(shí)際上還會(huì)有其它類似的問(wèn)題。
如果使用了下面描述的方式,則編譯器會(huì)幫你指出此類錯(cuò)誤。建議 EQU 只用于定義常數(shù),不要做其它用途。
下面是一種比較好的變量定義方法,沒(méi)有上面所說(shuō)的缺點(diǎn)。
;定義變量的方法:
;1:定義字節(jié)變量用 DS 關(guān)鍵字,語(yǔ)法為:
; 變量名: DS 分配的字節(jié)數(shù)
;2:定義位變量用 DBIT 關(guān)鍵字,語(yǔ)法為:
; 位變量名: DBIT 分配的位數(shù)
;3:定義特殊功能寄存器(SFR)用 DATA 關(guān)鍵字,語(yǔ)法為:
; 寄存器名: DATA 寄存器地址
;4:定義可位尋址的特殊功能寄存器中的位用 BIT 關(guān)鍵字,語(yǔ)法為:
; 位名: BIT 位地址
;5:常量定義用 EQU 關(guān)鍵字,語(yǔ)法為:
; 常量名: EQU 常數(shù)
;具體見(jiàn)如下示例:
;51匯編程序基本框架
$NOMOD51 ;如果不使用默認(rèn)的 51 特殊功能寄存器定義,可以用本語(yǔ)句取消。
;$INCLUDE (W79E825.INC) ;用此語(yǔ)句可以包含頭文件
;---------- 特殊功能寄存器定義 (僅作示范,不全)
P0 DATA 080H
SP DATA 081H
DPL DATA 082H
DPH DATA 083H
 PCON DATA 087H
TCON DATA 088H
TMOD DATA 089H
TL0 DATA 08AH
TL1 DATA 08BH
TH0 DATA 08CH
TH1 DATA 08DH
P1 DATA 090H
SCON DATA 098H
SBUF DATA 099H
P2 DATA 0A0H
IE DATA 0A8H
PSW DATA 0D0H
;---------- 可位尋址的特殊功能寄存器中的位定義(僅作示范,不全)
BITIT0 BIT TCON.0 ;外部中斷0觸發(fā)方式
BITIE0 BIT TCON.1 ;外部中斷0標(biāo)志
BITIT1 BIT TCON.2 ;外部中斷1觸發(fā)方式
BITIE1 BIT TCON.3 ;外部中斷1標(biāo)志
BITTR0 BIT TCON.4 ;定時(shí)器0啟動(dòng)控制
BITTF0 BIT TCON.5 ;定時(shí)器0溢出標(biāo)志
BITTR1 BIT TCON.6 ;定時(shí)器1啟動(dòng)控制
BITTF1 BIT TCON.7 ;定時(shí)器1溢出標(biāo)志
BITRI BIT SCON.0 ;接收中斷標(biāo)志
BITTI BIT SCON.1 ;發(fā)送中斷標(biāo)志
BITRB8 BIT SCON.2
BITTB8 BIT SCON.3
BITREN BIT SCON.4 ;接收使能
BITSM2 BIT SCON.5 ;多機(jī)通信控制
BITSM1 BIT SCON.6 ;串口模式位1
BITSM0_FE BIT SCON.7 ;串口模式位0或FE
;---------- 常量定義
NSTACKSIZE EQU 36 ;指定堆棧大小
;---------- 以下為變量定義
;如果MCU沒(méi)有某些數(shù)據(jù)段,就刪除或注釋掉相應(yīng)的段。
;變量定義有不可重定位和可重定位之分,這二種方式可混合使用。
;需要注意的是,某些編譯器對(duì)可重定位方式支持的不是很好,
;而且可重定位方式對(duì)匯編不是很有用,所以建議不用可重定位方式。
;---- 下面為不可重定位的變量分配方式
; BSEG 關(guān)鍵詞指定 BIT 區(qū)
; DSEG 關(guān)鍵詞指定 DATA 區(qū)
; ISEG 關(guān)鍵詞指定 IDATA 區(qū)
; XSEG 關(guān)鍵詞指定 XDATA 區(qū)
; CSEG 關(guān)鍵詞指定 CDATA 區(qū)
;注意:BIT 區(qū)的位地址 20H~2FH 范圍與 DATA 區(qū)的00H~7FH范圍是同一存儲(chǔ)空間,
; 所以在分配 DATA 區(qū)字節(jié)變量和 BIT 區(qū)位變量時(shí)要注意不要重疊。
BSEG AT 00H ;從 BIT 區(qū)的位地址 00H 開(kāi)始分配位變量
BEXAMPLE: DBIT 1 ;在 BIT 區(qū)定義一個(gè)位變量,位地址為 00H(即DATA區(qū)20H字節(jié)的第0位)
BTESTA: DBIT 1 ;在 BIT 區(qū)定義一個(gè)位變量,位地址為 01H(即DATA區(qū)20H字節(jié)的第1位)
BTESTB: DBIT 1 ;在 BIT 區(qū)定義一個(gè)位變量,位地址為 02H(即DATA區(qū)20H字節(jié)的第2位)
;在 DATA 區(qū)定義變量時(shí)要注意不要與 R0~R7 寄存器重疊。
DSEG AT 08H ;從 DATA 區(qū)的 08H 地址(為了避開(kāi) R0~R7)開(kāi)始分配變量
DEXAMPLE: DS 2 ;在 DATA 區(qū)定義一個(gè) 2 字節(jié)的變量,地址為 08H
DTEST: DS 1 ;在 DATA 區(qū)定義一個(gè) 1 字節(jié)的變量,地址為 0AH
DLCDBUFFER: DS 21 ;注意不要與 BIT 區(qū)重疊,建議在地址 1FH 結(jié)束分配。
DSEG AT 2EH ;在 DATA 區(qū)的可位尋址區(qū)域定義可位尋址的字節(jié)變量
;注意不要與前面在 BIT 區(qū)分配的 BIT 位重疊
DBYTEA: DS 1 ;在 DATA 區(qū)定義一個(gè) 1 字節(jié)的變量,地址為 2EH(此變量可位尋址)
DBYTEB: DS 1 ;在 DATA 區(qū)定義一個(gè) 1 字節(jié)的變量,地址為 2FH(此變量可位尋址)
DSEG AT 30H ;從 DATA 區(qū)的 30H 地址(已避開(kāi) BIT 區(qū))開(kāi)始分配變量
DBYTEC: DS 1 ;在 DATA 區(qū)定義一個(gè) 1 字節(jié)的變量,地址為 30H
DBYTED: DS 3 ;在 DATA 區(qū)定義一個(gè) 3 字節(jié)的變量,地址為 31H
DBYTEE: DS 1 ;在 DATA 區(qū)定義一個(gè) 1 字節(jié)的變量,地址為 34H
ISEG AT 80H ;從 IDATA 區(qū)的 80H 地址(為了避開(kāi) DATA 區(qū))開(kāi)始分配變量
IEXAMPLEA: DS 1 ;在 IDATA 區(qū)定義一個(gè) 1 字節(jié)的變量,地址為 80H
IEXAMPLEB: DS 4 ;在 IDATA 區(qū)定義一個(gè) 4 字節(jié)的變量,地址為 81H
ISEG AT 255-NSTACKSIZE ;將堆棧放在 IDATA 區(qū)的末尾,首地址為 255-NSTACKSIZE
ISTACK: DS NSTACKSIZE ;定義多字節(jié)變量,作為堆棧用(大小為 NSTACKSIZE),
; 見(jiàn)后面代碼中的 “MOV SP,#ISTACK”語(yǔ)句。
XSEG AT 00H ;從 XDATA 區(qū)的 00H 地址開(kāi)始分配變量
XEXAMPLE0: DS 1 ;在 XDATA 區(qū)定義一個(gè) 1 字節(jié)的變量,地址為 00H
XEXAMPLE1: DS 1 ;在 XDATA 區(qū)定義一個(gè) 1 字節(jié)的變量,地址為 01H
;==============================================================================;
;CODE 段
CSEG AT 0 //程序起始地址
A_START:
MOV IE,#00H ;關(guān)閉中斷
SJMP A_MAIN
CSEG AT 0023H //串口中斷地址,其它中斷地址的指定類似此方法。
LJMP A_UARTINT //跳轉(zhuǎn)到中斷處理子函數(shù)
;==============================================================================;
A_MAIN:
MOV SP,#ISTACK ;設(shè)置堆棧指針,
;只能在調(diào)用任何函
; 數(shù)之前設(shè)定SP。
MOV PSW,#0 ;將RS0,RS1及其它標(biāo)志位清0。
;注意:內(nèi)存清零不要放在子函數(shù)中,
; 因?yàn)閮?nèi)存清零也會(huì)清零堆棧,
; 從而導(dǎo)致 RET 返回地址不正確?。?!
MOV R0,#0FFH ;內(nèi)存00H~0FFH的內(nèi)容清零。
CLR A
A_MAIN01:
MOV @R0,A
DJNZ R0,A_MAIN01
;用戶初始化代碼
...
A_LOOP: ;主循環(huán)
;用戶代碼
LCALL _TEST
SJMP A_LOOP
;用戶代碼(子程序)
_TEST:
NOP
NOP
RET
A_UARTINT: //串口中斷處理子函數(shù)
NOP
NOP
RETI
 END

------------------------------------------------------------------------------------

A51

匯編器是運(yùn)行于IBM PC系列及其兼容機(jī)上的交叉匯編軟件,其主要功能是將MCS-51系列單片機(jī)匯編語(yǔ)言源程序翻譯成符合Intel目標(biāo)文件格式的可再定位的目標(biāo)代碼,經(jīng)過(guò)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

無(wú)類型符號(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)鍵字說(shuō)明)


二:標(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

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


四:運(yùn)算符:

有三種1):算術(shù)運(yùn)算符包括:+,-(正負(fù)號(hào)),加---+,減,乘,除,MOD(取模),()—括號(hào),改變運(yùn)算順序.2):二進(jìn)制運(yùn)算符號(hào):用來(lái)對(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á)式是無(wú)類型的,當(dāng)表達(dá)式中包含有段類型的操作數(shù)或者是子表達(dá)式時(shí),運(yùn)算結(jié)果的段類型遵循下面的原則:


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

.

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

.

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

(NUMBER).

總結(jié):只有當(dāng)操作數(shù)加上或者是減去一個(gè)無(wú)類型時(shí),才可能產(chǎn)生一類型,其他所有的組合均產(chǎn)生無(wú)類型的表達(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)的偽指令

1

)SEGMENT


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


SEGMENT

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


如果是編寫(xiě)的匯編程序要與C源程序接口,即被C源程序調(diào)用,則全部的匯編子程序所命名的定義的代碼段的段名必須是可用SEGMENT來(lái)定義的,而且名字的命名的方法也應(yīng)該參照C51編譯器產(chǎn)生的局部段的段名的轉(zhuǎn)換規(guī)則.段名的作用主要是在匯編的時(shí)候用RSEG來(lái)激活的,在連接定位的時(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è)可開(kāi)始于任一單元的段對(duì)于BIT型的段,一個(gè)單元是一個(gè)位,


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

.

PAGE:

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


INPAGE:

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


INBLOCK:

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


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

BITADDRESSABLE:

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


2) EQU

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


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

EQU

偽指令定義一表示數(shù)值或寄存器的符號(hào),該符號(hào)可用于表達(dá)式或助記符指令的操作數(shù),EQU指令定義的符號(hào)不能被改變或重新定義,其段類型取決于表達(dá)式中的操作數(shù)類型類型,無(wú)類型的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ù)值確定的,且其值必須在0—255之間,類型必須是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段的任何類型。該偽指令語(yǔ)句使當(dāng)前地址計(jì)數(shù)器加上表達(dá)式的值,需要注意的是地址計(jì)數(shù)器加上表達(dá)式結(jié)果的值不能超出地址空間的范圍。(無(wú)論是匯編器還是編譯器,對(duì)每一種不同類型的地址空間(DATA,CODE,PDATA,XDATA,BIT)都產(chǎn)生一個(gè)獨(dú)立的地址計(jì)數(shù)器,每匯編一條指令,計(jì)數(shù)器都會(huì)自動(dòng)增加,不過(guò)可以用ORG偽指令改變當(dāng)前段地址計(jì)數(shù)器,用ORG偽指令表達(dá)式的值作為當(dāng)前段地址計(jì)數(shù)器的初值,而當(dāng)前段的改變可以用RSEG偽指令來(lái)改變。


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ǔ)空間可以使RAM和ROM,而這兩個(gè)指令直接就是初始化程序存儲(chǔ)空間

.

Table: DB “any key to continue!”

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

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉