單片機(jī)指令表
一、傳送操作
助記符 代碼 說(shuō)明
MOV A,Rn E8~EF 寄存器A
MOV A,direct E5 direct 直接字節(jié)送A
MOV A,@Ri ER~E7 間接RAM送A
MOV A,#data 74 data 立即數(shù)送A
MOV Rn,A F8~FF A送寄存器
MOV Rn,direct A8~AF direct 直接字節(jié)送寄存器
MOV Rn,#data 78~7F data 立即數(shù)送寄存器
MOV direct,A F5 direct A送直接字節(jié)
MOV direct,Rn 88~8F direct 寄存器送直接字節(jié)
MOV direct1,direct2 85 direct1 direct2 直接字節(jié)送直接字節(jié)
MOV direct,@Ro 86~87 間接RAM送直接字節(jié)
MOV direct,#data 75 direct data 立即數(shù)送直接字節(jié)
MOV @Ri,A F6~F7 A送間接RAM
MOV @Ri,direct 76~77 direct 直接字節(jié)送間接RAM
MOV @Ri,#data 76~77 data 立即數(shù)送間接RAM
MOV DPTR,#data16 90 data 15~8 16位常數(shù)送數(shù)據(jù)指針
data7~0
MOVC A,@A+DPTR 93 由((A)+(DPTR))尋址的程序存貯
器字節(jié)選A
MOVC A,@A+PC 83 由((A)+(PC));尋址的程序存貯器字節(jié)送A
MOVX A,@Ri E2~E3 送外部數(shù)據(jù)(8位地址)送A
MOVX A,@DPTR E0 送外部數(shù)據(jù)(16位地址)送A
MOVX @Ri,A F2~F3 A送外部數(shù)據(jù)(8位地址)
MOVX @DPTR,A F0 A送外部數(shù)據(jù)(16位地址)
PUSH direct C0 direct 直接字節(jié)進(jìn)棧,SP加1
POP direct D0 direct 直接字節(jié)退棧,SP減1
XCH A,Rn C8~CF 交換A和寄存器
XCH A,direct C5 direct 交換A和直接字節(jié)
XCH A,@Ri C6~C7 交換A和間接RAM
XCH A,@Ri D6~D7 交換A和間接RAM的低位
SWAP A C4
二、算術(shù)操作
(A的二個(gè)半字節(jié)交換)
ADD A,Rn 28~2F 寄存器加到A
ADD A,direct 25 direct 直接字節(jié)加到A
ADD A,@Ri 26~27 間接RAM加到A
ADD A,#data 24data 立即數(shù)加到A
ADD A,Rn 38~3F 寄存器和進(jìn)位位加到A
ADD A,direct 35direct 直接字節(jié)和進(jìn)位位加到A
ADD A,@Ri 36~37 間接字節(jié)和進(jìn)位位加到A
ADD A,data 34 data 立即數(shù)和進(jìn)位位加到A
ADD A,Rn 98~9F A減去寄存器和進(jìn)位位
ADD A,direct 95 direct A減去直接字節(jié)和進(jìn)位位
ADD A,@Ri 36~37 間接RAM和進(jìn)位位加到A
ADD A,data 34 data 立即數(shù)和進(jìn)位位加到A
SUBB A,Rn 98~9F A減去寄存器和進(jìn)位位
SUBB A,direct 95 direct A減去直接字節(jié)和進(jìn)位位
SUBB A,@Ri 96~97 A減去間接RAM和進(jìn)位位
SUBB A,#data 94 data A減去立即數(shù)和進(jìn)位位
INC A 04 A加1
INC Rn 08~0F 寄存器加1
INC direct 05 direct 直接字節(jié)加1
INC @Ri 06~07 間接RAM加1
DEC A 14 A減1
DEC Rn 18~1F 寄存器減1
DEC direct 15 direct 直接字節(jié)減1
DEC @Ri 16~17 間接RAM減1
INC DPTR A3 數(shù)據(jù)指針加1
MUL AB A4 A乘以B
DIV AB 84 A除以B
DA A D4 A的十進(jìn)制加法調(diào)整
三、邏輯操作
ANL A,Rn 58~5F 寄存器“與”到A
ANL A,direct 55 direct 直接字節(jié)“與”到A
ANL A,@Ri 56~57 間接RAm“與”到A
ANL A,#data 54 data 立即數(shù)“與”到A
ANL direct A 52 direct A“與”到直接字節(jié)
ANL direct,#data 53 direct data 立即數(shù)“與”到直接字節(jié)
ORL A,Rn 48~4F 寄存器“或”到A
ORL A,direct 45 direct 直接字節(jié)“或”到A
ORL A,@Ri 46~47 間接RAM“或”到A
ORL A,#data 44 data 立即數(shù)“或”到A
ORL direct,A 42 direct A“或”到直接字節(jié)
ORL direct,#data 43 direct data 立即數(shù)“或”到直接字節(jié)
XRL A,Rn 68~6F 寄存器“異或”到A
XRL A,direct 65 direct 直接字節(jié)“異或”到A
XRL A,@Ri 66~67 間接RAM“異或”到A
XRL A,#data 64 data 立即數(shù)“異或”到A
XRL direct A 62 direct A“異或”到直接字節(jié)
XRL direct,#data 63 direct data 立即數(shù)“異或”到直接字節(jié)
CLR A E4 清零
CPL A F4 A取反
RL A 23 A左環(huán)移
RLC A 33 A通過(guò)進(jìn)位左環(huán)移
RR A 03 A右環(huán)移
RRC A 13 A通過(guò)進(jìn)位右環(huán)移
四、控制程序轉(zhuǎn)移
ACALL addr 11 *1 addr(a7~a0) 絕對(duì)子程序調(diào)用
LCALL addr 16 12 addr(15~8) 長(zhǎng)子程序調(diào)用
addr(7~0)
RET 22 子程序調(diào)用返回
RETI addr 11 32 中斷調(diào)用返回
AJMP addr 11 △1 addr(a7~a6) 絕對(duì)轉(zhuǎn)移
LJMP addr 16 02addr(15~8) 長(zhǎng)轉(zhuǎn)移
addr(7~0)
SJMP rel 80 rel 短轉(zhuǎn)移,相對(duì)轉(zhuǎn)移
JMP @A+DPTR 73 相對(duì)于DPTR間接轉(zhuǎn)移
JZ rel 60 rel A為零轉(zhuǎn)移
JNZ rel 70 rel A為零轉(zhuǎn)移
CJNE A,direct,rel B5 direct rel 直接字節(jié)與A比較,不等則轉(zhuǎn)移
CJNE A,#data,rel B4 data rel 立即數(shù)與A比較,不等則轉(zhuǎn)移
CJNE A,Rn,#data,rel B8~BF data rel 立即數(shù)與寄存器比較,不等則轉(zhuǎn)移
CJNE @Ri,#data,rel B6~B7 data rel 立即數(shù)與間接RAM比較,不等則轉(zhuǎn)移
DJNZ Rn,rel D8~DF rel 寄存器減1,不為零則轉(zhuǎn)移
DJNZ direct,rel B5 direct rel 直接字節(jié)減1,不為零則轉(zhuǎn)移
NOP 00 空操作
五、布爾變量操作
CLR C C3 清零進(jìn)位
CLR bit C2 清零直接位
SETB C D3 置位進(jìn)位
SETB bit D2 置位直接位
CPL C B3 進(jìn)位取反
CPL bit B2 直接位取反
ANL C,bit 82 dit 直接數(shù)“與”到進(jìn)位
ANL C,/bit B0 直接位的反“與”到進(jìn)位
ORL C,bit 72 bit 直接位“或”到進(jìn)位
ORL C,/bit A0 bit 直接位的反“或”到進(jìn)位
MOV C,bit A2 bit 直接位送進(jìn)位
MOV bit,C 92 bit 進(jìn)位送直接位
JC rel 40 rel 進(jìn)位位為1轉(zhuǎn)移
JNC rel 50 rel 進(jìn)位位為0轉(zhuǎn)移
JB bit,rel 20 bit rel 直接位為1相對(duì)轉(zhuǎn)移
JNB bit,rel 30 bit rel 直接位為0相對(duì)轉(zhuǎn)移
JBC bit,rel 10 bit rel 直接位為1相對(duì)轉(zhuǎn)移,然后清零該位
常用單片機(jī)芯片簡(jiǎn)介
STC單片機(jī)
STC公司的單片機(jī)主要是基于8051內(nèi)核,是新一代增強(qiáng)型單片機(jī),指令代碼完全兼容傳統(tǒng)8051,速度快8~12倍,帶ADC,4路PWM,雙串口,有全球唯一ID號(hào),加密性好,抗干擾強(qiáng)。
是MICROCHIP公司的產(chǎn)品,其突出的特點(diǎn)是體積小,功耗低,精簡(jiǎn)指令集,抗干擾性好,可靠性高,有較強(qiáng)的模擬接口,代碼保密性好,大部分芯片有其兼容的FLASH程序存儲(chǔ)器的芯片。
EMC單片機(jī):
是***義隆公司的產(chǎn)品,有很大一部分與PIC 8位單片機(jī)兼容,且相兼容產(chǎn)品的資源相對(duì)比PIC的多,價(jià)格便宜,有很多系列可選,但抗干擾較差。
ATMEL單片機(jī)(51單片機(jī)):
ATMEl公司的8位單片機(jī)有AT89、AT90兩個(gè)系列,AT89系列是8位Flash單片機(jī),與8051系列單片機(jī)相兼容,靜態(tài)時(shí)鐘模式;AT90系列單片機(jī)是增強(qiáng)RISC結(jié)構(gòu)、全靜態(tài)工作方式、內(nèi)載在線可編程Flash的單片機(jī),也叫AVR單片機(jī)。
PHLIPIS 51LPC系列單片機(jī)(51單片機(jī)):
PHILIPS公司的單片機(jī)是基于80C51內(nèi)核的單片機(jī),嵌入了掉電檢測(cè)、模擬以及片內(nèi)RC振蕩器等功能,這使51LPC在高集成度、低成本、低功耗的應(yīng)用設(shè)計(jì)中可以滿足多方面的性能要求。
HOLTEK單片機(jī):
***盛揚(yáng)半導(dǎo)體的單片機(jī),價(jià)格便宜,種類較多,但抗干擾較差,適用于消費(fèi)類產(chǎn)品。
TI公司單片機(jī)(51單片機(jī)):
德州儀器提供了TMS370和MSP430兩大系列通用單片機(jī).TMS370系列單片機(jī)是8位CMOS單片機(jī),具有多種存儲(chǔ)模式、多種外圍接口模式,適用于復(fù)雜的實(shí)時(shí)控制場(chǎng)合;MSP430系列單片機(jī)是一種超低功耗、功能集成度較高的16位低功耗單片機(jī),特別適用于要求功耗低的場(chǎng)合
松翰單片機(jī)(SONIX):
是***松翰公司的單片,大多為8位機(jī),有一部分與PIC 8位單片機(jī)兼容,價(jià)格便宜,系統(tǒng)時(shí)鐘分頻可選項(xiàng)較多,有PMW ADC 內(nèi)振 內(nèi)部雜訊濾波。缺點(diǎn)RAM空間過(guò)小,抗干擾較好。
攻擊技術(shù)
目前,攻擊單片機(jī)主要有四種技術(shù),分別是:
(1)軟件攻擊
該技術(shù)通常使用處理器通信接口并利用協(xié)議、加密算法或這些算法中的安全漏洞來(lái)進(jìn)行攻擊。軟件攻擊取得成功的一個(gè)典型事例是對(duì)早期ATMEL AT89C 系列單片機(jī)的攻擊。攻擊者利用了該系列單片機(jī)擦除操作時(shí)序設(shè)計(jì)上的漏洞,使用自編程序在擦除加密鎖定位后,停止下一步擦除片內(nèi)程序存儲(chǔ)器數(shù)據(jù)的操作,從而使加過(guò)密的單片機(jī)變成沒(méi)加密的單片機(jī),然后利用編程器讀出片內(nèi)程序。
(2) 電子探測(cè)攻擊
該技術(shù)通常以高時(shí)間分辨率來(lái)監(jiān)控處理器在正常操作時(shí)所有電源和接口連接的模擬特性,并通過(guò)監(jiān)控它的電磁輻射特性來(lái)實(shí)施攻擊。因?yàn)閱纹瑱C(jī)是一個(gè)活動(dòng)的電子器件,當(dāng)它執(zhí)行不同的指令時(shí),對(duì)應(yīng)的電源功率消耗也相應(yīng)變化。這樣通過(guò)使用特殊的電子測(cè)量?jī)x器和數(shù)學(xué)統(tǒng)計(jì)方法分析和檢測(cè)這些變化,即可獲取單片機(jī)中的特定關(guān)鍵信息。
(3)過(guò)錯(cuò)產(chǎn)生技術(shù)
該技術(shù)使用異常工作條件來(lái)使處理器出錯(cuò),然后提供額外的訪問(wèn)來(lái)進(jìn)行攻擊。使用最廣泛的過(guò)錯(cuò)產(chǎn)生攻擊手段包括電壓沖擊和時(shí)鐘沖擊。低電壓和高電壓攻擊可用來(lái)禁止保護(hù)電路工作或強(qiáng)制處理器執(zhí)行錯(cuò)誤操作。時(shí)鐘瞬態(tài)跳變也許會(huì)復(fù)位保護(hù)電路而不會(huì)破壞受保護(hù)信息。電源和時(shí)鐘瞬態(tài)跳變可以在某些處理器中影響單條指令的解碼和執(zhí)行。
(4)探針技術(shù)
該技術(shù)是直接暴露芯片內(nèi)部連線,然后觀察、操控、干擾單片機(jī)以達(dá)到攻擊目的。為了方便起見(jiàn),人們將以上四種攻擊技術(shù)分成兩類,一類是侵入型攻擊(物理攻擊),這類攻擊需要破壞封裝,然后借助半導(dǎo)體測(cè)試設(shè)備、顯微鏡和微定位器,在專門的實(shí)驗(yàn)室花上幾小時(shí)甚至幾周時(shí)間才能完成。所有的微探針技術(shù)都屬于侵入型攻擊。另外三種方法屬于非侵入型攻擊,被攻擊的單片機(jī)不會(huì)被物理?yè)p壞。在某些場(chǎng)合非侵入型攻擊是特別危險(xiǎn)的,但是因?yàn)榉乔秩胄凸羲柙O(shè)備通常可以自制和升級(jí),因此非常廉價(jià)。
大部分非侵入型攻擊需要攻擊者具備良好的處理器知識(shí)和軟件知識(shí)。與之相反,侵入型的探針攻擊則不需要太多的初始知識(shí),而且通常可用一整套相似的技術(shù)對(duì)付寬范圍的產(chǎn)品。
加密方法
科研成果保護(hù)是每一個(gè)科研人員最關(guān)心的事情,加密方法有軟件加密,硬件加密,軟硬件綜合加密,時(shí)間加密,錯(cuò)誤引導(dǎo)加密,專利保護(hù)等措施有矛就有盾,有盾就有矛,有矛有盾,才促進(jìn)矛盾質(zhì)量水平的提高加密只講盾,也希望網(wǎng)友提供更新的加密思路,現(xiàn)先講一個(gè)軟件加密:利用MCS-51 中A5 指令加密,其實(shí)世界上所有資料,包括英文資料都沒(méi)有講這條指令,其實(shí)這是很好的加密指令A(yù)5 功能是二字節(jié)空操作指令加密方法在A5 后加一個(gè)二字節(jié)或三字節(jié)操作碼,因?yàn)樗蟹磪R編軟件都不會(huì)反匯編A5 指令,造成正常程序反匯編亂套,執(zhí)行程序無(wú)問(wèn)題仿制者就不能改變你的源程序。
硬件加密:8031/8052 單片機(jī)就是8031/8052掩模產(chǎn)品中的不合格產(chǎn)品,內(nèi)部有ROM,可以把8031/8052 當(dāng)8751/8752 來(lái)用,再擴(kuò)展外部程序器,然后調(diào)用8031 內(nèi)部子程序當(dāng)然你所選的同批8031 芯片的首地址及所需用的中斷入口均應(yīng)轉(zhuǎn)到外部程序區(qū)。
硬件加密
用高電壓或激光燒斷某條引腳,使其讀不到內(nèi)部程序,用高電壓會(huì)造成一些器件損壞重要RAM 數(shù)據(jù)采用電池(大電容,街機(jī)采用的辦法)保護(hù),拔出芯片數(shù)據(jù)失去機(jī)器不能起動(dòng),或能初始化,但不能運(yùn)行。
用真假方法加密
擦除芯片標(biāo)識(shí)
把8X52 單片機(jī),標(biāo)成8X51 單片機(jī),并用到后128B的RAM 等方法,把AT90S8252 當(dāng)AT89C52,初始化后程序段中并用到EEPROM 內(nèi)容,你再去聯(lián)想吧!
用激光(或絲印)打上其它標(biāo)識(shí)如有的單片機(jī)引腳兼容,有的又不是同一種單片機(jī),可張冠李戴,只能意會(huì)了,這要求你知識(shí)面廣一點(diǎn) 。
用最新出廠編號(hào)的單片機(jī),如2000 年后的AT89C 就難解密,或新的單片機(jī)品種,如AVR 單片機(jī)。
DIP 封裝改成PLCC,TQFP,SOIC,BGA等封裝,如果量大可以做定制ASIC,或軟封裝,用不需外晶振的單片機(jī)工作(如AVR 單片機(jī)中的AT90S1200),使用更復(fù)雜的單片機(jī),FPGA+AVR+SRAM=AT40K系列。
硬件加密與軟件加密只是為敘說(shuō)方便而分開(kāi)來(lái)講,其實(shí)它們是分不開(kāi)的,互相支撐,互相依存的軟件加密:其目的是不讓人讀懂你的程序,不能修改程序,你可以…………。。.。。
利用單片機(jī)未公開(kāi),未被利用的標(biāo)志位或單元,作為軟件標(biāo)志位,如8031/8051 有一個(gè)用戶標(biāo)志位,PSW.1 位,是可以利用的程序入口地址不要用整地址,如:XX00H,XXX0H,可用整地址-1,或-2,而在整地址處加二字節(jié)或三字節(jié)操作碼,在無(wú)程序的空單元也加上程序機(jī)器碼,最好要加巧妙一點(diǎn)用大容量芯片,用市場(chǎng)上仿真器不能仿真的芯片,如內(nèi)部程序?yàn)?4KB 或大于64KB 的器件,如:AVR 單片機(jī)中ATmega103 的Flash 程序存儲(chǔ)器為128KBAT89S8252/AT89S53 中有EEPROM,關(guān)鍵數(shù)據(jù)存放在EEPROM 中,或程序初始化時(shí)把密碼寫(xiě)到EEPROM 中,程序執(zhí)行時(shí)再查密碼正確與否,盡量不讓人家讀懂程序。關(guān)于單片機(jī)加密,講到這里,就算拋磚引玉。
評(píng)論
查看更多