汽車單片機(jī)原理及應(yīng)用---第四章-指令系統(tǒng)_第1頁(yè)
汽車單片機(jī)原理及應(yīng)用---第四章-指令系統(tǒng)_第2頁(yè)
汽車單片機(jī)原理及應(yīng)用---第四章-指令系統(tǒng)_第3頁(yè)
汽車單片機(jī)原理及應(yīng)用---第四章-指令系統(tǒng)_第4頁(yè)
汽車單片機(jī)原理及應(yīng)用---第四章-指令系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩83頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第四講第四講指令系統(tǒng)指令系統(tǒng)主要內(nèi)容:主要內(nèi)容:1.尋址方式2.指令系統(tǒng)3.程序設(shè)計(jì)指令地址尋址指令地址尋址相對(duì)尋址:相對(duì)尋址:將一條指令的8 位立即數(shù)與下一條指令的起始地址相加,結(jié)果賦給程序計(jì)數(shù)器(PC),然后轉(zhuǎn)向相加結(jié)果指向的地址立即數(shù)是帶符號(hào)位的補(bǔ)碼(128 to +127),相對(duì)轉(zhuǎn)移值是從下一條指令的起始地址開(kāi)始,范圍在128 與+127之間執(zhí)行“BR $addr16”指令或條件轉(zhuǎn)移指令立即尋址:立即尋址:將指令中的立即數(shù)賦給程序計(jì)數(shù)器(PC),然后轉(zhuǎn)向該地址如“CALL !addr16”、“BR !addr16”或“CALLF !addr11” 指令CALL !addr16 和BR

2、!addr16指令的轉(zhuǎn)移地址范圍是所有內(nèi)存空間。CALLF !addr11指令的轉(zhuǎn)移地址范圍在0800H與0FFFH之間CALL !addr16, BR !addr16 指令指令地址尋址指令地址尋址CALLF !addr11 指令指令地址尋址指令地址尋址表間接尋址:表間接尋址:通過(guò)指令碼低5位的立即數(shù)(從第1位到第5位),訪問(wèn)特定存儲(chǔ)單元的表的內(nèi)容(轉(zhuǎn)移目的地址),并將表的內(nèi)容賦給程序計(jì)數(shù)器(PC),然后轉(zhuǎn)向該地址在執(zhí)行CALLT addr5指令時(shí),進(jìn)行表間接尋址。執(zhí)行該指令時(shí),根據(jù)存儲(chǔ)在內(nèi)存表中40H至7FH之間的地址,能夠跳轉(zhuǎn)到整個(gè)內(nèi)存空間的任意位置指令地址尋址指令地址尋址寄存器尋址寄存器

3、尋址:將一條指令的寄存器對(duì)(AX)的內(nèi)容賦值給程序計(jì)數(shù)器(PC),然后轉(zhuǎn)向該地址“BR AX”指令指令地址尋址指令地址尋址指令執(zhí)行期間寄存器尋址和存儲(chǔ)器尋址所進(jìn)行的操作隱含尋址隱含尋址:規(guī)定某些寄存器地址是作為通用寄存器中的累加器(A 和AX)使用操作數(shù)地址尋址操作數(shù)地址尋址寄存器尋址:寄存器尋址:將通用寄存器作為操作數(shù)進(jìn)行訪問(wèn),并由寄存器組選擇標(biāo)志(RBS0 和RBS1)和指令中的寄存器標(biāo)識(shí)碼(Rn 和RPn)確定要訪問(wèn)的通用寄存器,如果使用8位寄存器,則指令碼中有3位用來(lái)表示一個(gè)8位寄存器r 和rp可用絕對(duì)名稱(R0 到R7 以及RP0 到RP3)和功能名稱(X, A, C, B, E,

4、D, L, H, AX, BC, DE以及HL)來(lái)描述操作數(shù)格式MOV A, C; 選擇C寄存器作為r操作數(shù)地址尋址操作數(shù)地址尋址直接尋址直接尋址:根據(jù)指令中的立即數(shù)直接尋址操作數(shù)格式MOV A, !FE00H; 將!addr16設(shè)置為FE00H操作數(shù)地址尋址操作數(shù)地址尋址短直接尋址短直接尋址:指令中的8位立即數(shù)對(duì)固定區(qū)域中的內(nèi)存進(jìn)行直接尋址,尋址范圍是FE20H到FF1FH總共256字節(jié)的內(nèi)存區(qū)域內(nèi)部高速RAM和特殊功能寄存器(SFR) FF00H到FF1FH的區(qū)域主要存放程序中經(jīng)常訪問(wèn)的端口、計(jì)數(shù)器的比較寄存器、計(jì)數(shù)器的接收寄存器如果8位立即數(shù)是在20H 和FFH之間,則將一個(gè)有效地址的第

5、8位設(shè)置為0;如果8位立即數(shù)是在00H與1FH之間,則一個(gè)有效地址的第8位設(shè)置為1操作數(shù)格式MOV FE30H, #50H; saddr的值為FE30H,立即數(shù)為50H操作數(shù)地址尋址操作數(shù)地址尋址特殊功能寄存器特殊功能寄存器(SFR)尋址尋址:指令中的8位立即數(shù)對(duì)內(nèi)存中的特殊功能寄存器(SFR)區(qū)域進(jìn)行尋址,尋址區(qū)間為FF00H到FFCFH以及FFE0H到FFFFH區(qū)間共240字節(jié)操作數(shù)格式MOV PM0, A; 選擇PM0作為sfr操作數(shù)地址尋址操作數(shù)地址尋址寄存器間接尋址寄存器間接尋址:對(duì)操作數(shù)寄存器對(duì)的內(nèi)容進(jìn)行尋址。由寄存器組選擇標(biāo)志(RBS0和RBS1)和指令碼中的寄存器對(duì)說(shuō)明,定義需

6、要訪問(wèn)的寄存器對(duì)【操作數(shù)格式】MOV A, DE; 選擇DE寄存器對(duì)作為操作數(shù)操作數(shù)地址尋址操作數(shù)地址尋址基址尋址基址尋址:將8位立即數(shù)加到HL寄存器對(duì)中, HL寄存器對(duì)作為基地址寄存器,根據(jù)相加結(jié)果尋址。需要訪問(wèn)的HL寄存器對(duì)屬于由寄存器組選擇標(biāo)志(RBS0和RBS1)確定的寄存器組。通過(guò)將偏移量擴(kuò)展為16位正數(shù),來(lái)完成加法操作,進(jìn)位忽略。該尋址方式可對(duì)整個(gè)內(nèi)存空間進(jìn)行【操作數(shù)格式】MOV A, HL+10H; byte的值為10H操作數(shù)地址尋址操作數(shù)地址尋址基址變址尋址基址變址尋址:將B或C寄存器的內(nèi)容加到HL寄存器中,HL寄存器作為基地址寄存器,并根據(jù)相加結(jié)果尋址。需要訪問(wèn)的HL、B和C

7、寄存器屬于由寄存器組選擇標(biāo)志(RBS0和RBS1)確定的寄存器。通過(guò)將B或C寄存器擴(kuò)展為一個(gè)16位的正數(shù)來(lái)完成加法運(yùn)算,進(jìn)位忽略。該尋址方式可對(duì)整個(gè)內(nèi)存空間進(jìn)行操作數(shù)格式MOV A, HL+B操作數(shù)地址尋址操作數(shù)地址尋址堆棧尋址堆棧尋址:根據(jù)堆棧指針(SP)的內(nèi)容對(duì)堆棧區(qū)域進(jìn)行間接尋址。當(dāng)執(zhí)行PUSH, POP, 子程序調(diào)用和RETURN指令時(shí),或者根據(jù)中斷請(qǐng)求產(chǎn)生對(duì)寄存器進(jìn)行設(shè)置或復(fù)位時(shí),將自動(dòng)采用這種尋址方式。該方式僅對(duì)內(nèi)部高速RAM區(qū)域進(jìn)行尋址操作數(shù)地址尋址操作數(shù)地址尋址指令系統(tǒng)按照功能分指令系統(tǒng)按照功能分 數(shù)據(jù)傳送類指令 算術(shù)運(yùn)算類指令 邏輯運(yùn)算類指令 循環(huán)操作類指令 無(wú)條件轉(zhuǎn)移類指令

8、 條件轉(zhuǎn)移類指令 位操作類指令 調(diào)用及返回類指令 CPU 控制類指令指令系統(tǒng)指令系統(tǒng)在每種指令的“操作數(shù)”欄列出操作數(shù)。如果有兩種或兩種以上的標(biāo)識(shí)方法,可選其中之一大寫字母和符號(hào)#、!、$ 、 是關(guān)鍵字,必須按其原樣書寫 #: 立即數(shù)標(biāo)識(shí) !: 絕對(duì)地址標(biāo)識(shí) $: 相對(duì)地址標(biāo)識(shí) :間接地址標(biāo)識(shí)立即數(shù)用來(lái)描述一個(gè)數(shù)值型數(shù)據(jù)或標(biāo)志。當(dāng)使用標(biāo)志時(shí),注意必須加上符號(hào)#, !, $, 和 。操作數(shù)寄存器標(biāo)識(shí)符r 和rp、功能名稱(X, A, C, etc.)或絕對(duì)名稱(R0, R1,R2 等)都可用于標(biāo)識(shí)操作數(shù)標(biāo)識(shí)符和標(biāo)識(shí)方法操作數(shù)標(biāo)識(shí)符和標(biāo)識(shí)方法操作數(shù)標(biāo)識(shí)符和標(biāo)識(shí)方法操作數(shù)標(biāo)識(shí)符和標(biāo)識(shí)方法數(shù)據(jù)傳送類指

9、令數(shù)據(jù)傳送類指令MOV,MOVW,XCH,XCHW,PUSH,POPMOV:8位數(shù)據(jù)操作指令; MOVW:16位數(shù)據(jù)操作指令指令操作不影響標(biāo)志位數(shù)據(jù)交換指令數(shù)據(jù)交換指令XCH:8位數(shù)據(jù)操作指令, XCHW:16位數(shù)據(jù)操作指令指令操作不影響標(biāo)志位堆棧操作指令堆棧操作指令PUSH,POP:16位數(shù)據(jù)操作指令指令系統(tǒng)指令系統(tǒng)算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令A(yù)DD,ADDC,ADDW,SUB,SUBC,SUBW,CMP,CMPW,MULU,DIVUW,INC,INCW,DEC,DECW,ADJBA,ADJBS乘法指令乘法指令:MULU:將A 寄存器的內(nèi)容與源操作數(shù)進(jìn)行無(wú)符號(hào)乘法運(yùn)算,結(jié)果存于AX 寄存器中除法

10、指令除法指令:DIVUW:目標(biāo)操作數(shù)的內(nèi)容除以AX寄存器的內(nèi)容,商和余數(shù)分別存放在AX寄存器和目標(biāo)操作數(shù)中。除法運(yùn)算是將AX寄存器內(nèi)容和目標(biāo)操作數(shù)內(nèi)容看成無(wú)符號(hào)數(shù)。但當(dāng)目標(biāo)操作數(shù)為0時(shí),則將X寄存器的內(nèi)容存于C寄存器中,并將AX的內(nèi)容設(shè)置為0FFFFH指令系統(tǒng)指令系統(tǒng)比較指令比較指令 CMP:8位操作,修改Z、AC和CY標(biāo)志位 CMPW:16位操作,修改Z和CY標(biāo)志增增1 1/減減1 1指令指令 INC、 DEC :8位操作。目標(biāo)操作數(shù)增加1/減1 INCW、 DECW :目標(biāo)操作數(shù)加1 /減1指令系統(tǒng)指令系統(tǒng)BCD碼碼 調(diào)整指令調(diào)整指令 ADJBA:將A寄存器、CY標(biāo)志以及AC標(biāo)志的內(nèi)容按十

11、進(jìn)制進(jìn)行調(diào)整。僅在進(jìn)行BCD數(shù)據(jù)相加,且相加結(jié)果在A寄存器中時(shí),該指令有效,影響Z標(biāo)志指令系統(tǒng)指令系統(tǒng) ADJBS:將A 寄存器、CY 標(biāo)志以及AC 標(biāo)志的內(nèi)容按十進(jìn)制進(jìn)行調(diào)整。僅在進(jìn)行BCD數(shù)據(jù)相減,且相減結(jié)果存在A 寄存器中時(shí),有意義。如果調(diào)整結(jié)果的A 寄存器內(nèi)容為0,則將Z 標(biāo)志設(shè)置為1,否則將Z 標(biāo)志清零邏輯運(yùn)算指令邏輯運(yùn)算指令指令為8 位操作指令,AND,OR,XOR指令系統(tǒng)指令系統(tǒng)移位操作指令移位操作指令指令是8 位操作指令,ROR,ROL,RORC,ROLC,ROR4和ROL4ROR ROLRORC ROLC指令系統(tǒng)指令系統(tǒng)ROL4ROR4:A寄存器的低4位和目標(biāo)操作數(shù)的兩個(gè)數(shù)位

12、(4位數(shù)據(jù))向右循環(huán)移位。A寄存器的高4位保持不變ROR4ROR4HL無(wú)條件轉(zhuǎn)移指令無(wú)條件轉(zhuǎn)移指令BR:無(wú)條件轉(zhuǎn)移指令。將目標(biāo)地址操作數(shù)傳送到PC 中,并轉(zhuǎn)向該地址BR AX ;將AX寄存器的內(nèi)容作為轉(zhuǎn)移地址條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令包括:BC,BNC,BZ,BNZ,BT,BF,BTCLR,DBNZBC:當(dāng)CY = 1時(shí),程序轉(zhuǎn)移到操作數(shù)所規(guī)定的地址處; BNC:當(dāng)CY = 0時(shí),程序轉(zhuǎn)移到操作數(shù)所規(guī)定的地址處BZ:當(dāng)Z = 1時(shí),程序轉(zhuǎn)移到操作數(shù)所規(guī)定的地址處;BNZ:當(dāng)Z = 0時(shí),程序轉(zhuǎn)移到操作數(shù)所規(guī)定的地址處指令系統(tǒng)指令系統(tǒng) BT:如果第一操作數(shù)(位)的內(nèi)容為1,則程序轉(zhuǎn)移到

13、第二操作數(shù)($addr16)所規(guī)定的地址處 BF:如果第一操作數(shù)(位)的內(nèi)容為零,則程序轉(zhuǎn)移到第二操作數(shù)($addr16)所規(guī)定的地址處 BTCLR:如果第一操作數(shù)(位)的內(nèi)容為1,則將它們清零,并轉(zhuǎn)移到第二操作數(shù)($addr16)所規(guī)定的地址處。如果第一操作數(shù)(位)是PSW.bit,則將相應(yīng)標(biāo)志位清零 DBNZ:第一操作數(shù)所規(guī)定的目標(biāo)操作數(shù)減1,相減結(jié)果存于目標(biāo)操作數(shù)中。如果相減結(jié)果不等于0,則程序轉(zhuǎn)移到第二操作數(shù)($addr16)所指的地址處。如果相減結(jié)果等于0,直接執(zhí)行后續(xù)指令指令系統(tǒng)指令系統(tǒng)位操作指令位操作指令位操作指令包括:MOV1,AND1,OR1,XOR1,SET1,CLR1,N

14、OT1MOV1:將源操作數(shù)的位數(shù)據(jù)傳送給目標(biāo)操作數(shù)AND1:CY標(biāo)志和源操作數(shù)進(jìn)行位邏輯與運(yùn)算,結(jié)果存于CY標(biāo)志中OR1: CY標(biāo)志和源操作數(shù)進(jìn)行位邏輯或運(yùn)算,結(jié)果存于CY標(biāo)志中XOR1:CY標(biāo)志和源操作數(shù)進(jìn)行位邏輯異或運(yùn)算,結(jié)果存于CY標(biāo)志中SET1:將目標(biāo)操作數(shù)設(shè)置為1CLR1:將目標(biāo)操作數(shù)清零NOT1:CY標(biāo)志的內(nèi)容取反指令系統(tǒng)指令系統(tǒng)示例示例MOV1 P3.4, CY ;將CY的內(nèi)容傳送到端口3的第4位AND1 CY, FE7FH.3 ;FE7FH的第3位與CY進(jìn)行邏輯與OR1 CY, P2.5 ;端口2的第5位與CY進(jìn)行邏輯或XOR1 CY, A.7 ;A寄存器的第7位與CY進(jìn)行異或

15、SET1 FE55H.1 ;將FE55H的第1位設(shè)置為1CLR1 P3.7 ;將端口3的第7位清零NOT1 CY ;CY標(biāo)志的內(nèi)容取反指令系統(tǒng)指令系統(tǒng)調(diào)用和返回指令調(diào)用和返回指令包括:CALL,CALLF,CALLT,BRK,RET,RETI,TETBCALL:子程序調(diào)用指令,采用16位絕對(duì)尋址或寄存器間接尋址 CALLF:程序調(diào)用指令,調(diào)用的地址范圍為0800H 至0FFFHCALLT:查找調(diào)用表,轉(zhuǎn)到調(diào)用表字?jǐn)?shù)據(jù)所指示的地址(地址的高8位固定為00000000B,隨后5位由addr5規(guī)定)BRK:軟件中斷指令。將PSW和下一條指令地址(PC+1)存于堆棧中,然后將IE標(biāo)志清零,屏蔽向量中斷

16、。將存儲(chǔ)的數(shù)據(jù)轉(zhuǎn)向由向量地址(003EH)處的字?jǐn)?shù)據(jù)所指的地址。RETB指令用于從該指令產(chǎn)生的軟件向量中斷處返回 RET:返回指令,是從CALL, CALLF和CALLT指令所執(zhí)行的子程序調(diào)用處返回指令系統(tǒng)指令系統(tǒng)RETI:向量中斷返回指令。將存于堆棧的字?jǐn)?shù)據(jù)返回到PC和PSW中,程序從中斷服務(wù)子程序處返回。不能用于BRK指令的返回。執(zhí)行RETI指令可將NMIS標(biāo)志清零RETB:BRK指令產(chǎn)生的軟中斷返回指令指令系統(tǒng)指令系統(tǒng)CPU 控制指令控制指令包括:SEL RBn,NOP,EI,DI,HALT,STOP SEL RBn:由操作數(shù)(RBn)規(guī)定的寄存器組在下一條指令和后續(xù)指令中使用。RBn的

17、范圍從RB0到RB3 NOP:僅僅消耗時(shí)間,不作任何處理 EI:開(kāi)中 DI:關(guān)中 HALT:設(shè)置HALT模式 STOP:設(shè)置STOP 模式指令系統(tǒng)指令系統(tǒng)匯編程序基本結(jié)構(gòu)匯編程序基本結(jié)構(gòu) 78K系列微處理器使用RA78K0(匯編包)將源程序轉(zhuǎn)換為機(jī)器語(yǔ)言 RA78K0包括7個(gè)程序:結(jié)構(gòu)化匯編預(yù)處理程序、匯編程序、連接程序、目標(biāo)代碼轉(zhuǎn)換程序、庫(kù)、列表轉(zhuǎn)換程序和項(xiàng)目管理器PMplus 項(xiàng)目管理器PM plus執(zhí)行一系列操作:編輯、編譯/裝配、連接和調(diào)試等 基于模塊的設(shè)計(jì)方法通常將一個(gè)源程序分為多個(gè)模塊,每個(gè)源程序模塊應(yīng)該按照有關(guān)格式編寫,才可以傳送給匯編程序,匯編成目標(biāo)代碼1. 模塊頭(可以省略)

18、2. 模塊體3. 模塊尾匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)模塊頭模塊頭:可以使用的控制語(yǔ)句如下表匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)模塊體模塊體:可以使用所有其他的偽指令、控制命令及指令系統(tǒng)中的所有指令。模塊體必須用段來(lái)描述,可以使用下列4 種段描述模塊體:代碼段必須用CSEG 定義數(shù)據(jù)段必須用DSEG 定義位段必須用BSEG 定義絕對(duì)段用ORG 定義,或者用AT 指令重定位使用CSEG, DSEG, 或BSEG 定義的段數(shù)據(jù)段必須在代碼段之前定義模塊尾模塊尾:使用END 偽指令描述模塊的結(jié)束匯編語(yǔ)句的格式匯編語(yǔ)句的格式符號(hào)和助記符之間必須根據(jù)助記符的種類選用冒號(hào)、1 個(gè)或幾個(gè)空格或制表符隔開(kāi)助記符

19、和操作數(shù)之間必須用1 或幾個(gè)空格或制表符隔開(kāi),有些指令沒(méi)有操作數(shù)注釋必須用分號(hào)隔開(kāi),注釋可有可無(wú)每行必須用CR定界匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)符號(hào)的類型符號(hào)的類型CODE01 CSEG ; “CODE01”是一個(gè)段名VAR01 EQU 10H ; “VAR01” 是一個(gè)(常量的)名字LAB01: DW 0 ; “LAB01” 是一個(gè)標(biāo)號(hào)NAME SAMPLE ; “SAMPLE” 是一個(gè)模塊名MAC1 MACRO ; “MAC1”是一個(gè)宏名匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)助記符助記符助記符:可以是指令、偽指令或宏引用操作數(shù)操作數(shù)操作數(shù)是指令、偽指令或宏引用操作的數(shù)據(jù)根據(jù)不同的指令、偽指令或

20、宏引用,操作數(shù)區(qū)可以有1 個(gè)或2 個(gè)操作數(shù),也可以沒(méi)有操作數(shù),如果有兩個(gè)操作數(shù)時(shí),用逗號(hào)隔開(kāi)操作數(shù)主要類型操作數(shù)主要類型 常數(shù)(數(shù)據(jù)和字符串常數(shù))、 字符串、 寄存器名、 特殊字符($, #, !, and )、段定義偽指令的重定位屬性名、符號(hào)、表達(dá)式和位操作類型的操作數(shù)匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)二進(jìn)制(后綴B或Y)、八進(jìn)制(后綴O或Q)、十進(jìn)制(后綴D或T,或沒(méi)有后綴)、十六進(jìn)制(后綴H )、ASCII 碼 (使用一對(duì)單引號(hào),例如a代表65H)特殊字符特殊字符$ :表示指令的地址(多字節(jié)指令時(shí)代表這個(gè)地址的第一個(gè)字節(jié));是一個(gè)分支指令的相對(duì)尋址模式! :表示一個(gè)分支指令的絕對(duì)尋址模式#

21、 :表示立即數(shù) :表示間接尋址表達(dá)式和運(yùn)算符表達(dá)式和運(yùn)算符 HIGH 運(yùn)算符:返回該數(shù)據(jù)的高8位數(shù)值 LOW 運(yùn)算符:返回該數(shù)據(jù)的低8位數(shù)值MOV A,#HIGH 1234H MOV A,#12H匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)DATAPOS 運(yùn)算符:返回一個(gè)位符號(hào)的地址部分(字節(jié)地址)SYM EQU 0FE68H.6 ;用EQU定義“SYM”0FE68H.6MOV A,!DATAPOS SYM MOV A, !0FE68HBITPOS 運(yùn)算符:返回一個(gè)位符號(hào)的位部分(位位置)SYM EQU 0FE68H.6CLR1 HL.BITPOS SYM CLR1 HL.6匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)

22、計(jì)運(yùn)算符的優(yōu)先順序運(yùn)算符的優(yōu)先順序匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)匯編偽指令匯編偽指令偽指令不生成機(jī)器代碼,主要作用是: 便于描述匯編源程序、 初始化存儲(chǔ)區(qū)及預(yù)留存儲(chǔ)區(qū)、 為匯編程序及連接器進(jìn)行特定處理時(shí)提供所需要的信息匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)段定義方法及對(duì)應(yīng)的存儲(chǔ)區(qū)段定義方法及對(duì)應(yīng)的存儲(chǔ)區(qū)代碼段定位偽指令代碼段定位偽指令CALLT0:段的起始地址是偶地址,且位于0040H007FH。為代碼段指定被1字節(jié)指令CALLT 調(diào)用的子程序入口地址FIXED:段的起始地址位于0800H0FFFH。為代碼段指定被2 字節(jié)指令CALLF 調(diào)用的子程序的入口地址AT:指定一個(gè)段的絕對(duì)地址。地址范圍為

23、0000HFEFFHUNIT:定義段地址可以位于0080HFA7FH 的任何位置匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)UNITP:段地址可在0080HFA7FH 的任何位置,并且起始地址為偶數(shù)地址IXRAM:定義段地址位于內(nèi)部擴(kuò)展RAMSECUR_ID:為專用的安全I(xiàn)D 指定段地址為0085H008EH。這個(gè)位置只能用于存放安全I(xiàn)D數(shù)據(jù)段常用定位偽指令數(shù)據(jù)段常用定位偽指令SADDR:段地址位于saddr(0FE20H0FEFFH)區(qū)SADDRP:段地址位于saddr(0FE20H0FEFFH)區(qū),起始地址為偶數(shù)地址。使用SADDR和SADDRP定義變量時(shí),變量的定位范圍不可以超出這個(gè)固定的區(qū)域,否則

24、將產(chǎn)生溢出錯(cuò)誤AT:指定一個(gè)絕對(duì)地址UNIT:缺省設(shè)置。指定段地址可以位于RAM的任何位置UNITP: 段地址可以位于RAM的任何位置,始地址為偶數(shù)地址IHRAM:段地址位于高速RAM匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)LRAM:段地址位于低速RAMDSPRAM:段地址位于顯示RAMIXRAM:段地址位于內(nèi)部擴(kuò)展RAM位單元段常用定位偽指令位單元段常用定位偽指令A(yù)T:用一個(gè)絕對(duì)地址的第0 位指定一個(gè)位單元段的起始地址。地址范圍0FE20H0FEFFHUNIT:缺省設(shè)置。段地址位于0FE20H0FEFFH 的任何位置ORG 偽指令:把表達(dá)式確定的值賦給程序計(jì)數(shù)器,遇到一個(gè)段定義偽指令(CSEG, D

25、SEG, BSEG, 或ORG)或END 偽指令為止格式:符號(hào) ORG 表達(dá)式;注釋匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)EQU 偽指令: 把表達(dá)式的值賦給前面的名字。該名字不可以在程序的其他位置再次定義。表達(dá)式中使用的符號(hào)必須是已經(jīng)定義過(guò)的符號(hào)格式:名字EQU 表達(dá)式;注釋SET 偽指令:把表達(dá)式的值賦給前面的名字。該名字可以在程序的其他位置以同樣方法再次定義。由該表達(dá)式確定的名字?jǐn)?shù)值在再次被定義前都是有效的。表達(dá)式中使用的符號(hào)必須是已經(jīng)定義過(guò)的符號(hào)格式:名字SET 絕對(duì)表達(dá)式;注釋匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)存儲(chǔ)區(qū)初始化及預(yù)留定義偽指令存儲(chǔ)區(qū)初始化及預(yù)留定義偽指令DB 偽指令:初始化一個(gè)字節(jié)

26、區(qū)域格式:標(biāo)號(hào): DB (大小) 初始值,. ;注釋DW 偽指令:初始化一個(gè)字區(qū)域格式:標(biāo)號(hào): DW (大小) 初始值,. ;注釋DS 偽指令:預(yù)留字節(jié)存儲(chǔ)區(qū),預(yù)留數(shù)量由絕對(duì)表達(dá)式確定格式:標(biāo)號(hào): DS 絕對(duì)表達(dá)式;注釋DBIT 偽指令:在位單元段預(yù)留一個(gè)位存儲(chǔ)單元格式:名字 DBIT ;注釋匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)目標(biāo)模塊名字聲明偽指令目標(biāo)模塊名字聲明偽指令NAME 偽指令:為目標(biāo)模塊分配一個(gè)由匯編程序輸出的目標(biāo)模塊名格式:標(biāo)號(hào): NAME 目標(biāo)模塊名;注釋自動(dòng)分支指令選擇偽指令自動(dòng)分支指令選擇偽指令BR 偽指令:根據(jù)分支的目的地址范圍自動(dòng)地選擇2 字節(jié)或3 字節(jié)的分支指令,并產(chǎn)生相

27、應(yīng)的目標(biāo)代碼格式:標(biāo)號(hào): BR 表達(dá)式;注釋匯編結(jié)束偽指令匯編結(jié)束偽指令END 偽指令:用于結(jié)束源程序模塊的結(jié)束格式: END ;注釋宏偽指令宏偽指令宏的基本功能是使用一個(gè)名字實(shí)現(xiàn)子程序的功能。可以避免代碼重復(fù)MCRO 偽指令格式:宏名: MACRO 形參, ;注釋宏體ENDM ;注釋LOCAL 偽指令:說(shuō)明定義的符號(hào)是只在宏體中有效的本地符號(hào)格式:LOCAL 符號(hào)名, ;注釋匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)REPT 偽指令:重復(fù)執(zhí)行由REPT-ENDM定義的一串指令,重復(fù)的次數(shù)由表達(dá)式的值確定格式:標(biāo)號(hào): REPT 絕對(duì)表達(dá)式;注釋ENDM ;注釋IRP(不定次數(shù)的重復(fù)) 偽指令:重復(fù)執(zhí)行由

28、IRP-ENDM定義的一串指令,當(dāng)用實(shí)參替換形參時(shí),重復(fù)的次數(shù)由實(shí)參的值確定格式:標(biāo)號(hào): IRP 形參, ;注釋ENDM ;注釋匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)EXITM(退出宏) 偽指令:用于從MACRO偽指令定義的宏體和REPT-ENDM 或IRP-ENDM定義的重復(fù)模塊中強(qiáng)制退出格式:標(biāo)號(hào): EXITM ;注釋ENDM(宏結(jié)束) 偽指令:用于結(jié)束宏定義的指令執(zhí)行格式: ENDM ;注釋匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)匯編程序結(jié)構(gòu)舉例匯編程序結(jié)構(gòu)舉例:十六進(jìn)制- ASCII碼的代碼轉(zhuǎn)換程序?qū)懢彌_區(qū)的程序設(shè)計(jì)寫緩沖區(qū)的程序設(shè)計(jì)DISP_byte_write1:MOVW HL,#DISP_buffer ;緩沖區(qū)首地址入HLMOV A,!M_LCD_WORK ;要寫入的數(shù)據(jù)低位入AMOV HL+B,A ;寫入INC B ;偏移地址加1MOV A,!M_LCD_WORK+1 ;要寫入的數(shù)據(jù)高位入AMOV HL+B,A ;寫入MOV A,BMOV !M_LCD_SET,A ;保存偏移地址RET鍵盤掃描中斷處理程序鍵盤掃描中斷處理程序;名稱:Keyscan,功能:Key Scan 中斷處理程序,內(nèi)部參數(shù):KSF : Key Scan Fl

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論