以下是移植到stm32的程序,寫這個程序用了4天。前兩天處理32變磚,后兩天迷茫直到最后才調試出來。
“棧傳遞參數”一年多之前就有需求。在諸多朋友和老哥的指導下,直到現在才解決
;棧傳參數測試 stm32
AREA DATA,CODE,READONLY
AREA MASTER,CODE,READONLY
EXPORT __main
ENTRY
__main
GG BL CCDE ;調用CCDE
B GG
CCDE
PUSH {R4-R11,LR}
MOV R0,SP ;保存該程序棧
LDR R4,=0X11111111 ;數據壓入棧A
PUSH {R4}
LDR R5,=0X22222222
PUSH {R5}
LDR R6,=0X33333333
PUSH {R6}
LDR R7,=0X44444444
PUSH {R7}
LDR R8,=0X55555555
PUSH {R8}
LDR R9,=0X66666666
PUSH {R9}
LDR R10,=0X77777777
PUSH {R10}
LDR R11,=0X88888888
PUSH {R11}
MOV R1,SP ;保存棧頂A
BL CCEF ;調用CCEF
MOV SP,R0 ;恢復該程序棧
POP {R4-R11,LR}
BX LR
CCEF
PUSH {R4-R11,LR}
MOV R2,SP ;保存該程序棧
MOV SP,R1 ;指向棧A
POP {R4} ;取A棧值
POP {R5}
POP {R6} ;取A棧值
POP {R7}
POP {R8} ;取A棧值
POP {R9}
POP {R10} ;取A棧值
POP {R11}
MOV SP,R2 ;恢復該程序棧
POP {R4-R11,LR}
BX LR
END
|