




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
HCS12指令系統(tǒng)章節(jié)介紹
教學(xué)內(nèi)容本章介紹HCS12的指令集
教學(xué)目標(biāo)了解HCS12CPU的程序模型了解HCS12CPU的尋址方式理解HCS12CPU的指令集可以編寫簡(jiǎn)單的匯編程序一、匯編指令格式 匯編程序以行為單位,每行一條指令,結(jié)尾必須是回車符。 每行最多有5部份,即:
[標(biāo)號(hào)]操作碼[操作數(shù)1],[操作數(shù)2][;注釋]二、HCS12程序模型7A07B015 D 015 X 015 Y 015 SP 015 PC 05PPAGE*0SXHINZCV8位累加器A和B16位累加器D(A:B)變址寄存器X變址寄存器Y堆棧指針SP程序計(jì)數(shù)器PC條件碼寄存器CCR07條件碼寄存器其中S、X、I為屏蔽位;H、N、Z、V、C為算術(shù)位。SXHINZVC進(jìn)位/借位標(biāo)志溢出標(biāo)志為0標(biāo)志為負(fù)標(biāo)志中斷屏蔽位半進(jìn)位標(biāo)志非屏蔽中斷允許位停止運(yùn)行模式禁止位三、HCS12的尋址方式HCS12的尋址方式隱含尋址(INHERENT)
CLRB立即尋址(IMMEDIATE)
LDAA#$12擴(kuò)展尋址(EXTENDED)
LDAA$4000直接尋址(DIRECT)
LDAA$50相對(duì)尋址(RELATIVE)
BNELOOP變址尋址(INDEXED)
LDAB$10,XHCS12的尋址方式新的尋址方式LDAA-$10,X
X、Y、SP、PC加上5位有符號(hào)常數(shù)偏移量形成操作數(shù)地址LDAA-$50,X
X、Y、SP、PC加上9位有符號(hào)常數(shù)偏移量形成操作數(shù)地址LDAA-$500,X
X、Y、SP、PC加上16位常數(shù)偏移量(兩擴(kuò)展字節(jié)中)為操作數(shù)地址JMP[D,X]
指向操作數(shù)的指針的地址由X、Y、SP、PC加上累加器D所確定。HCS12的尋址方式一覽表序號(hào)尋址模式源程序格式縮寫說明備注一隱含尋址INSTINH無(wú)操作數(shù)或操作數(shù)在寄存器中操作數(shù)部分空白二立即尋址INST#opr8i/#opr16iIMM操作數(shù)存放在指令中,根據(jù)上下文確定8位還是16位操作數(shù)帶#號(hào)三直接尋址INSTopr8aDIR操作數(shù)本身就是地址的低8位,僅適用于地址范圍0000~00FF操作數(shù)為直接地址,不帶#號(hào)擴(kuò)展尋址INSTop16aEXT操作數(shù)本身是16位地址四相對(duì)尋址INSTrel8/rel16REL當(dāng)前PC加上位于指令中的8位或者16位偏移量作為操作數(shù)實(shí)際地址由匯編程序生成HCS12的尋址方式一覽表序號(hào)尋址模式源程序格式縮寫說明備注五減后變址尋址INSToprx3,﹣xysIDX先將X、Y、SP減去一個(gè)指定的值(1~8),然后作為操作數(shù)地址寄存器內(nèi)容即為操作數(shù)的地址,同時(shí)還可以調(diào)整寄存器指向下一個(gè)元素,不包括PC寄存器增后變址尋址INSToprx3,+xysIDX先將X、Y、SP增加一個(gè)指定的值(1~8),然后作為操作數(shù)地址后減變址尋址INSToprx3,xys﹣IDX先將X、Y、SP作為操作數(shù)地址,然后減去一個(gè)指定的值(1~8)后增變址尋址INSToprx3,xys+IDX先將X、Y、SP作為操作數(shù)地址,然后增加一個(gè)指定的值(1~8)HCS12的尋址方式一覽表序號(hào)尋址模式源程序格式縮寫說明備注六5位變址尋址INSToprx5,xyspIDXX、Y、SP、PC加上5位有符號(hào)常數(shù)偏移量形成操作數(shù)地址變址寄存器的內(nèi)容加上一個(gè)常數(shù)或另一個(gè)寄存器內(nèi)容即為操作數(shù)地址,包括PC寄存器9位變址尋址INSToprx9,xyspIDX1X、Y、SP、PC加上9位有符號(hào)常數(shù)偏移量形成操作數(shù)地址16位變址尋址INSToprx16,xyspIDX2X、Y、SP、PC加上16位有符號(hào)常數(shù)偏移量形成操作數(shù)地址累加器變址尋址INSTabd,xysp
IDXX、Y、SP、PC加上8位(A、B)或16位(D)量形成操作數(shù)地址HCS12的尋址方式一覽表序號(hào)尋址模式源程序格式縮寫說明備注七間接常變址尋址INST[oprx16,xysp][D,IDX]指向操作數(shù)的指針的地址由X、Y、SP、PC加上16位常數(shù)偏移量確定指針尋址、到內(nèi)存中找操作數(shù)地址間接D變址尋址INST[D,xysp][IDX2]指向操作數(shù)的指針的地址由X、Y、SP、PC加上累加器D所確定四、指令系統(tǒng)
數(shù)據(jù)處理類指令(DataHandling)
算術(shù)運(yùn)算類指令(Arithmetic)
邏輯指令(Logic)
數(shù)據(jù)測(cè)試類指令(DataTest)
分支跳轉(zhuǎn)類指令(Branch) 跳轉(zhuǎn)和子程序調(diào)用類(Jump&SubroutineCalls)小結(jié)
HCS12程序設(shè)計(jì)模型
HCS12尋址模式
HCS12指令系統(tǒng)數(shù)據(jù)處理類指令—寄存器加載指令助記符功能操作LDAALoadA(M)→ALDABLoadB(M)→BLDDLoadD(M:M+1)→(A:B)LDSLoadSP(M:M+1)→SPH:SPLLDXLoadindexregisterX(M:M+1)→XH:XLLDYLoadindexregisterY(M:M+1)→YH:YLLEASLoadeffectiveaddressintoSPEffectiveaddress→SPLEAXLoadeffectiveaddressintoXEffectiveaddress→XLEAYLoadeffectiveaddressintoYEffectiveaddress→Y數(shù)據(jù)處理類指令—寄存器存儲(chǔ)指令助記符功能操作STAAStoreA(A)→MSTABStoreB(B)→MSTDStoreD(A)→M,(B)→M+1STSStoreSP(SPH:SPL)
→
M:M+1STXStoreX(XH:XL)→M:M+1STYStoreY(YH:YL)→M:M+1數(shù)據(jù)處理類指令—寄存器傳送指令助記符功能操作TABTransferAtoB(A)→BTAPTransferAtoCCR(A)→CCRTBATransferBtoA(B)→ATFRTransferRtoR(A,B,CCR,D,X,Y,orSP)
→
A,B,CCR,D,X,Y,orSPTPATransferCCRtoA(CCR)→ATSXTransferSPtoX(SP)→XTSYTransferSPtoY(SP)→YTXSTransferXtoSP(X)→SPTYSTransferYtoSP(Y)→SP數(shù)據(jù)處理類指令—寄存器交換指令助記符功能操作EXGExchangeregistertoregister(A,B,CCR,D,X,Y,orSP)
←→
(A,B,CCR,D,X,Y,orSP)
XGDXExchangeDwithX(D)←→(X)XGDYExchangeDwithY(D)←→(Y)數(shù)據(jù)處理類指令—內(nèi)存數(shù)據(jù)傳送指令助記符功能操作MOVBMovebyte(8-bit)(M1)
→
M2MOVWMoveword(16-bit)(M:M+11)→M:M+12
MOVB #$359,Y
;將立即數(shù)#$35送到(Y+9)單元,不影響標(biāo)志位MOVW #$1234$1100
;將立即數(shù)#$12、#$34分別送到($1100)、($1101)單元MOVB $1000$2000
;將($1000)單元內(nèi)容送到($2000)單元MOVB $10005,SP
;將($1000)單元內(nèi)容送到(SP+5)單元MOVB 3,X2,Y
;將(X+3)單元內(nèi)容送到(Y+2)單元數(shù)據(jù)處理類指令—堆棧操作指令助記符功能操作PSHAPUSHA(SP)-1→SP;(A)→M(SP)PSHBPUSHB(SP)-1→SP;(B)→M(SP)PSHCPUSHCCR(SP)-1→SP;(CCR)→M(SP)PSHDPUSHD(SP)-2→SP;(A:B)→M(SP):M(SP+1)PSHXPUSHX(SP)-2→SP;(X)→M(SP):M(SP+1)PSHYPUSHY(SP)-2→SP;(Y)→M(SP):M(SP+1)PULAPULLAM(SP)→A;(SP)+1→SPPULBPULLBM(SP)→B;(SP)+1→SPPULCPULLCCRM(SP)→CCR;(SP)+1→SPPULDPULLD(M(SP):M(SP+1))→A:B;(SP)+2→SPPULXPULLX(M(SP):M(SP+1))→X;(SP)+2→SPPULYPULLY(M(SP):M(SP+1))→Y;(SP)+2→SP數(shù)據(jù)處理類指令—堆棧操作指令數(shù)據(jù)處理類指令—加1指令助記符功能操作INCIncrementmemory(M)+$01→MINCAIncrementA(A)+$01→AINCBIncrementB(B)+$01→BINSIncrementSP(SP)+$01→SPINXIncrementX(X)+$01→XINYIncrementY(Y)+$01→Y數(shù)據(jù)處理類指令—減1指令助記符功能操作DECDecrementmemory(M)-
$01→MDECADecrementA(A)-
$01→ADECBDecrementB(B)-
$01→BDESDecrementSP(SP)-
$01→SPDEXDecrementX(X)-
$01→XDEYDecrementY(Y)-
$01→Y數(shù)據(jù)處理類指令—取反、求補(bǔ)助記符功能操作COMOne’scomplementmemory$FF-
(M)→MCOMAOne’scomplementA$FF-
(A)→ACOMBOne’scomplementB$FF-
(B)→BNEGTwo’scomplementmemory$00-
(M)→MNEGATwo’scomplementA$00-
(A)→ANEGBTwo’scomplementB$00-
(B)→B數(shù)據(jù)處理類指令—求補(bǔ)、取反求A的絕對(duì)值:FD_ABS:CMPA#$00;檢驗(yàn)A是否為正數(shù)BGEA_PLUS;是正數(shù),跳轉(zhuǎn)NEGA;是負(fù)數(shù),求其相反數(shù)A_PLUS:TAB;得到A的絕對(duì)值并放在B中將減法運(yùn)算轉(zhuǎn)換為加法運(yùn)算:M_2_P:NEGA;$00-
A→A,這兩行程序求$64-A的值A(chǔ)DDA#$64;$00-
A+$64=$64
-
A數(shù)據(jù)處理類指令—清0、位操作助記符功能操作CLRClearmemory$00→MCLRAClearA$00→ACLRBClearB$00→BBCLRClearbitsinmemory(M)·(mm)→MBSETSetbitsinmemory(M)+
(mm)→M數(shù)據(jù)處理類指令—最大/最小值助記符功能操作EMINDMINoftwounsigned16-bitvaluesresulttoaccumulatorMIN((D),(M:M+1))→DEMINMMINoftwounsigned16-bitvaluesresulttomemoryMIN((D),(M:M+1))→M:M+1MINAMINoftwounsigned8-bitvaluesresulttoaccumulatorMIN((A),(M))→AMINMMINoftwounsigned8-bitvaluesresulttomemoryMIN((A),(M))→MEMAXDMAXoftwounsigned16-bitvaluesresulttoaccumulatorMAX((D),(M:M+1))→DEMAXMMAXoftwounsigned16-bitvaluesresulttomemoryMAX((D),(M:M+1))→M:M+1MAXAMAXoftwounsigned8-bitvaluesresulttoaccumulatorMAX((A),(M))→AMAXMMAXoftwounsigned8-bitvaluesresulttomemoryMAX((A),(M))→M數(shù)據(jù)處理類指令—循環(huán)移位助記符功能操作ROLRotateleftmemorythroughcarryROLARotateleftAthroughcarryROLBRotateleftBthroughcarryRORRotaterightmemorythroughcarryRORARotaterightAthroughcarryRORBRotaterightBthroughcarry數(shù)據(jù)處理類指令—算術(shù)移位助記符功能操作ASLArithmeticshiftleftmemoryASLAArithmeticshiftleftAASLBArithmeticshiftleftBASLDArithmeticshiftleftDASRArithmeticshiftrightmemoryASRAArithmeticshiftrightAASRBArithmeticshiftrightB數(shù)據(jù)處理類指令—邏輯移位助記符功能操作LSLLogicshiftleftmemoryLSLALogicshiftleftALSLBLogicshiftleftBLSLDLogicshiftleftDLSRLogicshiftrightmemoryLSRALogicshiftright
ALSLRBLogicshiftright
BLSRDLogicshiftright
D算數(shù)運(yùn)算類指令—加法指令助記符功能操作ABAAddBtoA(A)+(B)→AABXAddBtoX(B)+(X)→XABYAddBtoY(B)+(Y)→YADCAAddwithcarrytoA(A)+(M)+C→AADCBAddwithcarrytoB(B)+(M)+C→BADDAAddwithoutcarrytoA(A)+(M)→AADDBAddwithoutcarrytoB(B)+(M)→BADDDAddtoD(A:B)+(M:M+1)→A:BDAADecimaladjustA(A)10算數(shù)運(yùn)算類指令—加法指令
在$0800~$0803和$1000~$1003內(nèi)存單元各存放著一個(gè)長(zhǎng)整型數(shù),求它們的和并放在$2000~$2003單元。注意高位字節(jié)在低地址單元。
解:
LDD $0802 ;取得被加數(shù)的低位字到累加器D ADD $1002 ;與加數(shù)的低位字相加,結(jié)果放在D STD $2002 ;結(jié)果低位字保存到目標(biāo)地址單元
LDD $0800 ;取得被加數(shù)的高位字到D
;(A存放高位字節(jié),B存放低位字節(jié))
ADCB $1001 ;高位字中的低位字節(jié)與加數(shù)對(duì)應(yīng)位相加,結(jié)果放B ADCA $1000 ;高位字中的高位字節(jié)與加數(shù)對(duì)應(yīng)位相加,結(jié)果放A STD $2000 ;結(jié)果D(A、B)保存到目標(biāo)地址單元算數(shù)運(yùn)算類指令—減法指令助記符功能操作SBASubtractBfromA(A)-(B)→ASBCASubtractwithborrowfromA(A)-(M)-C→ASBCBSubtractwithborrowfromB(B)-(M)-C→BSUBASubtractmemoryfromA(A)-(M)→ASUBBSubtractmemoryfromB(B)-(M)→BSUBDSubtractmemoryfromD(A:B)(D)-(M:M+1)→D算數(shù)運(yùn)算類指令—減法指令
在$0800~$0803和$1000~$1003內(nèi)存單元各存放著一個(gè)長(zhǎng)整型數(shù),求它們的差并放在$2000~$2003單元。注意高位字節(jié)在低地址單元。
解:
LDD $0802 ;取得被減數(shù)的低位字到累加器D SBD $1002 ;與減數(shù)的低位字相減,差放在D中,注意可能產(chǎn)生錯(cuò)位
STD $2002 ;差的低位字保存到目標(biāo)地址單元
LDD $0800 ;取得被減數(shù)的高位字到D
;(A存放高位字節(jié),B存放低位字節(jié))
SBCB $1001 ;高位字中的低位字節(jié)與減數(shù)對(duì)應(yīng)位相減,結(jié)果放B SBCA $1000 ;高位字中的高位字節(jié)與減數(shù)對(duì)應(yīng)為相減,結(jié)果放A STD $2000 ;結(jié)果D(A、B)保存到目標(biāo)地址單元算數(shù)運(yùn)算類指令—乘法指令助記符功能操作MUL8by8multiply(unsigned)(A)×(B)→A:BEMUL16by16multiply(unsigned)(D)×(Y)→Y:DEMULS16by16multiply(signed)(D)×(Y)→Y:D算數(shù)運(yùn)算類指令—除法指令助記符功能操作EDIV32by16divide(unsigned)(Y:D)÷(X)→Y余數(shù)→DEDIVS32by16divide(signed)(Y:D)÷(X)→Y余數(shù)→DFDIV16by16fractionaldivide(D)÷(X)→X余數(shù)→DIDIV16by16integerdivide(unsigned)(D)÷(X)→X余數(shù)→DIDIVS16by16integerdivide(signed)(D)÷(X)→X余數(shù)→D算數(shù)運(yùn)算類指令—除法指令整數(shù)除法16/16無(wú)符號(hào)或有符號(hào)(IDIV/IDIVS)操作:DREG/XREG結(jié)果:商在X中;余數(shù)在D中擴(kuò)展的除法32-Bit/16-Bit無(wú)符號(hào)或有符號(hào)(EDIV/EDIVS)操作:(Y:D)/(X)→Y;余數(shù)→
DV=1,如果結(jié)果>$FFFF(無(wú)符號(hào)V=1,如果結(jié)果>$7FFF(有符號(hào))C=1,如果除數(shù)為$0000算數(shù)運(yùn)算類指令—乘積累加指令EMACS(M(X):M(X+1))×(M(Y):M(Y+1))+M~M+3)→M~M+3例:EMACS $2500 (*32-BITRESULT*)邏輯指令助記符功能操作ANDAANDAwithmemory(A)·
(M)→AANDBANDBwithmemory(B)·
(M)→BANDCCANDCCRwithmemory(CCR)·
(M)→CCRORAAORAwithmemory(A)+(M)→AORABORBwithmemory(B)+(M)→BORCCORCCRwithmemory(CCR)+(M)→CCREORAExclusiveORAwithmemory(A)⊕
(M)→AEORBExclusiveORBwithmemory(B)⊕
(M)→B數(shù)據(jù)測(cè)試類指令—比較指令助記符功能操作CBACompareAtoB(A)-(B)CMPACompareAtomemory(A)-(M)CMPBCompareBtomemory(B)-(M)CPDCompareDtomemory(16-bit)(A:B)-(M:M+1)CPSCompareSPtomemory(16-bit)(SP)-(M:M+1)CPXCompareXtomemory(16-bit)(X)-(M:M+1)CPYCompareYtomemory(16-bit)(Y)-(M:M+1)數(shù)據(jù)測(cè)試類指令—比較/檢測(cè)指令助記符功能操作TSTTestmemoryforzeroorminus(M)-$00TSTATestAforzeroorminus(A)-$00TSTBTestBforzeroorminus(B)-$00BITABittestA(A)·(M)BITBBittestB(B)·(M)分支跳轉(zhuǎn)類指令—固定分支助記符條件CCR檢驗(yàn)(L)BRABranchalways1=1(L)BRNBranchnever1=0分支跳轉(zhuǎn)類指令—簡(jiǎn)單條件分支助記符條件CCR檢驗(yàn)關(guān)系(L)BCCBranchifcarryclearC=1A<M(L)BCSBranchifcarrysetC=0A≥M(L)BEQBranchifequalZ=1A=M(L)BMIBranchifminusN=1r=NEGATIVE(L)BNEBranchifnotequalZ=0A≠M(fèi)(L)BPLBranchifplusN=0r=POSITIVE(L)BVCBranchifoverflowclearV=0r=SIGNOK(L)BVSBranchifoverflowsetV=1r=SIGNERROR分支跳轉(zhuǎn)類指令—無(wú)符號(hào)條件分支助記符條件CCR檢驗(yàn)關(guān)系(L)BHIBranchifhigherC+Z=0R>M(L)BHSBranchifhigherorsameC=0R≥M(L)BLOBranchiflowerC=1R<M(L)BLSBranchiflowerorsameC+Z=1R≤M分支跳轉(zhuǎn)類指令—有符號(hào)條件分支助記符條件CCR檢驗(yàn)關(guān)系(L)BGEBranchifgreaterthanorequalN⊕V=0R≥M(L)BGTBranchifgreaterthanZ+(N⊕V)=0R>M(L)BLEBranchiflessthanorequalZ+(N⊕V)=1R≤M(L)BLTBranchiflessthanN⊕V=1R<M分支跳轉(zhuǎn)類指令—循環(huán)控制指令助記符條件操作DBEQDecrementcounterandbranchif=0(counter=A,B,D,X,Y,orSP)(counter)-
1→counterif(counter)=0,thenbranchDBNEDecrementcounterandbranchif≠0(counter=A,B,D,X,Y,orSP)(counter)-
1
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版文化旅游區(qū)物業(yè)合同財(cái)務(wù)管理與市場(chǎng)推廣協(xié)議
- 二零二五版房產(chǎn)親情傳遞:父母子女間房產(chǎn)買賣協(xié)議書
- 2025版?zhèn)€人獨(dú)資企業(yè)股權(quán)轉(zhuǎn)讓及資產(chǎn)評(píng)估協(xié)議
- 二零二五年度高端酒店開業(yè)慶典策劃執(zhí)行合同
- 二零二五年度節(jié)水型大棚種植技術(shù)承包服務(wù)合同
- 2025版地質(zhì)災(zāi)害防治與勘查合同范本
- 二零二五年度工業(yè)廢棄物處理與回收合同
- 二零二五年度城市綠化工程項(xiàng)目承包協(xié)議
- 2025版現(xiàn)代服務(wù)業(yè)抵押借款合同范文
- 二零二五年度城市更新項(xiàng)目第三方監(jiān)理服務(wù)協(xié)議范本
- 電氣設(shè)計(jì)筆記:電纜熱穩(wěn)定校驗(yàn)計(jì)算表
- 2024-2025學(xué)年八年級(jí)上冊(cè)數(shù)學(xué)第一次月考試卷01【滬科版】
- 接受宴請(qǐng)違紀(jì)檢討書(合集4篇)
- 執(zhí)業(yè)獸醫(yī)資格考試基礎(chǔ)科目模擬9
- DZ∕T 0214-2020 礦產(chǎn)地質(zhì)勘查規(guī)范 銅、鉛、鋅、銀、鎳、鉬(正式版)
- 《中電聯(lián)團(tuán)體標(biāo)準(zhǔn)-220kV變電站并聯(lián)直流電源系統(tǒng)技術(shù)規(guī)范》
- (正式版)SHT 3158-2024 石油化工管殼式余熱鍋爐
- 結(jié)核病防治管理辦法的課件
- 三病反歧視制度
- 《地質(zhì)導(dǎo)向技術(shù)》課件
- 胖東來(lái)內(nèi)部管理手冊(cè)
評(píng)論
0/150
提交評(píng)論