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

📄 msp430.mcs

📁 miracl大数库 miracl大数库 miracl大数库
💻 MCS
字号:
; Comba/KCM Macros for TI msp430
;
; Triple register is r8|r7|r6
;
; See makemcs.txt for more information about this file
;
; Contributed by Piotr Szczechowiak
; (uses hardware multiplier)
; 
MACRO MUL_START
  __asm (
  "PUSH r10\n"
  "PUSH r11\n"
  "PUSH r12\n"
  "PUSH r8\n"
  "PUSH r7\n"
  "PUSH r6\n"
  "PUSH r5\n"
  "MOV &a,r10\n"
  "MOV &b,r11\n"
  "MOV &c,r12\n"
  "CLR r8\n"
  "CLR r7\n"
  "CLR r6\n"
  "CLR r5\n"
ENDM
;
; STEP macros
;
MACRO STEP
  "MOV (2*%d)(r10),r15\n"
  "MOV r15,&0130h\n"
  "MOV (2*%d)(r11),r15\n"
  "MOV r15,&0138h\n"
  "ADD &013Ah,r6\n"
  "ADDC &013Ch,r7\n"
  "ADDC r5,r8\n"
ENDM
;
; MFIN macro
;
MACRO MFIN
  "MOV r6,(2*%d)(r12)\n"
  "MOV r7,r6\n"
  "MOV r8,r7\n"
  "CLR r8\n"
ENDM
;
; LAST
;
MACRO LAST
  "MOV (2*%d)(r10),r15\n"
  "MOV r15,&0130h\n"
  "MOV (2*%d)(r11),r15\n"
  "MOV r15,&0138h\n"
  "ADD &013Ah,r6\n"
ENDM
;
; MULE
;
MACRO MUL_END
  "MOV r6,(2*%d)(r12)\n"
  "POP r5\n"
  "POP r6\n"
  "POP r7\n"
  "POP r8\n"
  "POP r12\n"
  "POP r11\n"
  "POP r10\n"
  );
ENDM
;
; SQR_START
;
MACRO SQR_START
  __asm (
  "PUSH r10\n"
  "PUSH r12\n"
  "PUSH r8\n"
  "PUSH r7\n"
  "PUSH r6\n"
  "PUSH r5\n"
  "MOV &a,r10\n"
  "MOV &c,r12\n"
  "CLR r8\n"
  "CLR r7\n"
  "CLR r6\n"
  "CLR r5\n"
ENDM
;
; DSTEP
;
MACRO DSTEP
  "MOV (2*%d)(r10),r15\n"
  "MOV r15,&0130h\n"
  "MOV (2*%d)(r10),r15\n"
  "MOV r15,&0138h\n"
  "ADD &013Ah,r6\n"
  "ADDC &013Ch,r7\n"
  "ADDC r5,r8\n"
  "ADD &013Ah,r6\n"
  "ADDC &013Ch,r7\n"
  "ADDC r5,r8\n"
ENDM
;
; SELF
;
MACRO SELF
  "MOV (2*%d)(r10),r15\n"
  "MOV r15,&0130h\n"
  "MOV r15,&0138h\n"
  "ADD &013Ah,r6\n"
  "ADDC &013Ch,r7\n"
  "ADDC r5,r8\n"
ENDM
;
; SFIN
;
MACRO SFIN
  "MOV r6,(2*%d)(r12)\n"
  "MOV r7,r6\n"
  "MOV r8,r7\n"
  "CLR r8\n"
ENDM
;
; SQR_END
;
MACRO SQR_END
  "MOV r6,(2*%d)(r12)\n"
  "POP r5\n"
  "POP r6\n"
  "POP r7\n"
  "POP r8\n"
  "POP r12\n"
  "POP r10\n"
  );
ENDM
;
; REDC_START
;
MACRO REDC_START
  __asm (
  "PUSH r10\n"
  "PUSH r11\n"
  "PUSH r12\n"
  "PUSH r8\n"
  "PUSH r7\n"
  "PUSH r6\n"
  "PUSH r5\n"
  "MOV &a,r10\n"
  "MOV &b,r11\n"
  "MOV &ndash,r12\n"
  "CLR r8\n"
  "CLR r7\n"
  "MOV r10,r6\n"
  "CLR r5\n"
ENDM
;
; RFINU macro
;
MACRO RFINU
  "MOV r6,&0130h\n"
  "MOV r12,&0138h\n"
  "MOV &013Ah,(2*%d)(r10)\n"
  "MOV r11,&0130h\n"
  "MOV &013Ah,&0138h\n"
  "ADD &013Ah,r6\n"
  "ADDC &013Ch,r7\n"
  "ADDC r5,r8\n"
  "MOV r7,r6\n"
  "MOV r8,r7\n"
  "CLR r8\n"
  "MOV (2*(%d+1))(r10),r15\n"
  "ADD r15,r6\n"
  "ADDC r5,r7\n"
  "CLR r8\n"
ENDM
;  
; RFIND macro
;
MACRO RFIND
  "MOV r6,(2*%d)(r10)\n"
  "MOV r7,r6\n"
  "MOV r8,r7\n"
  "CLR r8\n"
  "MOV (2*(%d+1))(r10),r15\n"
  "ADD r15,r6\n"
  "ADDC r5,r7\n"
  "CLR r8\n"
ENDM
;
; REDC_END macro
;
MACRO REDC_END
  "MOV r6,(2*%d)(r10)\n"
  "MOV r7,(2*(%d+1))(r10)\n"
  "POP r5\n"
  "POP r6\n"
  "POP r7\n"
  "POP r8\n"
  "POP r12\n"
  "POP r11\n"
  "POP r10\n"
  );
ENDM
;
; ADD_START macro
;
MACRO ADD_START
  __asm (
  "PUSH r10\n"
  "PUSH r11\n"
  "PUSH r12\n"
  "PUSH r13\n"
  "MOV &a,r10\n"
  "MOV &b,r11\n"
  "MOV &c,r12\n"
  "MOV (2*0)(r10),r15\n"
  "MOV (2*0)(r11),r13\n"
  "ADD r13,r15\n"
  "MOV r15,(2*0)(r12)\n"
ENDM
;
; ADD macro  - c[.]=a[.]+b[.]
;
MACRO ADD
  "MOV (2*%d)(r10),r15\n"
  "MOV (2*%d)(r11),r13\n"
  "ADDC r13,r15\n"
  "MOV r15,(2*%d)(r12)\n"
ENDM
;
; ADD_END macro.
;
MACRO ADD_END
  "CLR r15\n"
  "ADC r15\n"
  "MOV r15,&carry\n"
  "POP r13\n"
  "POP r12\n"
  "POP r11\n"
  "POP r10\n"
  );
ENDM
;
; INC_START macro. Do first one.
;
MACRO INC_START
  __asm (
  "PUSH r10\n"
  "PUSH r11\n"
  "PUSH r13\n"
  "MOV &a,r10\n"
  "MOV &b,r11\n"
  "MOV (2*0)(r10),r15\n"
  "MOV (2*0)(r11),r13\n"
  "ADD r13,r15\n"
  "MOV r15,(2*0)(r10)\n"
ENDM
;
; INC macro  a[.]+=b[.]
;
MACRO INC
  "MOV (2*%d)(r10),r15\n"
  "MOV (2*%d)(r11),r13\n"
  "ADDC r13,r15\n"
  "MOV r15,(2*%d)(r10)\n"
ENDM
MACRO INC_END
  "CLR r15\n"
  "ADC r15\n"
  "MOV r15,&carry\n"
  "POP r13\n"
  "POP r11\n"
  "POP r10\n"
  );
ENDM
MACRO SUB_START
  __asm (
  "PUSH r10\n"
  "PUSH r11\n"
  "PUSH r12\n"
  "PUSH r13\n"
  "MOV &a,r10\n"
  "MOV &b,r11\n"
  "MOV &c,r12\n"
  "MOV (2*0)(r10),r15\n"
  "MOV (2*0)(r11),r13\n"
  "SUB r13,r15\n"
  "MOV r15,(2*0)(r12)\n"
ENDM
;
; SUB macro - c[.]=a[.]-b[.]
;
MACRO SUB
  "MOV (2*%d)(r10),r15\n"
  "MOV (2*%d)(r11),r13\n"
  "SUBC r13,r15\n"
  "MOV r15,(2*%d)(r12)\n"
ENDM
MACRO SUB_END
  "CLR r15\n"
  "ADC r15\n"
  "XOR.B #1,r15\n"
  "MOV r15,&carry\n"
  "POP r13\n"
  "POP r12\n"
  "POP r11\n"
  "POP r10\n"
  );
ENDM
;
; DEC_START macro
;
MACRO DEC_START
  __asm (
  "PUSH r10\n"
  "PUSH r11\n"
  "PUSH r13\n"
  "MOV &a,r10\n"
  "MOV &b,r11\n"
  "MOV (2*0)(r10),r15\n"
  "MOV (2*0)(r11),r13\n"
  "SUB r13,r15\n"
  "MOV r15,(2*0)(r10)\n"
ENDM
; 
; DEC macro  a[.]-=b[.]
;
MACRO DEC
  "MOV (2*%d)(r10),r15\n"
  "MOV (2*%d)(r11),r13\n"
  "SUBC r13,r15\n"
  "MOV r15,(2*%d)(r10)\n"
ENDM
;
; DEC_END macro
;
MACRO DEC_END
  "CLR r15\n"
  "ADC r15\n"
  "XOR.B #1,r15\n"
  "MOV r15,&carry\n"
  "POP r13\n"
  "POP r11\n"
  "POP r10\n"
  );
ENDM
;
; KADD_START macro. Zero Carry
;
MACRO KADD_START
  "PUSH r10\n"
  "PUSH r11\n"
  "PUSH r12\n"
  "PUSH r13\n"
  "MOV &a,r10\n"
  "MOV &b,r11\n"
  "MOV &c,r12\n"
  "MOV &n,r13\n"
  "CLRC\n"
  "k%d:\n"
ENDM
;
; KASL macro
;
MACRO KASL
  "DEC r13\n"
  "JZ k%d\n"
  "CLR r15\n"
  "ADC r15\n"
  "ADD #(2*%d),r10\n"
  "ADD #(2*%d),r11\n"
  "ADD #(2*%d),r12\n"
  "RRC r15\n"
  "JMP k%d\n"
  "k%d:\n"
ENDM
;
; KADD_END macro
;
MACRO KADD_END
  "CLR r15\n"
  "ADC r15\n"
  "MOV r15,&carry\n"
  "POP r13\n"
  "POP r12\n"
  "POP r11\n"
  "POP r10\n"
  ); 
ENDM
;
; KINC_START macro
;
MACRO KINC_START
  "PUSH r10\n"
  "PUSH r11\n"
  "PUSH r13\n"
  "MOV &a,r10\n"
  "MOV &b,r11\n"
  "MOV &n,r13\n"
  "CLRC\n"
  "k%d:\n"
ENDM
;
; KIDL macro
;
MACRO KIDL
  "DEC r13\n"
  "JZ k%d\n"
  "CLR r15\n"
  "ADC r15\n"
  "ADD #(2*%d),r10\n"
  "ADD #(2*%d),r11\n"
  "RRC r15\n"
  "JMP k%d\n"
  "k%d:\n"
ENDM
;
; KINC_END macro
;
MACRO KINC_END
  "CLR r15\n"
  "ADC r15\n"
  "MOV r15,&carry\n"
  "POP r13\n"
  "POP r11\n"
  "POP r10\n"
  ); 
ENDM
;
; KDEC_START macro. Zero carry
;
MACRO KDEC_START
  "PUSH r10\n"
  "PUSH r11\n"
  "PUSH r13\n"
  "MOV &a,r10\n"
  "MOV &b,r11\n"
  "MOV &n,r13\n"
  "CLRC\n"
  "k%d:\n"
ENDM
;
; KDEC_END macro
;
MACRO KDEC_END
  "CLR r15\n"
  "ADC r15\n"
  "MOV r15,&carry\n"
  "POP r13\n"
  "POP r11\n"
  "POP r10\n"
  ); 
ENDM

⌨️ 快捷键说明

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