




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第3章SPCE061A尋址方式及指令系統(tǒng)3.1基本概念3.2尋址方式3.3指令系統(tǒng)本章小結(jié)
3.1基本概念
3.1.1常用指令符號
為了方便閱讀程序,在介紹尋址方式之前,先統(tǒng)一約定常用的指令符號,見表3.1。3.1.2匯編語言格式
用戶要計算機完成各項任務(wù),就要設(shè)計各種應(yīng)用程序。程序設(shè)計常有三種:機器語言、匯編語言和高級語言。機器語言是計算機惟一能識別的語言,它由一組0、1二進制數(shù)組成,人們不便識別、記憶,因此很難用它來進行程序設(shè)計。高級語言是面向問題和計算過程的語言,可通用于各種不同的計算機,用戶編程時不必仔細了解計算機的具體性能和指令系統(tǒng)。用匯編語言設(shè)計的程序具有針對性,不同的微處理器有不同的指令系統(tǒng)。
3.2尋址方式
3.2.1立即數(shù)尋址
立即數(shù)尋址直接包含操作數(shù),操作數(shù)是一個6位或16位的常數(shù),也叫立即數(shù)。6位立即數(shù)用IM6表示,范圍是0x00~0x3F;16位立即數(shù)用IM16表示,范圍是0x0000~0xFFFF。
【例3.1】3.2.2直接尋址
1.6位地址直接尋址
此尋址方式指令中給出的地址為6位有效地址[A6],由于只給出6位有效地址,所以只能用于第0頁存儲器(SPCE061A只用到第0頁)的前64個字存儲單元范圍內(nèi)尋址,指令周期短。
【例3.2】
2.16位地址直接尋址
此尋址方式指令中給出的地址為16位有效地址[A16],指令周期較6位地址直接尋址強。由于給出的是16位有效地址,所以只用于第0頁存儲器的64K字存儲單元范圍內(nèi)尋址。
【例3.3】
3.22位地址直接尋址
此尋址方式指令中給出的地址為16位有效地址[A16],它是將CS代碼段作為高6位地址和頁內(nèi)16位地址拼接而成的。其可在4?MB的存儲單元范圍內(nèi)尋址,主要用于程序的調(diào)用與返回。3.2.3寄存器直接尋址
寄存器直接尋址是操作數(shù)存放在某個寄存器中,寄存器名稱由指令指出。
【例3.4】
R2=R1+0x20003.2.4寄存器間接尋址
寄存器間接尋址是操作數(shù)的地址由寄存器給出,寄存器需用“[]”括起來,其格式為{D:}[Rs]。省略D,Rs指向0頁存儲器單元;不省略D,由寄存器Rs和段寄存器SR中的數(shù)據(jù)段DS共同指向存儲單元。DS的值確定存儲器的頁碼,然后再根據(jù)Rs的值尋址。由于SPCE061A地址只涉及到0頁,故以后省略D。
【例3.5】
1.寄存器前置增量間接尋址
【例3.6】
R1=[++R3]
假設(shè)執(zhí)行指令前R3中的內(nèi)容為0x1000,該指令是先將R3的內(nèi)容加1,即0x1000加1,得0x1001,再把0x1001地址中的內(nèi)容存放到R1中。指令執(zhí)行完后,R3的值變?yōu)?x1001。
2.寄存器后置增量間接尋址
【例3.7】
R1=[R3++]
同樣假設(shè)執(zhí)行指令前R3中的內(nèi)容為0x1000,該指令是先將0x1000地址中的內(nèi)容存放到R1中,再把R3的內(nèi)容加1,即0x1000加1,得0x1001。指令執(zhí)行完后,R3的值變?yōu)?x1001。
3.寄存器后置減量間接尋址
【例3.8】
R1=[R3--]
同樣假設(shè)執(zhí)行指令前R3中的內(nèi)容為0x1000,該指令是先將0x1000地址中的內(nèi)容存放到R1中,再把R3的內(nèi)容減1,即0x1000減1,得0x0FFF。指令執(zhí)行完后,R3的值變?yōu)?x0FFF。3.2.5變址尋址
【例3.9】
R1=[BP+0x30]
若BP的內(nèi)容為0x1000,該指令執(zhí)行的操作是將0頁存儲器0x1030的內(nèi)容存放到寄存器R1中。3.2.6PC相對尋址
PC相對尋址主要用于跳轉(zhuǎn)指令中,并且是短跳轉(zhuǎn)。根據(jù)寄存器SR中標(biāo)志段的4個標(biāo)志位(NZSC)來作為程序跳轉(zhuǎn)的條件。若條件滿足則跳轉(zhuǎn)到相關(guān)的地址上,其跳轉(zhuǎn)范圍是根據(jù)6位的相對偏移量來決定的,因此跳轉(zhuǎn)范圍限制在PC?+?63個字,往前往后均最多跳63個字。
3.3指令系統(tǒng)
3.3.1數(shù)據(jù)傳送類指令
數(shù)據(jù)傳送類指令是把源操作數(shù)傳送到指令所指定的目標(biāo)地址。數(shù)據(jù)傳送操作屬復(fù)制性質(zhì),而不是搬家性質(zhì)。指令執(zhí)行后,源操作數(shù)不變,目的操作數(shù)被源操作數(shù)代替。通用格式是:
<目的操作數(shù)>=<源操作數(shù)>
1.立即數(shù)尋址
立即數(shù)尋址分6位和16位立即數(shù)尋址,格式:Rd=IM6和Rd=IM16,執(zhí)行后將6位或16位立即數(shù)存入目的寄存器Rd中。
【例3.10】
R1=0x20
//將6位的立即數(shù)0x20送入寄存器R1
R1=0x1FFF//將16位立即數(shù)0x1FFF送入寄存器R1
2.寄存器直接尋址
寄存器直接尋址的格式為Rd=Rs,將源寄存器Rs中的內(nèi)容存入目的寄存器Rd中。
【例3.11】
R1=R2
若執(zhí)行前R2=0x2000,執(zhí)行后將此數(shù)據(jù)存入R1,R1=0x2000。
3.寄存器間接尋址
寄存器間接尋址格式為[Rd]=Rs,將Rs的數(shù)據(jù)存入到以Rd的值作為地址的單元中。
【例3.12】
[++R3]=R1
4.直接地址尋址
該尋址方式有6位和16位兩種。例如:
5.變址尋址
該尋址方式有兩種尋址格式:
6.堆棧操作
堆棧操作也屬于一種特殊的數(shù)據(jù)傳送指令,其通過兩條指令PUSH和POP來完成壓棧與出棧操作。將多個寄存器同時壓棧時,總是序號最高的寄存器先壓棧,然后依次壓入序號較低的寄存器,直到序號最低的寄存器最后入棧。所以,執(zhí)行指令“PUSHR1,R4TO[SP]”與指令“PUSHR4,R1TO[SP]”是等效的,都是先壓入R4,再依次R3、R2、R1。堆棧指令格式為:
PUSHRx,RyTO[SP]
POPRx,RyFROM[SP]
PUSHRxTO[SP]
POPRxFROM[SP]
【例3.13】
PUSHR2,PCTO[SP]圖3.1PUSHR2,PCTO[SP]執(zhí)行過程示意圖
【例3.14】
POPR2,PCFROM[SP]圖3.2POPR2,PCFROM[SP]執(zhí)行過程示意圖3.3.2算術(shù)運算類指令
1.不帶進位的加法指令A(yù)DD
加法運算中,被加數(shù)X可以是目的寄存器或源寄存器,加數(shù)Y可以是6種尋址方式中的任何一種,其運算結(jié)果存放到目的寄存器Rd中。表3.3是ADD運算的指令表。
【例3.15】
R1+=[++R3]
該指令功能是先將R3加1,然后R1中的數(shù)據(jù)與R3中的內(nèi)容作為地址所指向的單元中的數(shù)據(jù)相加,結(jié)果存放到R1中。
2.帶進位的加法指令A(yù)DC
帶進位的加法指令與不帶進位的加法指令的唯一區(qū)別是執(zhí)行加法時進位標(biāo)志也參與加法運算,即Rd=X+Y+C,其余完全相同。
3.減法指令SUB與SBC
減法運算中,被減數(shù)X可以是目的寄存器或源寄存器,減數(shù)Y可以是6種尋址方式中的任何一種,其運算結(jié)果X-Y的差存放到目的寄存器Rd中。減法運算有不帶進位的減法和帶進位的減法兩種,兩者唯一的差別只是是否有進位參與運算。表3.5和3.6是這兩種減法的指令表。
【例3.16】
R1-=[R4--]
這是一條不帶進位的減法指令,先將寄存器R1中的數(shù)據(jù)減去由R4中的值作為地址所指向的單元中的數(shù)據(jù),結(jié)果存放于R1中,然后寄存器R4中的值再減1,即(R4)-1→(R4)。
【例3.17】
求0x1000、0x1001單元數(shù)據(jù)的差值(不考慮進位C),結(jié)果存放于R1中。
R2=0x1000 //地址指針
R1=[R2++] //取0x1001單元的數(shù)據(jù)
R1-=[R2] //求差,結(jié)果存放到R1內(nèi)
【例3.18】
R2=R1-[0x1000],Carry
這是一條帶進位的減法指令,執(zhí)行(R1)-(0x1000)-C,所得結(jié)果存放到R2內(nèi)。
4.求補指令
求補指令為NEG,求一個數(shù)的補碼相當(dāng)于執(zhí)行(-X)+1操作,即將被求數(shù)據(jù)X進行取反后加1運算,操作結(jié)果存放于目的寄存器Rd中。求補指令可以采用6種尋址方式中的任何一種,表3.7給出了所有求補指令。
【例3.19】
求-600與0x06FF單元的數(shù)據(jù)差,結(jié)果存放到R1中。
R1=-600
BP=0x06FF //地址指針
R2=-[BP] //求0x06FF的補碼
R1+=R2 //相加,結(jié)果送入R1
5.乘法運算指令MUL
乘法運算分為有符號數(shù)乘法和無符號數(shù)乘法兩種,乘法指令只能采用寄存器尋址,且Rd、Rs只能采用R1~R4、BP(R5),不采用SP、SR、PC,是為了避免誤用,以及提供彈性給新版指令集作擴充。表3.8給出了有符號數(shù)乘法和無符號數(shù)乘法運算的指令格式、指令周期等。
1)有符號數(shù)乘法
MR=Rd*Rs{,ss}
2)無符號數(shù)和有符號數(shù)乘法
MR=Rd*Rs,ss
【例3.20】
計算一年(365天)共有多少小時,結(jié)果存放到R4(高位)R3(低位)中。
6.n項內(nèi)積指令MULS
SPCE061A除了提供乘法指令外,還提供速度較快的n項內(nèi)積指令MULS,使得其具有一定的數(shù)字信號處理(DSP)功能。表3.9列出了內(nèi)積指令的格式。
1)有符號內(nèi)積
MR=[Rd]*[Rs]{,ss}{,n}圖3.3內(nèi)積運算操作過程示意圖
【例3.21】
2)無符號內(nèi)積
MR=[Rd]*[Rs],us{,n}
7.比較指令
比較指令是兩個數(shù)進行比較的指令。比較運算執(zhí)行兩數(shù)的減法操作,不存儲運算結(jié)果,只影響標(biāo)志位N、Z、S、C。比較指令主要用于判斷,然后實現(xiàn)條件轉(zhuǎn)移。表3.10為比較指令格式表。
【例3.22】
CMPR1,[BP+0x08]
//比較R1,[BP+IM6]
JELabel_1
//若R1=[BP+0x08],則跳轉(zhuǎn)
到Label_13.3.3邏輯運算與移位類指令
1.邏輯與、或、異或指令
這三條指令的語法格式、指令周期以及影響的標(biāo)志位完全相同,在此一起介紹,表3.11為三者的指令格式。
【例3.23】假設(shè)開始時的標(biāo)志位為:N=0,Z=1,S=0,C=1。
2.測試指令
測試指令(TEST)對兩個操作數(shù)進行邏輯與操作,即X&Y,不改變X、Y的值,結(jié)果不寫入寄存器,僅影響N、Z標(biāo)志位。
測試的數(shù)X、Y一個是寄存器(目的寄存器Rd或源寄存器Rs),另一個可是六種尋址方式中的任一種。表3.12為所有測試指令。
【例3.24】假設(shè)開始時的標(biāo)志位為:N=0,Z=1,S=0,C=1。
3.移位指令
SPCE061A的移位運算包括邏輯左移(LSL)、邏輯右移(LSR)、循環(huán)左移(ROL)、循環(huán)右移(ROR)、算術(shù)右移(ASR)等操作。在移位的同時還可進行其他運算,如加、減、求補、與、或、異或、測試,指令長度為1,指令周期為3/8。由于硬件原因,對于移位操作,每條指令可以移1~4位。表3.13為其指令格式。
1)邏輯左移(LSL)
邏輯左移的基本格式為Rd=RsLSLn,該指令對Rs進行n(可設(shè)為1~4)位邏輯左移,將Rs高n位移入SB寄存器,同時Rs的低n(1~4)位用0補足,結(jié)果送入Rd寄存器。假設(shè)n=3,其操作過程如圖3.4所示。圖3.4邏輯左移操作過程
【例3.25】
R1=0xF11F//移位前R1的初值為0xF11F
R1=R1LSL3
//R1邏輯左移3位后值變?yōu)?x88F8
2)邏輯右移(LSR)
邏輯右移的基本格式為Rd=RsLSRn,該指令對Rs進行n(可設(shè)為1~4)位邏輯右移,將Rs低n位移入SB寄存器,同時Rs的高n(1~4)位用0補足,結(jié)果送入Rd寄存器。假設(shè)n=3,其操作過程如圖3.5所示。圖3.5邏輯右移操作過程
3)循環(huán)左移(ROL)
循環(huán)左移的基本格式為Rd=RsROLn,該指令對Rs進行n(可設(shè)為1~4)位循環(huán)左移,將Rs高n位移入SB寄存器,同時將SB寄存器的高n位移入Rs的低n位,結(jié)果送入Rd寄存器。假設(shè)n=1,其操作過程如圖3.6所示。圖3.6循環(huán)左移操作過程
【例3.26】
R1=0xF11F//移位前R1的初值為0xF11F
R1=R1ROL1
//R1循環(huán)左移1位后值變?yōu)?xE23F
4)循環(huán)右移(ROR)
循環(huán)右移的基本格式為Rd=RsRORn,該指令對Rs進行n(可設(shè)為1~4)位循環(huán)右移,將Rs低n位移入SB寄存器,同時將SB寄存器的低n位移入Rs的高n位,結(jié)果送入Rd寄存器。假設(shè)n=1,其操作過程如圖3.7所示。圖3.7循環(huán)右移操作過程
【例3.27】
R1=0xF11F//移位前R1的初值為0xF11F
R1=R1ROR1//R1循環(huán)右移1位后值變?yōu)?xF88F
5)算術(shù)右移(ASR)
算術(shù)右移的基本格式為Rd=RsASRn,該指令對Rs進行n(可設(shè)為1~4)位算術(shù)右移,將Rs低n位移入SB寄存器,并對其符號位(最高位)進行擴展,結(jié)果送入Rd寄存器。該指令適合對所有有符號數(shù)的移位操作。假設(shè)n=3,其操作過程如圖3.8所示。圖3.8算術(shù)右移操作過程
【例3.28】
【例3.29】3.3.4控制轉(zhuǎn)移類指令
表3.14為控制轉(zhuǎn)移類指令表。
1.軟件中斷
軟件中斷為單字指令,助記符為BREAK,采用16位直接地址尋址方式,指令周期為13,不影響標(biāo)志位,功能是產(chǎn)生軟件中斷請求,使CPU轉(zhuǎn)到軟件中斷服務(wù)程序中去。軟件中斷服務(wù)程序的入口地址為[0x00FFF5],該地址固定,不得作其他用。
2.程序轉(zhuǎn)移指令
程序轉(zhuǎn)移指令分為近轉(zhuǎn)移和遠轉(zhuǎn)移,又稱相對轉(zhuǎn)移和絕對轉(zhuǎn)移。近轉(zhuǎn)移時PC值只能在PC+63個字的范圍內(nèi)跳轉(zhuǎn)(即前進或后退63個字);遠轉(zhuǎn)移則在頁內(nèi)64K個字的范圍內(nèi)跳轉(zhuǎn)。
【例3.30】條件轉(zhuǎn)移。
【例3.31】無條件轉(zhuǎn)移。
3.子程序調(diào)用和返回指令
子程序調(diào)用指令用于從指定的代碼段調(diào)用子程序,采用22位直接地址[A22]尋址方式,因此,該指令可以從整個64頁代碼的程序存儲空間內(nèi)調(diào)用任何指定的子程序。其助記符為CALL。子程序返回指令和CALL對應(yīng),表示子程序已結(jié)束,需返回主程序,同樣采用22位直接地址[A22]尋址方式,助記符為RETF。
子程序返回過程:彈出調(diào)用子程序時壓入的段寄存器SR和程序指針PC,使程序從調(diào)用CALL的下一條指令處開始繼續(xù)執(zhí)行主程序。
【例3.32】
4.中斷返回指令
從中斷服務(wù)子程序返回時須用RETF或者RETI指令從棧中彈出狀態(tài)寄存器SR和程序指針PC的值。由于彈棧動作發(fā)生在本指令執(zhí)行之后,故彈棧后SR和PC的值應(yīng)分別與進入中斷服務(wù)子程序之前二者的值相同。
【例3.33】
5.功能設(shè)置類指令
1)?FIR_MOV
該指令用來控制允許或禁止FIR濾波器運算過程中數(shù)據(jù)的自動移動。由于這會影響到FIR濾波器運算的狀態(tài),且此狀態(tài)具有全局性質(zhì),因此用在中斷服務(wù)子程序時要格外小心。
只有如下兩條:
2)?FIQ
該指令用來允許或禁止快速中斷請求(FIQ),只有如下兩條:
FIQON //允許FIQ中斷
FIQOFF //禁止FIQ中斷
3)?IRQ
該指令用來允許或禁止中斷請求(IRQ),只有如下兩條:
IRQON //允許IRQ中斷
IRQOFF //禁止IRQ中斷
4)?INT
該指令用來設(shè)置允許或禁止FIQ和IRQ中斷的標(biāo)志。具體如下:
5)?NOP
該指令為空操作,是對CPU的控制指令,執(zhí)行時機器不作任何操作,而轉(zhuǎn)向下一條指令去執(zhí)行,不影響任何寄存器和標(biāo)志位,通常用于精確延時或等待。
【例3.34】3.3.5偽指令
閱讀一些SPCE061A單片機的源程序開始段,會發(fā)現(xiàn)有一些特殊指令助記符,這些助記符與指令系統(tǒng)的助記不同,沒有相對應(yīng)的操作碼,通常稱這些特殊指令助記符為偽指令。為與匯編指令區(qū)別,偽指令前加一圓點。
1)定義類偽指令
定義類偽指令主要用于對段、程序數(shù)據(jù)性質(zhì)等進行定義。
(1)?CODE、DATA、TEXT。
【例3.35】
.CODE
.PUBLIC_MAIN;
_MAIN:
【例3.36】
.DATA
tone_table:.DW5,8,6,9,3,8,0;
【例3.37】
.TEXT
.PUBLIC_IRQ0
.PUBLIC_IRQ1
.PUBLIC_IRQ2
_IRQ0://中斷子程序入口
PUSHR1,R5to[SP]
(2)?IRAM、ISRAM、ORAM、OSRAM、RAM、SRAM。
IRAM段用來存放具有初始值的變量。此段亦不可跨bank鏈接,且在鏈接時所有與其同名或同屬性的各段都會被合并在一起,將會同時被分配空間于ROM及RAM中。
ISRAM段與IRAM段的性質(zhì)基本相同,區(qū)別是ISRAM段在RAM中只能被分配在前面64(0~63)個字的數(shù)據(jù)單元。
下面給出各自的定義格式。
(3)?MACRO、MACEXIT、ENDM。
MACRO偽指令用來起始宏定義,ENDM偽指令則用來結(jié)束宏定義,二者應(yīng)成對使用。從宏定義里退出是立即且無條件的,MACEXIT偽指令并非用來終止宏定義,它常與條件匯編用在一起,條件滿足時從宏定義里退出,對ENDM偽指令后面的指令進行匯編;條件不滿足時,繼續(xù)匯編MACEXIT偽指令后的宏定義內(nèi)的其它指令。不必擔(dān)心從宏里退出時條件會失衡,因為MACEXIT偽指令會自動將條件恢復(fù)到原來的均衡狀態(tài)。下面給出各自定義格式。
【例3.44】
Personal_info:.MACROarg1,arg2,arg3
Name:.DWarg1
Age:.DWarg2
.ENDM
【例3.45】
eserve:.MACROarg1,arg2
.VARarg1
.IFcount
.MACEXIT
.ENDIF
.VARcount–1
.ENDM
(4)?PROC、ENDP、STRUCT、ENDS。
PROC偽指令用于起始程序的定義,ENDP用來結(jié)束程序定義,兩者成對使用;STRUCT偽指令用于起始結(jié)構(gòu)的定義,ENDS用來結(jié)束結(jié)構(gòu)定義,兩者成對使用。下面給出各自定義格式。
(5)?DEFINE、VAR、PUBLIC、EXTERNAL、EQU、VDEF。
DEFINE用來定義常量符號,給常量符號所賦之值既可以是一個已定義過的常量符號,也可以是一個表達式。切忌符號超前引用,即如果賦值引用的符號不是在引用前定義的,則會出現(xiàn)“非法超前引用”的錯誤。
【例3.48】
.DEFINEBODY1;
.DEFINEIO_PORT0x7016;
.IFDEFBODY;
R1=0xFFFF;
[IO_PORT]=R1;
.ENDIF
【例3.49】
.RAM
.VARs1,s2,s3; //無賦初值
【例3.52】
label:.EQU10
VDEF用來為標(biāo)號賦值,它可以在程序的任何部位為標(biāo)號重復(fù)賦值。
【例3.53】
int0:.VDEF0x005F
2)存儲類偽指令
存儲類偽指令以指定的數(shù)據(jù)類型存儲數(shù)據(jù)或設(shè)定程序地址等。數(shù)據(jù)類型包括DW、DD、FLOAT、DOUBLE、END等。表3.16為各數(shù)據(jù)類型的字長及值域。
(1)?DW、DD、FLOAT、DOUBLE。
DW用來指示以16位整型數(shù)據(jù)的形式來存儲常量或變量;DD用來指示以32位長整型數(shù)據(jù)的形式存儲雙字常量或變量;FLOAT用來指示以單精度浮點型實數(shù)數(shù)據(jù)單元來存儲實數(shù)常量或變量;DOUBLE用來指示以雙精度浮點型實數(shù)數(shù)據(jù)的形式存儲實數(shù)常量或變量。
(2)?END。
END用來結(jié)束程序文件或結(jié)束包含文件,本偽指令用在程序文件中意味該文件結(jié)束(不可再包含其它文件)。
3)存儲定義類偽指令
DUP用來定義若干指定數(shù)據(jù)類型的數(shù)據(jù)存儲單元,與DW、FLOAT、DD、DOUBLE存儲類偽指令組合在一起用于存放若干個具有相同數(shù)值的常量;或者申請若干個備用的整型、單精度浮點型、長整型以及雙精度浮點型數(shù)據(jù)單元。
4)條件類偽指令
條件類偽指令包括IF、ELSE、ENDIF、IFMA、IFDEF、IFNDEF,共6個。
IF指令引出在條件匯編結(jié)果為真時所要匯編的程序指令。ELSE引出IF偽指令設(shè)置的條件匯編結(jié)果為假時所要匯編的程序指令,它必須與IF偽指令結(jié)合使用。ENDIF用來結(jié)束條件匯編組合的定義,也必須與IF偽指令成對使用。
5)匯編方式類偽指令
該類偽指令包括兩條:INCLUDE和SECTION。INCLUDE指令的作用是在匯編文件里包含某個文件。SECTION指令的作用是用來創(chuàng)建用戶定義段,創(chuàng)建段的屬性參量attribute可以是以下預(yù)定義段名當(dāng)中的任意一個:CODE、DATA、TEXT、RAM、SRAM、IRAM、ISRAM、ORAM、OSRAM。3.3.6宏定義與調(diào)用
1.宏定義
宏(Macro)是指在源程序里將一序列的源指令行用一個簡單的宏名(MacroName)所取代。這樣做的好處是使程序的可讀性增強。
2.宏標(biāo)號
宏定義里可以用顯式標(biāo)號(由用戶定義),亦可用隱含標(biāo)號(由匯編器自動定義)。匯編器不會改變用戶定義的顯式標(biāo)號。在宏標(biāo)號后加上后綴符‘#’則表明該標(biāo)號為隱含標(biāo)號,匯編器會自動生成一個后綴數(shù)字符號‘_X_XXXX’(X表示一位數(shù)符,XXXX表示4位擴展數(shù)符)來取代這個隱含標(biāo)號中的后綴符‘#’,如例3.65所示。隱含標(biāo)號中的字母字符及其后綴數(shù)符總共不能超過32個字符。
3.宏調(diào)用
在調(diào)用宏時,可以使用任何類型的參數(shù):直接型、間接型、字符串型或寄存器型。只有字符串型參數(shù)才能含有空格,但必須用引號將此空格括起,即‘’或“”(而字符串參數(shù)中的單引號,必須用雙引號將其括起,即“‘”)。只要在宏嵌套中的形參名相同,則這些參數(shù)就可以穿過嵌套的宏使用。宏嵌套使用唯一所受的限制是內(nèi)存空間的容量。宏的多個參數(shù)應(yīng)以逗號隔開,參數(shù)前的空格及Tab鍵都將被忽略。單有一個逗號,而后面未帶有任何參數(shù)時會被匯編器表示為參數(shù)丟失錯誤。
4.宏參數(shù)分隔符
在一個宏體中,宏參數(shù)的有效分隔為標(biāo)點符號中的逗號,即“,”。
5.宏內(nèi)字符串連接符
符號‘@’(40H)是字符串連接符。注意,字符串連接只能在宏內(nèi)進行。
6.助記符搜索順序
通常,匯編器以表3.17列出的順序來搜索各種助記符或符號。
7.宏應(yīng)用舉例
【例3.66】數(shù)的比較。
【例3.67】將標(biāo)號名傳入程序代碼。3.3.7段的定義與調(diào)用
1.預(yù)定義段
在Xasm16里共定義有9個預(yù)定義段:CODE、DATA、TEXT、ORAM、OSRAM、RAM、IRAM、SRAM及ISRAM段。這些預(yù)定義段都分別被規(guī)定了以下內(nèi)容:
(1)段內(nèi)存儲數(shù)據(jù)類型:指令/
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 家具設(shè)計第一章
- 蘇州工業(yè)園區(qū)職業(yè)技術(shù)學(xué)院《電視攝像與剪輯藝術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 南方醫(yī)科大學(xué)《西方倫理學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 新疆農(nóng)業(yè)大學(xué)《學(xué)習(xí)筑夢民族復(fù)興夢》2023-2024學(xué)年第一學(xué)期期末試卷
- 山東旅游職業(yè)學(xué)院《中國現(xiàn)當(dāng)代文學(xué)作品選》2023-2024學(xué)年第二學(xué)期期末試卷
- 急性心梗心源性休克的護理
- 廣州鐵路職業(yè)技術(shù)學(xué)院《工程風(fēng)險管理》2023-2024學(xué)年第二學(xué)期期末試卷
- 上海師范大學(xué)天華學(xué)院《統(tǒng)計質(zhì)量控制與分析》2023-2024學(xué)年第一學(xué)期期末試卷
- 寧德市重點中學(xué)2025屆初三調(diào)研英語試題試卷詳細解析含答案
- 麗江文化旅游學(xué)院《民族學(xué)概論》2023-2024學(xué)年第二學(xué)期期末試卷
- 主動脈夾層護理查房-PPT課件
- 思普產(chǎn)品介紹ppt課件
- 零星工程施工組織設(shè)計方案
- 人教版七年級下冊第五章53《平行線的性質(zhì)》說課稿
- 8251芯片(課堂PPT)
- 江蘇省電力公司電網(wǎng)生產(chǎn)業(yè)務(wù)外包管理辦法(試行)
- DriveMonitor使用簡介
- 濕法煉鋅電解車間設(shè)計論文
- 森林培育學(xué)復(fù)習(xí)提綱
- 電除塵拆除施工方案
- (完整版)表2.0.2逆變器本體安裝.doc
評論
0/150
提交評論