PUBLIC juzhen
/* ///////////////////////////////////////////////////////////////////////////
; void juzhen (u8 *yuan,u8 *mud,u8 gao); 正常8字节矩阵转换
; buf = (buf<<1) | (buf[i+1]>>7).
; Resources:
; R0,R1,R3: parameters
; R5 :buf
; R6 :buf[i+1]
;/////////////////////////////////////////////////////////////////////////// */
RSEG CODE:CODE:NOROOT(2)
THUMB
juzhen
PUSH {R3-R12}
a_main
MOV R4,#0x00
MOV R5,#0x00
MOV R6,#0x00
MOV R7,#0x00
MOV R8,#0x00
MOV R9,#0x00
MOV R10,#0x00
MOV R11,#0x00
LDRB R3,[R0,#+0] ;第一个数
BFI R11,R3,#7,#1
LSR R3,R3,#1
BFI R10,R3,#7,#1
LSR R3,R3,#1
BFI R9,R3,#7,#1
LSR R3,R3,#1
BFI R8,R3,#7,#1
LSR R3,R3,#1
BFI R7,R3,#7,#1
LSR R3,R3,#1
BFI R6,R3,#7,#1
LSR R3,R3,#1
BFI R5,R3,#7,#1
LSR R3,R3,#1
BFI R4,R3,#7,#1
CMP R2, #1
BEQ.W a_main_end
LDRB R3,[R0,#+1] ;第二个数
BFI R11,R3,#6,#1
LSR R3,R3,#1
BFI R10,R3,#6,#1
LSR R3,R3,#1
BFI R9,R3,#6,#1
LSR R3,R3,#1
BFI R8,R3,#6,#1
LSR R3,R3,#1
BFI R7,R3,#6,#1
LSR R3,R3,#1
BFI R6,R3,#6,#1
LSR R3,R3,#1
BFI R5,R3,#6,#1
LSR R3,R3,#1
BFI R4,R3,#6,#1
CMP R2, #2
BEQ.W a_main_end
LDRB R3,[R0,#+2] ;第三个数
BFI R11,R3,#5,#1
LSR R3,R3,#1
BFI R10,R3,#5,#1
LSR R3,R3,#1
BFI R9,R3,#5,#1
LSR R3,R3,#1
BFI R8,R3,#5,#1
LSR R3,R3,#1
BFI R7,R3,#5,#1
LSR R3,R3,#1
BFI R6,R3,#5,#1
LSR R3,R3,#1
BFI R5,R3,#5,#1
LSR R3,R3,#1
BFI R4,R3,#5,#1
CMP R2, #3
BEQ.W a_main_end
LDRB R3,[R0,#+3] ;第四个数
BFI R11,R3,#4,#1
LSR R3,R3,#1
BFI R10,R3,#4,#1
LSR R3,R3,#1
BFI R9,R3,#4,#1
LSR R3,R3,#1
BFI R8,R3,#4,#1
LSR R3,R3,#1
BFI R7,R3,#4,#1
LSR R3,R3,#1
BFI R6,R3,#4,#1
LSR R3,R3,#1
BFI R5,R3,#4,#1
LSR R3,R3,#1
BFI R4,R3,#4,#1
CMP R2, #4
BEQ.W a_main_end
LDRB R3,[R0,#+4] ;第五个数
BFI R11,R3,#3,#1
LSR R3,R3,#1
BFI R10,R3,#3,#1
LSR R3,R3,#1
BFI R9,R3,#3,#1
LSR R3,R3,#1
BFI R8,R3,#3,#1
LSR R3,R3,#1
BFI R7,R3,#3,#1
LSR R3,R3,#1
BFI R6,R3,#3,#1
LSR R3,R3,#1
BFI R5,R3,#3,#1
LSR R3,R3,#1
BFI R4,R3,#3,#1
CMP R2, #5
BEQ.W a_main_end
LDRB R3,[R0,#+5] ;第六个数
BFI R11,R3,#2,#1
LSR R3,R3,#1
BFI R10,R3,#2,#1
LSR R3,R3,#1
BFI R9,R3,#2,#1
LSR R3,R3,#1
BFI R8,R3,#2,#1
LSR R3,R3,#1
BFI R7,R3,#2,#1
LSR R3,R3,#1
BFI R6,R3,#2,#1
LSR R3,R3,#1
BFI R5,R3,#2,#1
LSR R3,R3,#1
BFI R4,R3,#2,#1
CMP R2, #6
BEQ.W a_main_end
LDRB R3,[R0,#+6] ;第七个数
BFI R11,R3,#1,#1
LSR R3,R3,#1
BFI R10,R3,#1,#1
LSR R3,R3,#1
BFI R9,R3,#1,#1
LSR R3,R3,#1
BFI R8,R3,#1,#1
LSR R3,R3,#1
BFI R7,R3,#1,#1
LSR R3,R3,#1
BFI R6,R3,#1,#1
LSR R3,R3,#1
BFI R5,R3,#1,#1
LSR R3,R3,#1
BFI R4,R3,#1,#1
CMP R2, #7
BEQ.W a_main_end
LDRB R3,[R0,#+7] ;第八个数
BFI R11,R3,#0,#1
LSR R3,R3,#1
BFI R10,R3,#0,#1
LSR R3,R3,#1
BFI R9,R3,#0,#1
LSR R3,R3,#1
BFI R8,R3,#0,#1
LSR R3,R3,#1
BFI R7,R3,#0,#1
LSR R3,R3,#1
BFI R6,R3,#0,#1
LSR R3,R3,#1
BFI R5,R3,#0,#1
LSR R3,R3,#1
BFI R4,R3,#0,#1
a_main_end:
STRB R4,[R1,#+0]
STRB R5,[R1,#+1]
STRB R6,[R1,#+2]
STRB R7,[R1,#+3]
STRB R8,[R1,#+4]
STRB R9,[R1,#+5]
STRB R10,[R1,#+6]
STRB R11,[R1,#+7]
POP {R3-R12}
BX LR |