飛思卡爾8位單片機MC9S08+05+HC08+CPU與匯編基礎(chǔ).ppt_第1頁
飛思卡爾8位單片機MC9S08+05+HC08+CPU與匯編基礎(chǔ).ppt_第2頁
飛思卡爾8位單片機MC9S08+05+HC08+CPU與匯編基礎(chǔ).ppt_第3頁
飛思卡爾8位單片機MC9S08+05+HC08+CPU與匯編基礎(chǔ).ppt_第4頁
飛思卡爾8位單片機MC9S08+05+HC08+CPU與匯編基礎(chǔ).ppt_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第五章 HC08 CPU與匯編基礎(chǔ),主要內(nèi)容 HC08 CPU基本構(gòu)成 尋址方式 指令系統(tǒng) HCS08 CPU與HC08 CPU的比較 08匯編語言基礎(chǔ),嵌入式應(yīng)用技術(shù)基礎(chǔ)教程課件,5.1 HC08 CPU基本構(gòu)成,5.1 HC08 CPU基本構(gòu)成,M68HC08系列單片機的各種型號的CPU均使用HC08 CPU,有時也將HC08 CPU稱為CPU08,它具有如下主要特點: 目標代碼與M68HC05系列單片機向上兼容; 具有16位堆棧指針SP; 具有16位變址寄存器HX; 8MHz CPU內(nèi)部總線頻率; 64KB程序/數(shù)據(jù)存儲器空間; 16種尋址方式; 不經(jīng)過累加器A的存儲器之間數(shù)據(jù)直接傳送;

2、 快速8位8位乘法指令、快速16位與8位相除指令,增強的BCD指令; 模塊化結(jié)構(gòu),可擴展的內(nèi)部總線定義可使尋址范圍超過64KB; 低功耗的STOP、WAIT模式。,嵌入式應(yīng)用技術(shù)基礎(chǔ)教程課件,5.1 HC08 CPU基本構(gòu)成,HC08 CPU中有5個寄存器:,嵌入式應(yīng)用技術(shù)基礎(chǔ)教程課件,(1)累加器A(Accumulator) 累加器A是8位通用寄存器,用來存放操作數(shù)和運算結(jié)果。數(shù)據(jù)讀取時,累加器A用于存放從存儲器讀出的數(shù)據(jù);數(shù)據(jù)寫入時,累加器A用于存放準備寫入存儲器的數(shù)據(jù)。在執(zhí)行算術(shù)、邏輯操作時,累加器首先存放一個操作數(shù),執(zhí)行完畢時累加器存放操作結(jié)果。累加器A是指令系統(tǒng)中最靈活的一個寄存器,

3、各種尋址方式均可對之尋址。復(fù)位時,累加器的內(nèi)容不受影響。,5.1 HC08 CPU基本構(gòu)成,(2)變址寄存器HX(Index Register),嵌入式應(yīng)用技術(shù)基礎(chǔ)教程課件,HC08 CPU的變址寄存器HX是16位寄存器,H是高8位,X是低8位,可單獨使用。變址寄存器HX主要用于變址尋址方式中確定操作數(shù)的地址,也可以用來存放臨時數(shù)據(jù),作為一般寄存器使用。復(fù)位時,高8位被清零。 (3)堆棧指針SP(Stack Pointer) SP是指向下一個棧地址的16位寄存器,堆棧指針SP采用遞減的結(jié)構(gòu),即進棧時SP減1,出棧時SP加1。復(fù)位時,SP的初值為$00FF(前置符號$表示十六進制數(shù),下同)。棧指

4、針復(fù)位指令(RSP)可將SP的低8位置為$FF,而不影響高8位。 在堆棧指針作為8位或16位的偏移量尋址方式中,SP充當變址寄存器功能,CPU利用SP的內(nèi)容確定操作數(shù)的條件地址。,5.1 HC08 CPU基本構(gòu)成,(4)程序計數(shù)器PC(Program Counter),嵌入式應(yīng)用技術(shù)基礎(chǔ)教程課件,程序計數(shù)器PC也是16位的,可尋址范圍達64KB。PC存放下一條指令的地址,在執(zhí)行轉(zhuǎn)移指令時存放轉(zhuǎn)移地址,在執(zhí)行中斷指令時存放中斷子程序入口地址。復(fù)位時,程序計數(shù)器PC裝入地址$FFFE和$FFFF中的內(nèi)容。一般地,地址$FFFE和$FFFF中的內(nèi)容是復(fù)位的入口地址,這樣,復(fù)位后,程序能夠從復(fù)位入口地

5、址開始執(zhí)行程序。復(fù)位入口地址也稱復(fù)位向量地址或復(fù)位矢量地址(Reset vector address),意味著復(fù)位狀態(tài)過后,PC指向該處,從這里執(zhí)行程序。 (5)條件碼寄存器CCR(Condition Code Register) 條件碼寄存器CCR是8位的寄存器(見圖5-1),其中5位(除了中斷屏蔽位I)用于指示剛執(zhí)行完指令的結(jié)果狀態(tài),這些位可由程序來測試。第6位(D6)和第5位(D5)永遠為1,其余位有具體的含義。,5.1 HC08 CPU基本構(gòu)成,HC08 CPU的寄存器,嵌入式應(yīng)用技術(shù)基礎(chǔ)教程課件,返回,5.2 尋址方式,5.2 尋址方式,(1)內(nèi)在尋址方式(INH,Inherent

6、addressing mode) 內(nèi)在尋址,是指那些在指令中已經(jīng)包含了操作數(shù)所在之處。內(nèi)在尋址的指令是沒有明確指出操作數(shù)的指令,操作數(shù)由指令隱含,且為單字節(jié)指令。這類指令只是執(zhí)行內(nèi)在的數(shù)據(jù)操作。例如累加器加1指令I(lǐng)NCA、中斷返回指令RTI、停止指令STOP和置進位標志SEC等。 (2)立即尋址方式(IMM,Immediate addressing mode) 立即尋址,是在指令中直接給出操作數(shù)。這種指令是雙字節(jié)指令,第一個字節(jié)是操作碼,第二個字節(jié)是參與操作的立即數(shù)。立即尋址指令通常是對立即數(shù)和累加器內(nèi)容或變址寄存器內(nèi)進行操作。下述指令屬于IMM尋址方式。 LDA #$FC ; 把十六進制數(shù)$

7、FC放入累加器A中,嵌入式應(yīng)用技術(shù)基礎(chǔ)教程課件,5.2 尋址方式,(3)直接尋址方式(DIR,Direct addressing mode),直接尋址指令,字長二字節(jié),它可以對存儲器的起始256個地址($0000$00FF,叫內(nèi)存直接頁或內(nèi)存第0頁)進行訪問。指令的第一個字節(jié)是操作碼,第二個字節(jié)是操作數(shù)地址。在直接尋址中,CPU自動把$00作為操作數(shù)高位地址,第二個字節(jié)作為操作數(shù)的低位地址,其尋址范圍為$0000$00FF。下述指令屬于DIR尋址方式。 LDA $60 ;將存儲單元$60中的數(shù)取至累加器A BRSET和BRCLR是2條很特別的3字節(jié)指令,它們用直接尋址方式取得操作數(shù),用相對尋址

8、方式指明轉(zhuǎn)移目的地址。例如: BRCLR 3,$50,A1 ;若存儲單元$50的第3位=0則轉(zhuǎn)至標號A1處 BRSET 3,$50,A1 ;若存儲單元$50的第3位=1則轉(zhuǎn)至標號A1處,嵌入式應(yīng)用技術(shù)基礎(chǔ)教程課件,5.2 尋址方式,(4)擴展尋址方式(EXT,Extended addressing mode),擴展尋址指令是三字節(jié)指令,可訪問存儲器中的任何地址。在這種指令中,第一個字節(jié)是操作碼,第二個字節(jié)是操作數(shù)的高字節(jié)地址,第三個字節(jié)是低字節(jié)地址。擴展尋址是相對于直接尋址方式而言的,其尋址范圍為$0000$FFFF,比直接尋址范圍大得多。下述指令屬于EXT尋址方式,因為它的地址已經(jīng)超過了DI

9、R尋址方式的范圍。 LDA $023D ;將存儲單元$023D中的數(shù)取至累加器A (5)無偏移量變址方式(IX,Indexed, no offset addressing mode) 無偏移量變址的指令是單字節(jié)指令。在這種指令中,變址寄存器HX中的內(nèi)容是操作數(shù)的地址。所以無偏移量變址指令可以對$0000$FFFF地址進行尋址。下述指令屬于IX尋址方式。 LDA ,X ;從變址寄存器HX指向的存儲器單元中取數(shù)到累加器A中 COM ,X ;將變址寄存器HX指向的存儲單元數(shù)據(jù)取反,嵌入式應(yīng)用技術(shù)基礎(chǔ)教程課件,5.2 尋址方式,(6)八位偏移量變址方式(IX1,Indexed,8-bit offset

10、 addressing mode),8位偏移量變址是雙字節(jié)指令,CPU把變址寄存器HX的內(nèi)容和指令第二個字節(jié)內(nèi)容相加,其和便是操作數(shù)地址。下述指令屬于IX1尋址方式。 STA $80,X ;將A中的數(shù)存至地址為HX+$80的存儲器單元中 INC $80,X ;將地址為HX+$80的存儲器單元的內(nèi)容加1 (7)十六位偏移量變址方式(IX2,Indexed,16-bit offset addressing mode) 該變址方式指令是三字節(jié)指令,可訪問存儲器的任何地址。CPU將變址寄存器HX的內(nèi)容與指令的第二、三字節(jié)相加,和為操作地址。在第二、三字節(jié)中,第二字節(jié)是高位地址,第三字節(jié)是低位地址。下述

11、指令屬于IX2尋址方式。 STA $280,X ;把A中的數(shù)存放到以HX+$280為地址的存儲單元中 INC $280,X ;把以HX+$280為地址的存儲器單元的內(nèi)容加1,嵌入式應(yīng)用技術(shù)基礎(chǔ)教程課件,5.2 尋址方式,(8)相對變址尋址方式(REL,Relative addressing mode),相對變址只用于轉(zhuǎn)移指令。當轉(zhuǎn)移條件滿足時,CPU將指令中的偏移量和程序計數(shù)器 PC的內(nèi)容相加,得出轉(zhuǎn)移的目的地址。如果轉(zhuǎn)移條件不滿足,則CPU執(zhí)行下一條指令。轉(zhuǎn)移指令中的偏移量是帶符號的,且用一字節(jié)表示,因此轉(zhuǎn)移指令的偏移量為-127+128。偏移量用二進制補碼表示。相對變址轉(zhuǎn)移指令的轉(zhuǎn)移范圍在

12、下一條指令地址的-127+128之間。下述指令屬于REL尋址方式。 BRA A1 ;無條件轉(zhuǎn)向標號A1處執(zhí)行 BSR L1 ;調(diào)用標號L1處的子程序 特別說明:以上8種尋址方式在M68HC05系列中也具有,以下8種為M68HC08系列單片機新增的尋址方式,其中912為存儲器到存儲器的數(shù)據(jù)傳送尋址方式,1314是含有加1的變址尋址,1516為堆棧尋址。,嵌入式應(yīng)用技術(shù)基礎(chǔ)教程課件,5.2 尋址方式,(9)存儲器:直接地址直接地址尋址方式(DD, Direct to direct addressing Mode),在存儲器的四種數(shù)據(jù)直接傳送的尋址方式中,欲傳送的數(shù)據(jù)直接從源存儲單元送向目的存儲單元

13、,勿需寄存器中轉(zhuǎn)。在本尋址方式中,源地址與目標地址由指令直接給出。只有一條指令為DD尋址方式: MOV N1,N2 ;把內(nèi)存變量N1賦值給內(nèi)存變量N2 等同于下列兩條指令,但上述指令不影響累加器A。 LDA N1 STA N2 等同于C語言語句: N2=N1; 特別說明:這里設(shè)N1、N2為內(nèi)存變量,下同。,嵌入式應(yīng)用技術(shù)基礎(chǔ)教程課件,5.2 尋址方式,(10)存儲器:直接地址變址、變址加1的尋址方式(DIX+,Direct to indexed with post increment addressing Mode),源地址為直接地址,目標地址在HX中。把源地址的數(shù)據(jù)存至目標地址后,HX+1H

14、X。僅有一條指令為DIX+尋址方式。 MOV $80,X+ ;($80)(HX),HX+1HX 等同于下列三條,但上述指令不影響累加器A,主要用于內(nèi)存或端口數(shù)據(jù)填充一個表格。 LDA $80 ;($80)A STA ,X ;A(HX) AIX #!1 ;HX+1HX 特別說明:操作說明欄中,($80)表示地址為$80的內(nèi)存單元內(nèi)容。(HX)表示地址為HX值的內(nèi)存單元。若內(nèi)存單元作為源操作數(shù),表示從該內(nèi)存單元中取數(shù),若內(nèi)存單元作為目的操作數(shù),表示將數(shù)存至該內(nèi)存單元。,嵌入式應(yīng)用技術(shù)基礎(chǔ)教程課件,5.2 尋址方式,(11)存儲器:立即數(shù)直接地址尋址方式(IMD,Immediate source t

15、o direct destination addressing Mode),該尋址方式,將立即數(shù)存入直接地址,指令給出的地址即作為目的地址,在指令書寫中,立即數(shù)位于直接地址之前,下述指令為IMD尋址方式。 MOV #!86,N1 ;將立即數(shù)!86賦值給內(nèi)存變量N1 等同于C語言語句: N1=86;,嵌入式應(yīng)用技術(shù)基礎(chǔ)教程課件,5.2 尋址方式,(12)存儲器:變址直接地址、變址加1的尋址方式(IX+D,Indexed with post increment to direct addressing Mode),HX為源地址,直接地址為目的地址,把源地址的數(shù)據(jù)存至目標地址后后,HX+1HX。僅有

16、一條指令為IX+D尋址方式。 MOV X+,$80 ;(HX)($80),HX+1HX 等同于下列三條指令,但上述指令不影響累加器A,主要用于向端口傳送內(nèi)存數(shù)據(jù)塊。 LDA ,X ;(HX)A STA $80 ;A($80) AIX #!1 ;HX+1HX,嵌入式應(yīng)用技術(shù)基礎(chǔ)教程課件,5.2 尋址方式,(13)無偏移量變址、變址加1尋址方式(IX+,Indexed,no offset, post increment addressing mode),在這種尋址方式與無偏移量變址尋址方式IX的區(qū)別在于,在本尋址方式中多了HX+1HX的操作。只有一條指令屬于IX+尋址方式,該指令先完成比較操作,但

17、不論條件是否滿足,均有HX+1HX。通常用于尋找一段存儲區(qū)中是否有與A中相等的數(shù)。 CBEQ X+,rel ;若A=(HX)則轉(zhuǎn)移,HX+1HX (14)八位偏移量變址、變址加1尋址方式(IX1+,Indexed, 8-bit offset, post increment addressing mode) 與上條指令的差別是:目的操作數(shù)的地址為8位直接地址+(HX),屬于IX+尋址方式的指令也只有一條。 CBEQ addr8,X+,rel ;若A=(HX+addr8)則轉(zhuǎn)移,HX+1HX,嵌入式應(yīng)用技術(shù)基礎(chǔ)教程課件,5.2 尋址方式,(15)八位偏移量堆棧尋址方式(SP1,Stack poin

18、ter,8-bit offset addressing mode),8位偏移量堆棧尋址,是將指令給出的8位直接地址與堆棧指針SP相加形成操作數(shù)的地址,下列指令屬于SP1尋址方式。 LDA !2,SP ;(2+SP) A (16)十六位偏移量堆棧尋址方式(SP2,Stack pointer,16-bit offset addressing mode) 16位偏移量堆棧尋址,將指令給出的16位直接地址與堆棧指針SP相加形成操作數(shù)的地址,下列指令屬于SP2尋址方式。 LDA $130,SP ;將地址$130+SP中的數(shù)取至A中 特別說明:實際編程時,程序員不必考慮8位偏移量堆棧尋址還是16位偏移量堆

19、棧尋址,匯編程序會自動識別,它們的主要區(qū)別在于匯編產(chǎn)生的指令長度不一樣。,嵌入式應(yīng)用技術(shù)基礎(chǔ)教程課件,返回,5.3 指令系統(tǒng),5.3 指令系統(tǒng),HC08 CPU指令簡表 :,嵌入式應(yīng)用技術(shù)基礎(chǔ)教程課件,5.3 指令系統(tǒng),HC08 CPU指令簡表(續(xù)):,嵌入式應(yīng)用技術(shù)基礎(chǔ)教程課件,5.3 指令系統(tǒng),5.3.1 數(shù)據(jù)傳送類指令,嵌入式應(yīng)用技術(shù)基礎(chǔ)教程課件,5.3.2 算術(shù)運算類指令 5.3.3 邏輯運算類指令 5.3.4 位操作類指令 5.3.5 移位類指令 5.3.6 程序控制類指令 5.3.7 其它指令,返回,5.4 HCS08 CPU與HC08 CPU的比較,5.4 HCS08 CPU與H

20、C08 CPU的比較,Freescale于2004年推出了08系列單片機的增強系列MCS08系列。MCS08系列單片機的內(nèi)核使用HCS08 CPU。與HC08 CPU相比,HCS08 CPU速度更快,內(nèi)部總線頻率由最高8MHz提高到20 MHz,即執(zhí)行一條基本指令的時間是50ns。 HCS08 CPU共有141條基本指令,比HC08 CPU增加了1條基本指令(即BGND這一條)。這141條基本指令加上尋址方式形成了280條具體指令,比HC08 CPU增加了10條具體指令。,嵌入式應(yīng)用技術(shù)基礎(chǔ)教程課件,5.4 HCS08 CPU與HC08 CPU的比較,HCS08 CPU比HC08 CPU增加的

21、指令如下:,(1)對LDHX指令,增加了EXT、IX、IX1、IX2、SP1尋址方式 指令 操作 尋址方式 LDHX addr16 (addr16: addr16+1)HX EXT LDHX ,X (HX:HX+1)HX IX LDHX addr16,X (addr16+HX: addr16+HX+1)HX IX2 LDHX addr8,X (addr8+HX: addr8+HX+1)HX IX1 LDHX addr8,SP (addr8+SP: addr8+SP+1)HX SP1 (2)對STHX、CPHX增加了EXT、SP1尋址方式 STHX addr16 HX(addr16: addr1

22、6+1) EXT STHX addr8,SP HX(addr8+SP: addr8+SP+1) SP1 CPHX addr16 HX-(addr16:addr16+1) EXT CPHX addr8,SP HX-(addr8+SP:addr8+SP+1) SP1 (3)增加了BGND(background)指令,用于調(diào)試 BGND 用于背景調(diào)試 INH,嵌入式應(yīng)用技術(shù)基礎(chǔ)教程課件,返回,5.4 HCS08 CPU與HC08 CPU的比較,5.5 08匯編語言基礎(chǔ),5.5.1 08匯編源程序格式 把匯編語言寫成的源程序“翻譯”成機器語言的工具叫匯編程序或編譯器(Assembler),以下統(tǒng)一稱作

23、編譯器。 匯編語言源程序可以用通用的文本編輯軟件書寫編輯,以ASCII碼形式存盤。具體的編譯器對匯編語言源程序的格式有一定的要求,同時,編譯器除了識別單片機的指令系統(tǒng)外,為了能夠正確地產(chǎn)生目標代碼以及方便匯編語言的編寫,編譯器還提供了一些在匯編時使用的命令、操作符號,在編寫匯編程序時,也必須正確使用它們。由于編譯器提供的指令僅是為了更好地做好“翻譯”工作,并不產(chǎn)生具體的機器指令,因此這些指令被稱為偽指令(Pseudo Instruction)。 匯編語言源程序以行為單位進行設(shè)計,每一行最多可以包含以下四個部分:,嵌入式應(yīng)用技術(shù)基礎(chǔ)教程課件,5.4 HCS08 CPU與HC08 CPU的比較,(1)標號(Labels),對于標號有下列要求及說明: 如果一個語句有標號,則標號必須從第一列開始書寫。 可以組成標號的字符有:字母AZ、數(shù)字09、下劃線“_”、美元符號“$”,但開頭的第一個符號不能為數(shù)字和$。 08編譯器不區(qū)分標號中字母的大小寫。 標號應(yīng)小于16個字符。 標號后可以帶冒號“:”,也可以不帶冒號。 一個標號在一個程序中只能定義一次,不能通過編譯。 若一行中第一個字符是星號“*”,這是標號,表明該行為注釋。 一行語句若只有標號,編譯器將把當前程序計數(shù)器的值賦

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論