⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 des_430.s43

📁 msp430的汇编des算法
💻 S43
📖 第 1 页 / 共 4 页
字号:


#include  "msp430X41X.h"
;===============           中断向量地址表            ==========================
           		; MSP430 RESET Vector
ORG     0FFFEh       
	DW      	RESET			;复位中断
                           	
ORG	0FFE0h	     
	DW	     	RESET			;基本定时器中断

ORG	0FFE2h	     
	DW	    	RESET		;P2口中断
	DW	    	RESET        
	DW	    	RESET        
ORG	0FFE8h	     
	DW		RESET		;P1口中断  (用于流量测量)

ORG	0FFEAh	     
	DW	     	RESET			;TIME_A中断
	
ORG	0FFECh	     
	DW	     	RESET		;TIME_A中断CCR0
	DW	    	RESET
	DW	    	RESET
	DW	    	RESET

ORG	0FFF4h	     
	DW	     	RESET			;看门狗定时器中断

ORG	0FFF6h	     
	DW	     	RESET			;比较器_A中断
	DW	    	RESET
	DW	    	RESET
        
ORG	0FFFCh	     
	DW	     	RESET			;NMI中断
        
IN_64BIT    EQU     200H

OUT_64BIT   EQU     208H


KEY         EQU     210H

KEY_A       EQU     218H
KEY_B       EQU     21CH

#define     CHLID_KEY_FIRST  220H 
CHILD_KEY1  EQU     CHLID_KEY_FIRST
CHILD_KEY2  EQU     CHLID_KEY_FIRST + (8 * 1)
CHILD_KEY3  EQU     CHLID_KEY_FIRST + (8 * 2)
CHILD_KEY4  EQU     CHLID_KEY_FIRST + (8 * 3)
CHILD_KEY5  EQU     CHLID_KEY_FIRST + (8 * 4)
CHILD_KEY6  EQU     CHLID_KEY_FIRST + (8 * 5)
CHILD_KEY7  EQU     CHLID_KEY_FIRST + (8 * 6)
CHILD_KEY8  EQU     CHLID_KEY_FIRST + (8 * 7)
CHILD_KEY9  EQU     CHLID_KEY_FIRST + (8 * 8)
CHILD_KEY10 EQU     CHLID_KEY_FIRST + (8 * 9)
CHILD_KEY11 EQU     CHLID_KEY_FIRST + (8 *10)
CHILD_KEY12 EQU     CHLID_KEY_FIRST + (8 *11)
CHILD_KEY13 EQU     CHLID_KEY_FIRST + (8 *12)
CHILD_KEY14 EQU     CHLID_KEY_FIRST + (8 *13)
CHILD_KEY15 EQU     CHLID_KEY_FIRST + (8 *14)
CHILD_KEY16 EQU     CHLID_KEY_FIRST + (8 *15)

DATA_L      EQU     2A0H
DATA_R      EQU     2A4H

#define     TEMP_FIRST  2B0H 
TEMP0       EQU     TEMP_FIRST + 0
TEMP1       EQU     TEMP_FIRST + 1
TEMP2       EQU     TEMP_FIRST + 2
TEMP3       EQU     TEMP_FIRST + 3
TEMP4       EQU     TEMP_FIRST + 4
TEMP5       EQU     TEMP_FIRST + 5
TEMP6       EQU     TEMP_FIRST + 6
TEMP7       EQU     TEMP_FIRST + 7
TEMP8       EQU     TEMP_FIRST + 8
TEMP9       EQU     TEMP_FIRST + 9
TEMP10      EQU     TEMP_FIRST + 10
TEMP11      EQU     TEMP_FIRST + 11
TEMP12      EQU     TEMP_FIRST + 12
TEMP13      EQU     TEMP_FIRST + 13
TEMP14      EQU     TEMP_FIRST + 14
TEMP15      EQU     TEMP_FIRST + 15
TEMP16      EQU     TEMP_FIRST + 16
TEMP17      EQU     TEMP_FIRST + 17
TEMP18      EQU     TEMP_FIRST + 18
TEMP19      EQU     TEMP_FIRST + 19
TEMP20      EQU     TEMP_FIRST + 20
TEMP21      EQU     TEMP_FIRST + 21
TEMP22      EQU     TEMP_FIRST + 22
TEMP23      EQU     TEMP_FIRST + 23
;===============           复位中断                  ==========================
ORG     0C000h                  			; Program Reset
;初始化
RESET    
MAINLOOP	;MOV	#WDT_ARST_1000,&WDTCTL		;看门狗工作在定时器模式1s,WDTPW+WDTTMSEL+WDTCNTCL
		mov.w   #WDTPW+WDTHOLD,&WDTCTL          ; Stop WDT
                
                mov.b   #013h,210h
                mov.b   #034h,211h
                mov.b   #057h,212h
                mov.b   #079h,213h
                mov.b   #09bh,214h
                mov.b   #0bch,215h
                mov.b   #0dfh,216h
                mov.b   #0f1h,217h
                
                mov.b   #001h,200h
                mov.b   #023h,201h
                mov.b   #045h,202h
                mov.b   #067h,203h
                mov.b   #089h,204h
                mov.b   #0ABh,205h
                mov.b   #0CDh,206h
                mov.b   #0EFh,207h
                /*
                mov.b   #031h,210h
                mov.b   #031h,211h
                mov.b   #031h,212h
                mov.b   #031h,213h
                mov.b   #031h,214h
                mov.b   #031h,215h
                mov.b   #031h,216h
                mov.b   #031h,217h
                
                mov.b   #031h,200h
                mov.b   #031h,201h
                mov.b   #031h,202h
                mov.b   #031h,203h
                mov.b   #031h,204h
                mov.b   #031h,205h
                mov.b   #031h,206h
                mov.b   #031h,207h    
                */
		DINT					;关中断
                CALL    #MAIN_DES
                
                MOV.B   208H,200H
                MOV.B   209H,201H
                MOV.B   20AH,202H
                MOV.B   20BH,203H
                MOV.B   20CH,204H
                MOV.B   20DH,205H
                MOV.B   20EH,206H
                MOV.B   20FH,207H
                
                CALL    #MAIN_DES_REVERSE
                JMP     MAINLOOP

;================================================
;功能:  第一次等分密钥,结果是56位
;名称:  KEY_PARTED
;入口:  r4      64位占用8字节
;出口:  r5      56位占用8字节
;中间:  
;备注:  高位在前
;================================================
KEY_PARTED      ;KEY_A!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                BIT.B   #(80H >> (56% 8)),( (56/ 8))(R4);0
                RLC.B   0(R5)
                BIT.B   #(80H >> (48% 8)),( (48/ 8))(R4);1
                RLC.B   0(R5)
                BIT.B   #(80H >> (40% 8)),( (40/ 8))(R4);2
                RLC.B   0(R5)
                BIT.B   #(80H >> (32% 8)),( (32/ 8))(R4);3
                RLC.B   0(R5)
                BIT.B   #(80H >> (24% 8)),( (24/ 8))(R4);4
                RLC.B   0(R5)
                BIT.B   #(80H >> (16% 8)),( (16/ 8))(R4);5
                RLC.B   0(R5)
                BIT.B   #(80H >> (8 % 8)),( (8 / 8))(R4);6
                RLC.B   0(R5)
                BIT.B   #(80H >> (0 % 8)),( (0 / 8))(R4);7
                RLC.B   0(R5)
                BIT.B   #(80H >> (57% 8)),( (57/ 8))(R4);8
                RLC.B   1(R5)
                BIT.B   #(80H >> (49% 8)),( (49/ 8))(R4);9
                RLC.B   1(R5)
                BIT.B   #(80H >> (41% 8)),( (41/ 8))(R4);10
                RLC.B   1(R5)
                BIT.B   #(80H >> (33% 8)),( (33/ 8))(R4);11
                RLC.B   1(R5)
                BIT.B   #(80H >> (25% 8)),( (25/ 8))(R4);12
                RLC.B   1(R5)
                BIT.B   #(80H >> (17% 8)),( (17/ 8))(R4);13
                RLC.B   1(R5)
                BIT.B   #(80H >> (9 % 8)),( (9 / 8))(R4);14
                RLC.B   1(R5)
                BIT.B   #(80H >> (1 % 8)),( (1 / 8))(R4);15
                RLC.B   1(R5)
                BIT.B   #(80H >> (58% 8)),( (58/ 8))(R4);16
                RLC.B   2(R5)
                BIT.B   #(80H >> (50% 8)),( (50/ 8))(R4);17
                RLC.B   2(R5)
                BIT.B   #(80H >> (42% 8)),( (42/ 8))(R4);18
                RLC.B   2(R5)
                BIT.B   #(80H >> (34% 8)),( (34/ 8))(R4);19
                RLC.B   2(R5)
                BIT.B   #(80H >> (26% 8)),( (26/ 8))(R4);20
                RLC.B   2(R5)
                BIT.B   #(80H >> (18% 8)),( (18/ 8))(R4);21
                RLC.B   2(R5)
                BIT.B   #(80H >> (10% 8)),( (10/ 8))(R4);22
                RLC.B   2(R5)
                BIT.B   #(80H >> (2 % 8)),( (2 / 8))(R4);23
                RLC.B   2(R5)
                BIT.B   #(80H >> (59% 8)),( (59/ 8))(R4);24
                RLC.B   3(R5)
                BIT.B   #(80H >> (51% 8)),( (51/ 8))(R4);25
                RLC.B   3(R5)
                BIT.B   #(80H >> (43% 8)),( (43/ 8))(R4);26
                RLC.B   3(R5)
                BIT.B   #(80H >> (35% 8)),( (35/ 8))(R4);27
                RLC.B   3(R5)
                ;KEY_B!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                BIT.B   #(80H >> (62% 8)),( (62/ 8))(R4);28
                RLC.B   3(R5)
                BIT.B   #(80H >> (54% 8)),( (54/ 8))(R4);29
                RLC.B   3(R5)
                BIT.B   #(80H >> (46% 8)),( (46/ 8))(R4);30
                RLC.B   3(R5)
                BIT.B   #(80H >> (38% 8)),( (38/ 8))(R4);31
                RLC.B   3(R5)
                BIT.B   #(80H >> (30% 8)),( (30/ 8))(R4);32
                RLC.B   4(R5)
                BIT.B   #(80H >> (22% 8)),( (22/ 8))(R4);33
                RLC.B   4(R5)
                BIT.B   #(80H >> (14% 8)),( (14/ 8))(R4);34
                RLC.B   4(R5)
                BIT.B   #(80H >> (6 % 8)),( (6 / 8))(R4);35
                RLC.B   4(R5)
                BIT.B   #(80H >> (61% 8)),( (61/ 8))(R4);36
                RLC.B   4(R5)
                BIT.B   #(80H >> (53% 8)),( (53/ 8))(R4);37
                RLC.B   4(R5)
                BIT.B   #(80H >> (45% 8)),( (45/ 8))(R4);38
                RLC.B   4(R5)
                BIT.B   #(80H >> (37% 8)),( (37/ 8))(R4);39
                RLC.B   4(R5)
                BIT.B   #(80H >> (29% 8)),( (29/ 8))(R4);40
                RLC.B   5(R5)
                BIT.B   #(80H >> (21% 8)),( (21/ 8))(R4);41
                RLC.B   5(R5)
                BIT.B   #(80H >> (13% 8)),( (13/ 8))(R4);42
                RLC.B   5(R5)
                BIT.B   #(80H >> (5 % 8)),( (5 / 8))(R4);43
                RLC.B   5(R5)
                BIT.B   #(80H >> (60% 8)),( (60/ 8))(R4);44
                RLC.B   5(R5)
                BIT.B   #(80H >> (52% 8)),( (52/ 8))(R4);45
                RLC.B   5(R5)
                BIT.B   #(80H >> (44% 8)),( (44/ 8))(R4);46
                RLC.B   5(R5)
                BIT.B   #(80H >> (36% 8)),( (36/ 8))(R4);47
                RLC.B   5(R5)
                BIT.B   #(80H >> (28% 8)),( (28/ 8))(R4);48
                RLC.B   6(R5)
                BIT.B   #(80H >> (20% 8)),( (20/ 8))(R4);49
                RLC.B   6(R5)
                BIT.B   #(80H >> (12% 8)),( (12/ 8))(R4);50
                RLC.B   6(R5)
                BIT.B   #(80H >> (4 % 8)),( (4 / 8))(R4);51
                RLC.B   6(R5)
                BIT.B   #(80H >> (27% 8)),( (27/ 8))(R4);52
                RLC.B   6(R5)
                BIT.B   #(80H >> (19% 8)),( (19/ 8))(R4);53
                RLC.B   6(R5)
                BIT.B   #(80H >> (11% 8)),( (11/ 8))(R4);54
                RLC.B   6(R5)
                BIT.B   #(80H >> (3 % 8)),( (3 / 8))(R4);55
                RLC.B   6(R5)
                RET
;================================================
;功能:  密钥的选取,迭代后 28 + 28 = 56 转换成为 48位
;名称:  KEY_56TO48
;入口:  r4      56位占用8字节
;出口:  r5      48位占用8字节
;中间:  
;备注:  高位在前
;================================================
KEY_56TO48      BIT.B   #(80H >> (13% 8)),(13/ 8)(R4);0
                RLC.B   0(R5)
                BIT.B   #(80H >> (16% 8)),(16/ 8)(R4);1
                RLC.B   0(R5)
                BIT.B   #(80H >> (10% 8)),(10/ 8)(R4);2
                RLC.B   0(R5)
                BIT.B   #(80H >> (23% 8)),(23/ 8)(R4);3
                RLC.B   0(R5)
                BIT.B   #(80H >> (0 % 8)),(0 / 8)(R4);4
                RLC.B   0(R5)
                BIT.B   #(80H >> (4 % 8)),(4 / 8)(R4);5
                RLC.B   0(R5)
                BIT.B   #(80H >> (2 % 8)),(2 / 8)(R4);6
                RLC.B   0(R5)
                BIT.B   #(80H >> (27% 8)),(27/ 8)(R4);7
                RLC.B   0(R5)
                BIT.B   #(80H >> (14% 8)),(14/ 8)(R4);8
                RLC.B   1(R5)
                BIT.B   #(80H >> (5 % 8)),(5 / 8)(R4);9
                RLC.B   1(R5)
                BIT.B   #(80H >> (20% 8)),(20/ 8)(R4);10
                RLC.B   1(R5)
                BIT.B   #(80H >> (9 % 8)),(9 / 8)(R4);11
                RLC.B   1(R5)
                BIT.B   #(80H >> (22% 8)),(22/ 8)(R4);12
                RLC.B   1(R5)
                BIT.B   #(80H >> (18% 8)),(18/ 8)(R4);13
                RLC.B   1(R5)
                BIT.B   #(80H >> (11% 8)),(11/ 8)(R4);14
                RLC.B   1(R5)
                BIT.B   #(80H >> (3% 8)),(3/ 8)(R4);15
                RLC.B   1(R5)
                BIT.B   #(80H >> (25% 8)),(25/ 8)(R4);16
                RLC.B   2(R5)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -