版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
WIRELESSDIGITALFULL-DUPLEXVOICETRANSCEIVER
無(wú)線數(shù)字全雙工語(yǔ)音收發(fā)器TPA4861射頻切換開(kāi)關(guān)SW-438RF1020SE模塊是采用基于CC1020無(wú)線通信芯片的無(wú)線收發(fā)一體模塊,作為微功率無(wú)線模塊,直線通信距離可達(dá)600米左右。CC1020具有低電壓供電、低電流消耗、高靈敏度等特點(diǎn),適合微功率遠(yuǎn)距離的無(wú)線傳輸領(lǐng)域,如無(wú)線稱重等。WIRELESSDIGITALFULL-DUPLEXVOICETRANSCEIVER
無(wú)線數(shù)字全雙工語(yǔ)音收發(fā)器SW-438CC1020CPUWIRELESSDIGITALFULL-DUPLEXVOICETRANSCEIVER
無(wú)線數(shù)字全雙工語(yǔ)音收發(fā)器TPA4861DSpeakerDriver
TPA4861DM/A-COMGaAsRFSwitch
SW-438Freescale8位單片機(jī)指令系統(tǒng)HC08CPU有5個(gè)寄存器、16種尋址方式、140條基本指令(加上尋址方式可形成270條具體指令),這是學(xué)習(xí)08匯編語(yǔ)言的基礎(chǔ)。08匯編語(yǔ)言是學(xué)習(xí)08系列MCU的重要基礎(chǔ)之一,學(xué)好匯編語(yǔ)言有助于進(jìn)行底層編程、有助于理解編程結(jié)構(gòu)、有利于理解單片機(jī)內(nèi)部結(jié)構(gòu)?;疽I(lǐng):1〉掌握CPU內(nèi)部5個(gè)寄存器的使用方法;2〉理解16種尋址方式;3〉記住常用指令;4〉進(jìn)行編程實(shí)踐指令系統(tǒng)學(xué)習(xí)方法匯編指令的一般格式標(biāo)號(hào):操作碼操作數(shù)//注釋操作碼操作數(shù)尋找尋址方式CPU寄存器內(nèi)存單元(sfr、地址)指針常數(shù)標(biāo)號(hào)、特殊符號(hào)偽運(yùn)算符構(gòu)成的表達(dá)式操作碼115個(gè)ASLASLAASLXBHSBLO一共120個(gè)操作碼指令系統(tǒng)基本要領(lǐng)CPU寄存器尋址模式指令系統(tǒng)及其分類學(xué)習(xí)編程練習(xí)RAM#oprASPCCRH:XCPUHCS08CPU簡(jiǎn)介
HCS08CPU與M68HC08CPU的指令系統(tǒng)完全相同,且目標(biāo)代碼與M68HC08完全兼容。同時(shí)增加了一些指令和增強(qiáng)了尋址模式以增加C編譯器效率,且支持一個(gè)新的背景調(diào)試系統(tǒng),能夠代替早期M68HC08微處理器的監(jiān)測(cè)模式。HCS08CPU的特點(diǎn)包括:?目標(biāo)代碼完全向上兼容M68HC05和M68HC08家族?所有寄存器和存儲(chǔ)器映射在單塊64Kbyte地址空間?16位堆棧指針SP(64Kbyte地址空間中的任意大小堆棧)?16位索引寄存器(H:X)的強(qiáng)大的尋址索引模式?多種尋址模式?8位累加器(A)?支持存儲(chǔ)器到存儲(chǔ)器的數(shù)據(jù)傳送?高效的位操作指令?快速的8位乘8位和16位除以8位指令?STOP和WAIT指令喚醒低功耗運(yùn)行狀態(tài)CPU寄存器CPU寄存器A這個(gè)通用的8位寄存器是HCS08主要的數(shù)據(jù)寄存器。數(shù)據(jù)可以通過(guò)LDA指令從存儲(chǔ)器或通過(guò)PULA指令從堆棧讀入到A。數(shù)據(jù)通過(guò)存數(shù)指令STA存入存儲(chǔ)器中或通過(guò)堆棧指令PSHA將A進(jìn)棧到累加器A。多種尋址方式給存儲(chǔ)器的存取指令帶來(lái)了更大的靈活性。傳送指令可以將數(shù)據(jù)從累加器A傳送到寄存器X中(TAX),或者從寄存器X傳送到累加器A中(TXA),或者從累加器A傳送到CCR中(TAP),或者從CCR傳送到累加器A中(TPA)。TAP和TPA中的P表示處理機(jī)狀態(tài)。A半交換指令(NSA)使A中數(shù)據(jù)的高四位和低四位對(duì)調(diào)。
通常對(duì)A中的值通過(guò)ADD、SUB、ASLA、RORA、INCA、DECA、AND、ORA、EOR等指令執(zhí)行算術(shù)、移位和邏輯操作。其中有些指令如INCA和ASLA,對(duì)A中的內(nèi)容進(jìn)行操作后放回A中。另外一種情況如ADD和AND,它們有兩個(gè)操作數(shù):一個(gè)操作數(shù)在A中,另一個(gè)操作數(shù)在存儲(chǔ)器中。算術(shù)和邏輯操作的結(jié)果都是替代累加器內(nèi)的值。
乘法和除法指令使用A作為一個(gè)操作數(shù),并且保存部分值到A中。MUL指令將X和A中的無(wú)符號(hào)數(shù)相乘并將16位結(jié)果的高低字節(jié)分別存儲(chǔ)在X和A中。DIV指令將H、A中的16位無(wú)符號(hào)數(shù)除以X中8位無(wú)符號(hào)數(shù),再將商儲(chǔ)存在A中,余數(shù)放入H中。
在進(jìn)行兩個(gè)BCD碼數(shù)的ADD或ADC操作時(shí),需執(zhí)行十進(jìn)制調(diào)整指令DAA來(lái)糾正A中的值,使其變?yōu)橛行У腂CD碼2位數(shù)。關(guān)于指令的詳細(xì)解釋請(qǐng)查閱BCD算術(shù)運(yùn)算。
顯然,累加器是個(gè)非常忙的寄存器,因此如果能夠避免使用累加器是很有益的。例如,從存儲(chǔ)器到存儲(chǔ)器的傳送指令(MOV)就很有用。DBNZ也很有用,因?yàn)樗试S循環(huán)計(jì)數(shù)器工作在內(nèi)存變量中而不是在累加器中。X寄存器在許多情況下被當(dāng)作另一個(gè)通用的8位數(shù)據(jù)寄存器。有些算術(shù)運(yùn)算操作如清零、加、減、取反、求補(bǔ)和移位也可以使用X寄存器。A指令類型指令名稱作用A與別人的數(shù)據(jù)交換LDA/STA與存儲(chǔ)器進(jìn)行數(shù)據(jù)交換PULA/PSHA與堆棧進(jìn)行數(shù)據(jù)交換TAX/TXA與X進(jìn)行數(shù)據(jù)交換TPA/TAP與CCR進(jìn)行數(shù)據(jù)交換折騰A大部分X也行NSA將A中數(shù)據(jù)的高四位和低四位對(duì)調(diào)ASLA算術(shù)左移位RORA循環(huán)右移位INCA加1DECA減1DAA十進(jìn)制調(diào)整A與存儲(chǔ)器的數(shù)據(jù)進(jìn)行運(yùn)算后放回A中ADD加SUB減AND邏輯與ORA邏輯或EOR邏輯異或A*X=XAMUL乘法HA/X=A……..HDIV除法H:X這個(gè)16位的變址寄存器事實(shí)上是兩個(gè)獨(dú)立的8位寄存器(H和X)的合并。變址尋址方式使用H:X作為16位的基本參考點(diǎn),且允許有16位偏移量、8位偏移量和無(wú)偏移量的指令,另外一些變址尋址寄存器在變址用于存取存儲(chǔ)器操作時(shí)自動(dòng)增加到16位變址寄存器。關(guān)于變址尋址方式的詳細(xì)描述請(qǐng)查閱變址尋址方式。
8位X寄存器(H:X中的低8位)也被當(dāng)作一個(gè)通用的數(shù)據(jù)寄存器。修改類指令(如ASLX、ASRX、CLRX、COMX、DECX、INCX、LSLX、LSRX、NEGX、ROLX、RORX和TSTX)允許能被累加器所執(zhí)行的ALU操作的子集。要注意的是,當(dāng)要改變整個(gè)16位H:X變址寄存器時(shí),不要用這些指令,因?yàn)檫@些指令只影響X。下面的指令序列給出了在X上的16位形式的8位操作實(shí)例。
H:XLoad、store、push和pull指令可用于X中,其尋址方式與用于A中的變址尋址相同。在16位H:X寄存器中也有取數(shù)和存數(shù)指令,但沒(méi)有提供多種不同的尋址方式。進(jìn)棧(PSHH)和出棧(PULH)指令可用于H中,并且這兩個(gè)簡(jiǎn)單的指令可將16位變址寄存器(H:X)進(jìn)棧和出棧。有時(shí)堆棧指針值需要被傳送到HX寄存器中,因此H:X在堆棧中能當(dāng)作信息指針使用。堆棧指針總是指向堆棧中的下一個(gè)可用的位置,但是一般情況下變址寄存器應(yīng)該直接指向數(shù)據(jù)。因此,堆棧的16位值是通過(guò)TSX指令傳送到H:X中,并加一。因?yàn)檫@個(gè)調(diào)整,TSX執(zhí)行后HX指向堆棧數(shù)據(jù)的最后一個(gè)字節(jié)。當(dāng)使用TXS指令時(shí)求補(bǔ)調(diào)整就會(huì)發(fā)生(通過(guò)使用TXS這個(gè)值會(huì)自減1)??梢哉J(rèn)為,當(dāng)16位地址在SP中,它指向下一個(gè)有用堆棧位置,若在H:X中,則它指向最后一個(gè)字節(jié)信息。H:X
為了與早期的M08HC05系列兼容,中斷不在堆棧中保存H寄存器。一種好的做法是在中斷服務(wù)例程中將PSHH指令作為第一個(gè)指令(保護(hù)H)并且在程序結(jié)束RTI之前加上PULH指令作為最后一個(gè)指令(恢復(fù)H)。可以不要這些指令,如果確信H已經(jīng)不在中斷服務(wù)例程中被用到,并且確信沒(méi)有AIX指令或沒(méi)有變址尋址方式中的自增指令,因?yàn)檫@些指令能夠使H發(fā)生改變。如果能容許兩個(gè)字節(jié)的額外程序空間、一個(gè)在堆棧中額外的臨時(shí)空間和運(yùn)行期間五個(gè)總線周期的開(kāi)銷,那么更安全的做法就是把PSHH和PULH包含進(jìn)去作為一種習(xí)慣。
乘除指令把X作為操作數(shù),且MUL將一部分乘積存儲(chǔ)在X中。MUL將無(wú)符號(hào)數(shù)A和X相乘,并把16位結(jié)果存于X:A中。DIV指令將H、A中16位無(wú)符號(hào)數(shù)與X中的8位無(wú)符號(hào)數(shù)相除,商放入A中,余數(shù)放入H中。指令類型指令名稱作用HX/X與別人的數(shù)據(jù)交換LDX/STX與存儲(chǔ)器進(jìn)行數(shù)據(jù)交換PULX/PSHX與堆棧進(jìn)行數(shù)據(jù)交換TAX/TXA與A進(jìn)行數(shù)據(jù)交換TSX/TXS與SP進(jìn)行數(shù)據(jù)交換LDHX/STHXHX整體與存儲(chǔ)器進(jìn)行數(shù)據(jù)交換折騰X被認(rèn)為是ALU操作的子集ASLX/ASRX算術(shù)左、右移位LSLX/LSRX邏輯左、右移位ROLX/RORX循環(huán)左、右移位CLRX清016位形式LDHX#0INCX加1
AIX#1DECX減1
AIX#-1COMX、NEGX求反、求補(bǔ)運(yùn)算TSTX測(cè)試是否為0,影響標(biāo)志位
CPHX#0最本質(zhì)作用IX2變址尋址方式使用H:X作為16位的基本參考點(diǎn),且允許有16位偏移量、8位偏移量和無(wú)偏移量的指令。IX1IXA*X=XAMUL乘法HA/X=A…….HDIV除法特別注意點(diǎn)中斷時(shí)H沒(méi)有自動(dòng)進(jìn)棧,需要手工壓棧與出棧H:X使用總結(jié)SP這個(gè)16位地址指針寄存器用于自動(dòng)維護(hù)CPU的一個(gè)后進(jìn)先出(LIFO)堆棧。當(dāng)CPU執(zhí)行絕對(duì)轉(zhuǎn)移調(diào)用(JSR)或相對(duì)轉(zhuǎn)移調(diào)用(BSR)指令時(shí),它會(huì)自動(dòng)保存返回地址到堆棧中。當(dāng)子程序最后執(zhí)行返回指令(RTS)時(shí),該返回地址會(huì)自動(dòng)從堆棧中恢復(fù),并由此繼續(xù)執(zhí)行先前暫停的地方,在那里子程序被調(diào)用。SP是一個(gè)滿16位寄存器,所以堆??梢詫ぶ反鎯?chǔ)映射區(qū)的任何地方,且它可取不超過(guò)芯片可用RAM空間大小的任意大小。
堆棧指針總是指向堆棧中下一個(gè)可用位置。當(dāng)一個(gè)數(shù)值要進(jìn)棧時(shí),它會(huì)被寫到SP指向的地址中,隨后SP會(huì)自動(dòng)減少而指向下一個(gè)可用位置。當(dāng)一個(gè)數(shù)值要出棧時(shí),SP首先會(huì)自增以指向堆棧中最近進(jìn)棧的數(shù)據(jù),然后從剛被SP指向的地址中讀出數(shù)據(jù)。需要注意的是SP指向的數(shù)據(jù),在出棧的過(guò)程中不會(huì)被改變。如果SP指向當(dāng)前內(nèi)存的下一個(gè)位置,即指向之前最近存儲(chǔ)的數(shù)據(jù),當(dāng)新的數(shù)據(jù)進(jìn)棧時(shí),會(huì)覆蓋該位置的數(shù)據(jù)。如果在復(fù)位初始化期間,堆棧的RAM區(qū)被清空,那么堆棧擴(kuò)充時(shí),可以通過(guò)觀察哪些存儲(chǔ)單元仍然為空來(lái)確定最大深度。
SP
為了與早期的M08HC05系列兼容,在復(fù)位時(shí)SP的初值為$00FF。但HCS08應(yīng)用程序幾乎不會(huì)把堆棧頂部設(shè)到$00FF,因?yàn)閺妮斎?輸出(I/O)寄存器和控制寄存器的末端到$00FF的RAM區(qū)域,對(duì)于經(jīng)常被訪問(wèn)的變量很有價(jià)值。直接尋址方式可以訪問(wèn)內(nèi)存從$0000到$00FF的區(qū)域,這比訪問(wèn)其他內(nèi)存空間要快。
為了與M08HC05系列兼容,復(fù)位堆棧指針(RSP)指令迫使SP的低地址向$FF逼近。在M68HC05中,復(fù)位后SP的值為$00FF。RSP極少用在HCS08中,因?yàn)樗荒芨淖僑P的高地址,而且此時(shí),它沒(méi)有必要使SP的值復(fù)位。
在新的HCS08程序中,一般初始化SP的值指向芯片RAM的最高地址。一般情況下,下面的兩個(gè)指令序列被包含進(jìn)復(fù)位初始化的頭幾個(gè)指令中。 LDHX#ramlast+1 ;RAM最高地址的下一位 TXS ;HX-1----->SPSP
一般情況下,RAM被定義在通用寄存器或者它的頭文件中,在實(shí)際應(yīng)用中被認(rèn)為是特定的HCS08芯片。RamLast+1使RAM高端的下一高地址放入H:X中,因?yàn)門XS指令在傳送時(shí)會(huì)自動(dòng)調(diào)整它的值(自減1)。調(diào)整使得SP指向堆棧中的下一個(gè)可用的位置。這樣,SP當(dāng)前指向RAM的最后位置(最高地址值),并且將它作為堆棧的第一個(gè)位置。當(dāng)有值進(jìn)棧時(shí),堆棧指針會(huì)向低地址方向移動(dòng)。SP
當(dāng)請(qǐng)求中斷時(shí),CPU將寄存器的當(dāng)前內(nèi)容保存在堆棧中,在完成中斷服務(wù)例程后處理器將它們恢復(fù)以繼續(xù)執(zhí)行之前的程序。響應(yīng)中斷時(shí),保存到堆棧中的CPU寄存器的順序見(jiàn)圖6-2。在中斷前,SP指向堆棧中的下一個(gè)可用位置。每個(gè)數(shù)據(jù)通過(guò)SP保存到堆棧中指定位置并且SP會(huì)自減以指向堆棧中的下一個(gè)可用位置。結(jié)束中斷例程的RTI指令以相反的順序出棧來(lái)恢復(fù)CPU寄存器。關(guān)于中斷的詳細(xì)描述請(qǐng)查閱6.4.2節(jié)和5.5節(jié)的中斷。
為了與早期的M08HC05系列兼容,中斷在堆棧中沒(méi)有保存H寄存器。好的方法是在中斷服務(wù)例程中將PSHH指令作為開(kāi)頭指令并且在服務(wù)程序結(jié)束RTI之前將PULH指令(從H中恢復(fù))作為最后一條指令。
SP與立即數(shù)加法指令(AIS)用于為局部變量在堆棧中分配空間。該技術(shù)在C語(yǔ)言中很普通,在匯編語(yǔ)言中也很有用。下面的代碼例子會(huì)示范怎樣在堆棧中為局部變量分配和釋放空間。關(guān)于堆棧技術(shù)的詳細(xì)描述請(qǐng)查閱6.5.6的堆棧相關(guān)指令。 AIS #-5 ;SP-#5SP AIS #5 ;SP+#5SP指令類型指令名稱作用最本質(zhì)作用JSR自動(dòng)維護(hù)CPU的一個(gè)后進(jìn)先出(LIFO)堆棧,注意堆棧生長(zhǎng)順序是地址減少方向。BSRRTS中斷進(jìn)入與RTI與HX的數(shù)據(jù)交換TSX/TXS復(fù)位后SP為$00FFRSP使得SP為$??FF在HCS08中指令RSP用不到。RSP讓SP的低8位為$FF,高8位不變LDHX#ramlast+1TXS初始化SP的值指向芯片RAM的最高地址注意中斷保護(hù)寄存器的順序,而且H沒(méi)有被保護(hù)CCRAXPCHPCLSP與立即數(shù)加法指令(AIS)用于為局部變量在堆棧中分配空間AIS比如AIS
#-5 ;SP-#5
SP分配空間AIS
#5 ;SP+#5
SP釋放空間程序計(jì)數(shù)器(PC)
程序計(jì)數(shù)器是個(gè)16位的寄存器,存放取出的下一個(gè)指令或操作數(shù)的地址。正常的程序執(zhí)行期間,每一次取出指令或者操作數(shù)時(shí),程序計(jì)數(shù)器自動(dòng)加一指向后續(xù)的存儲(chǔ)器位置.跳轉(zhuǎn)、分支、中斷和返回操作,程序計(jì)數(shù)器加載的是一個(gè)地址,而不是下一個(gè)后續(xù)位置。復(fù)位期間,程序計(jì)數(shù)器加載位于$FFFE和$FFFF處存放的地址。($FFFE:$FFFF)存放的地址處對(duì)應(yīng)的指令,是復(fù)位后被執(zhí)行的第一條指令。2.2.2CPU寄存器條件代碼寄存器(CCR)8位條件代碼寄存器存放中斷屏蔽位(I)和5個(gè)指出剛執(zhí)行指令結(jié)果的標(biāo)志。第5和第6位永遠(yuǎn)置位。位名稱功能7V二進(jìn)制補(bǔ)碼溢出標(biāo)志——當(dāng)發(fā)生一個(gè)二進(jìn)制補(bǔ)碼溢出,CPU置這位為1。符號(hào)分支指令BGT,BGE,BLE和BLT將會(huì)用到溢出標(biāo)志位。4H半進(jìn)位標(biāo)志—累加器3、4位之間在加法(ADD、ADC)操作時(shí)可能發(fā)生半進(jìn)位。BCD運(yùn)算將用到半進(jìn)位標(biāo)志,DAA指令也會(huì)根據(jù)H和C的狀態(tài),對(duì)ADD或ADC的BCD運(yùn)算進(jìn)行修正。3I中斷全局屏蔽位—該位為1時(shí),所有可屏蔽的CPU中斷將被屏蔽。當(dāng)CPU響應(yīng)中斷時(shí),在CPU寄存器保存到堆棧、中斷服務(wù)子程第一條指令執(zhí)行前,I自動(dòng)置位。這確保了清除I的指令CLI或TAP之后的下一條指令總會(huì)被執(zhí)行,而不會(huì)出現(xiàn)剛清除I就發(fā)生中斷的可能性。2N負(fù)數(shù)標(biāo)志—當(dāng)一個(gè)算術(shù)操作,邏輯操作或者數(shù)據(jù)處理產(chǎn)生一個(gè)負(fù)數(shù)結(jié)果,則會(huì)設(shè)置結(jié)果的第7位,并且CPU將負(fù)數(shù)標(biāo)志位置1。如果加載或存儲(chǔ)數(shù)據(jù)的最高位為1,同樣會(huì)將N置1。1Z置零標(biāo)志—當(dāng)一個(gè)算術(shù)操作,邏輯操作或數(shù)據(jù)處理產(chǎn)生一個(gè)0x00或0x0000的結(jié)果,則將該位置1。如果加載或存儲(chǔ)的值為0,也會(huì)引起Z置1。0C進(jìn)/借標(biāo)志—加法第7位產(chǎn)生進(jìn)位,或減法需要借位,則置本位為1。一些指令——如位測(cè)試和分支,移位和旋轉(zhuǎn)也會(huì)影響進(jìn)/借標(biāo)志.2.2.2CPU寄存器累加器(A)累加器A是一個(gè)通用8位寄存器。經(jīng)常用于暫存一個(gè)輸入到算術(shù)邏輯單元(ALU)的操作數(shù),并且用于存放(ALU)的計(jì)算結(jié)果。復(fù)位對(duì)累加器A的內(nèi)容沒(méi)有影響。索引寄存器(H:X)這個(gè)16位寄存器實(shí)際上分為兩個(gè)8位寄存器(H和X),它們作為一個(gè)16位的地址指針一起工作,H存放一個(gè)地址的高位字節(jié)和X存放地址的低位字節(jié)。所有索引尋址模式指令利用H:X中全部16位值作為一個(gè)索引參考指針;然后,為了與早先M68HC05家族兼容,一些指令只在低8位(X)中運(yùn)行,并且H在復(fù)位過(guò)程中強(qiáng)制為0x00。復(fù)位對(duì)X的內(nèi)容沒(méi)有影響。堆棧指針(SP)16位地址指針寄存器指向下一個(gè)有效的堆棧位置。堆棧可以放置在包含RAM的64Kbyte地址空間的任意位置,其大小可以為任何RAM中的有效值。堆棧用來(lái)自動(dòng)保存子程序調(diào)用的返回地址、中斷中CPU寄存器和局部變量的返回地址。AIS(立即加堆棧指針,堆棧處理指令)指令對(duì)SP加上一個(gè)8位有符號(hào)立即數(shù)。這經(jīng)常用于對(duì)堆棧中的局部變量分配和取消分配空間。向上生長(zhǎng)型(如51單片機(jī))特性:先加后壓,先彈后減向下生長(zhǎng)型(飛思卡爾單片機(jī))特性:先壓后減,先加后彈程序計(jì)數(shù)器(PC)程序計(jì)數(shù)器是個(gè)16位的寄存器,存放取出的下一個(gè)指令或操作數(shù)的地址。正常的程序執(zhí)行期間,每一次取出指令或者操作數(shù)時(shí),程序計(jì)數(shù)器自動(dòng)加一指向后續(xù)的存儲(chǔ)器位置。跳轉(zhuǎn)、分支、中斷和返回操作程序計(jì)數(shù)器加載地址不是下一個(gè)后續(xù)位置。復(fù)位期間,程序計(jì)數(shù)器加載位于$FFFE和$FFFF的復(fù)位矢量(這點(diǎn)與51的差別很大,PC不是裝載$FFFE,而是裝載$FFFE和$FFFF中存放的內(nèi)容)。該處的矢量地址是退出復(fù)位狀態(tài)后被執(zhí)行的第一條指令的地址。條件代碼寄存器(CCR)8位條件代碼寄存器存放中斷屏蔽位(I)和5個(gè)指出剛執(zhí)行指令結(jié)果的標(biāo)志。第5和第6位永遠(yuǎn)設(shè)置為1。如圖:I位是中斷屏蔽控制位,與其他位不同的是它在CCR中不是處理器狀況位。在CCR的六個(gè)可執(zhí)行位中,I位也是復(fù)位后唯一可被初始化的位。I位復(fù)位后置為1,這使得中斷被屏蔽直到堆棧指針被初始化。其他五個(gè)狀態(tài)位(V、H、N、Z和C)在復(fù)位后是未知的,只有在執(zhí)行一個(gè)指令后才能知道。復(fù)位后無(wú)須強(qiáng)制這些位為特定的值,因?yàn)橹钡綀?zhí)行了一個(gè)影響它們的指令后,與這些位相關(guān)的條件轉(zhuǎn)移才有意義。這五個(gè)狀態(tài)位標(biāo)志了運(yùn)算和其他指令的結(jié)果。條件轉(zhuǎn)移指令根據(jù)CCR內(nèi)狀態(tài)位的值來(lái)決定是直接轉(zhuǎn)移到一個(gè)新的程序地址,還是繼續(xù)執(zhí)行下一個(gè)指令。簡(jiǎn)單的條件轉(zhuǎn)移指令(BCC、BCS、BNE、BEQ、BHCC、BHCS、BMC、BMS、BPL和BMI)所導(dǎo)致的轉(zhuǎn)移取決于單一的CCR位狀態(tài),而其他轉(zhuǎn)移指令則被兩三個(gè)更復(fù)雜的CCR位控制。例如,若布爾表達(dá)式[(Z)|(N⊕V)]真,則將產(chǎn)生小于等于轉(zhuǎn)移(BLE).0C進(jìn)/借標(biāo)志—當(dāng)一個(gè)另外操作產(chǎn)生一個(gè)對(duì)第7位累加需要進(jìn)位或者一個(gè)減法操作要求一個(gè)借位,則置本位為1。一些指令,如位測(cè)試和分支,移位和旋轉(zhuǎn)也會(huì)影響進(jìn)/借標(biāo)志。0 第7位沒(méi)有產(chǎn)生進(jìn)/位1 第7位產(chǎn)生進(jìn)/位
1Z置零標(biāo)志—當(dāng)一個(gè)算術(shù)操作,邏輯操作或數(shù)據(jù)處理產(chǎn)生一個(gè)0x00或0x0000的結(jié)果,則將該位置1。如果加載或存儲(chǔ)的值為0,簡(jiǎn)單的加載或存儲(chǔ)一個(gè)引起Z置1。0NUMn-zeroresult1Zeroresult2N負(fù)數(shù)標(biāo)志—當(dāng)一個(gè)算術(shù)操作,邏輯操作或者數(shù)據(jù)處理產(chǎn)生一個(gè)負(fù)數(shù)結(jié)果,則會(huì)設(shè)置結(jié)果的第7位,并且CPU將負(fù)數(shù)標(biāo)志位置1。如果加載或存儲(chǔ)的最高位為1,同樣會(huì)將N置1。0 非負(fù)數(shù)結(jié)果1 負(fù)數(shù)結(jié)果
3I中斷屏蔽位—當(dāng)設(shè)置中斷屏蔽,所有可屏蔽的CPU中斷將被屏蔽.當(dāng)中斷屏蔽被清除時(shí)使能。當(dāng)產(chǎn)生一個(gè)CPU中斷,中斷屏蔽被保存到堆棧,但是在中斷服務(wù)子程序第一條指令執(zhí)行前自動(dòng)置1。WAIT和STOP指令會(huì)自動(dòng)對(duì)I位清零0 中斷使能1 中斷屏蔽4H半進(jìn)位標(biāo)志—當(dāng)在累加器第3位和第4位之間在不帶進(jìn)位加法(ADD)或者帶進(jìn)位加(ADC)操作時(shí)發(fā)生半進(jìn)位,則CPU置該標(biāo)志為1。二進(jìn)制編碼的十進(jìn)制(BCD)運(yùn)算將用到半進(jìn)位標(biāo)志。另外DAA指令也會(huì)根據(jù)條件代碼位H和C的狀態(tài),自動(dòng)加一個(gè)修正值到先前的ADD或ADC的BCD運(yùn)算,以修正結(jié)果為一個(gè)正確的BCD值。0 第3位和第4位之間沒(méi)有進(jìn)位1 第3位和第4位之間有進(jìn)位
7V二進(jìn)制補(bǔ)碼溢出標(biāo)志—當(dāng)發(fā)生一個(gè)二進(jìn)制補(bǔ)碼溢出,CPU置這位為1。符號(hào)分支指令BGT,BGE,BLE和BLT將會(huì)用到溢出標(biāo)志位。0 沒(méi)有溢出1 有溢出指令系統(tǒng)指令系統(tǒng)指令統(tǒng)計(jì)1、數(shù)據(jù)傳送類指令 492、算術(shù)運(yùn)算類指令 913、邏輯運(yùn)算類指令 244、位操作類指令 145、移位類指令 366、程序控制類指令 477、其它指令 98、HCS08增加指令 10
總計(jì): 280(120)尋址方式當(dāng)MCU是從存儲(chǔ)器讀出信息或是將信息寫進(jìn)存儲(chǔ)器時(shí),尋址方式用于確定信息讀或?qū)懙木_地址。本節(jié)講解不同的尋址方式及其在程序中的用法。例如,在一些尋址方式中,通過(guò)編譯器確定程序?qū)懭氲刂贰6硗庖恍ぶ贩绞皆试SCPU寄存器的內(nèi)容來(lái)參與影響。這很重要,因?yàn)橛袝r(shí)程序在執(zhí)行期間需要計(jì)算地址。每個(gè)操作碼使CPU用某種方式去執(zhí)行某種操作。許多指令例如LDA允許多種不同的方式來(lái)指定將要操作的內(nèi)存,并且每個(gè)尋址方式需要有一個(gè)獨(dú)立的操作數(shù)。所有這些變量用相同的記憶指令,并且編譯器基于操作域的使用情況知道使用了哪些操作數(shù)。在某些情況下,使用特殊的字符表示特殊的尋址方式(如#符號(hào)表示立即尋址方式)。在另外一些情況下,操作數(shù)的值告訴匯編使用哪些尋址方式。例如,如果操作數(shù)的地址在$0000和$00FF之間,匯編會(huì)選擇直接尋址方式而不是擴(kuò)展尋址方式。尋址方式LDA允許多種不同的方式來(lái)指定將要操作的內(nèi)存.一些指令會(huì)使用多種尋址方式。例如MOV指令使用一種方式訪問(wèn)內(nèi)存的源地址,而使用另一種方式去訪問(wèn)內(nèi)存單元中的目的地址。對(duì)于這些指令,兩個(gè)尋址方式都在文檔中被列了出來(lái)。所有的轉(zhuǎn)移指令使用相對(duì)變址尋址方式(REL)去確定轉(zhuǎn)移的目的地址,但是BRCLR、BRSET、CBEQ和DBNZ指令還需要訪問(wèn)內(nèi)存操作數(shù)。這些指令根據(jù)使用于內(nèi)存操作數(shù)的尋址方式來(lái)分類。在接下來(lái)的篇幅中,將討論每個(gè)尋址方式的用法以及編譯器通過(guò)什么樣的語(yǔ)法定義來(lái)知道程序員所需的特殊尋址方式。尋址方式1、CPU寄存器:A,HX,SP,PC,CCR(V11HINZC)2、尋址方式:INH,IMM,DIR,EXT,IND(IX,IX1,IX2,SP1,SP2,IX+,IX1+)REL,M2M(IMD,DD,IX+D,DIX+) LDHX#STR LDA#’’LOP1:CBEQX+,FOUND
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年食堂承包租賃協(xié)議規(guī)范3篇
- 2025版蟲草產(chǎn)業(yè)鏈上下游企業(yè)戰(zhàn)略合作合同范本3篇
- 鄭州經(jīng)貿(mào)學(xué)院《金屬材料成形基礎(chǔ)B》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024版運(yùn)動(dòng)場(chǎng)館租賃合同范本版B版
- 2024建筑工程砌墻合同范本
- 2024年適用電子廣告屏出租協(xié)議模板版B版
- 電力電氣行業(yè)員工需求
- 設(shè)備潤(rùn)滑知識(shí)培訓(xùn)課件
- 2025年生態(tài)保護(hù)區(qū)場(chǎng)地硬化與生態(tài)保護(hù)工程合同2篇
- 2024年高標(biāo)準(zhǔn)變形縫安裝工程承包協(xié)議版B版
- 2024年江蘇省導(dǎo)游服務(wù)技能大賽理論考試題庫(kù)(含答案)
- 讓與擔(dān)保合同協(xié)議范本
- 2024年中考英語(yǔ)閱讀理解表格型解題技巧講解(含練習(xí)題及答案)
- 住宅設(shè)計(jì)效果圖協(xié)議書
- 新版中國(guó)食物成分表
- 浙江省溫州市溫州中學(xué)2025屆數(shù)學(xué)高二上期末綜合測(cè)試試題含解析
- 2024河南鄭州市金水區(qū)事業(yè)單位招聘45人歷年高頻難、易錯(cuò)點(diǎn)500題模擬試題附帶答案詳解
- 食物損失和浪費(fèi)控制程序
- 完整版:美制螺紋尺寸對(duì)照表(牙數(shù)、牙高、螺距、小徑、中徑外徑、鉆孔)
- 2024年黑龍江齊齊哈爾中考英語(yǔ)試題及答案1
- TCI 373-2024 中老年人免散瞳眼底疾病篩查規(guī)范
評(píng)論
0/150
提交評(píng)論