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