From 0b8e3bdd1d2ac3946c57a35727cbbebc40860ab9 Mon Sep 17 00:00:00 2001 From: Wander_Lust Date: Thu, 21 May 2026 05:23:29 +0530 Subject: [PATCH] software --- 10byteSwap.asm | 22 ++++++++++++++++++++++ bitExtractClear.asm | 21 +++++++++++++++++++++ factorial.asm | 18 ++++++++++++++++++ func.asm | 11 +++++++++++ func2.asm | 8 ++++++++ main.asm | 12 ++++++++++++ pushPop.asm | 17 +++++++++++++++++ switchCase.asm | 39 +++++++++++++++++++++++++++++++++++++++ 8 files changed, 148 insertions(+) create mode 100644 10byteSwap.asm create mode 100644 bitExtractClear.asm create mode 100644 factorial.asm create mode 100644 func.asm create mode 100644 func2.asm create mode 100644 main.asm create mode 100644 pushPop.asm create mode 100644 switchCase.asm diff --git a/10byteSwap.asm b/10byteSwap.asm new file mode 100644 index 0000000..981be54 --- /dev/null +++ b/10byteSwap.asm @@ -0,0 +1,22 @@ +PRESERVE8 +THUMB +AREA |.text|, CODE, READONLY +EXPORT __main + +__main + LDR R0, =0x20000000 + LDR R1, =0x20000100 + MOVS R2, #10 +swap_loop + LDRB R3, [R0] + LDRB R4, [R1] + STRB R4, [R0] + STRB R3, [R1] + ADDS R1,R1,#1 + ADDS R0,R0,#1 + SUBS R2,R2,#1 + BNE swap_loop +STOP + B STOP +END + diff --git a/bitExtractClear.asm b/bitExtractClear.asm new file mode 100644 index 0000000..c1b6273 --- /dev/null +++ b/bitExtractClear.asm @@ -0,0 +1,21 @@ +PRESERVE8 +THUMB +AREA |.text|, CODE, READONLY +EXPORT __main +__main + LDR R0,=0xFFC0FFFF + LSLS R0,R0,(#32-8-16) ;(32-W-P) + LSRS R0,R0,(#32-W) ;(32-W) + + LDR R0,=0XFFC0FFFF + MOVS R1, #16 ; #P + MOVS R2, #8 ;W + MOVS R3, #(32-8-16) ;(32-W-P) + + RORS R0,R0,R1 + LSRS R0,R0,R2 + RORS R0,R0,R3 +STOP + B STOP +END + diff --git a/factorial.asm b/factorial.asm new file mode 100644 index 0000000..3a01075 --- /dev/null +++ b/factorial.asm @@ -0,0 +1,18 @@ +PRESERVE8 +THUMB +AREA |.text|, CODE, READONLY +EXPORT main + +main + MOVS R6,#5 + MOVS R4,R6 + SUBS R4,R4,#1 +LOOP + MOVS R7,R4 + MULS R7,R6,R7 + MOVS R6,R7 + SUBS R4,R4,#1 + BNE LOOP +STOP + B STOP +END diff --git a/func.asm b/func.asm new file mode 100644 index 0000000..6b51ff3 --- /dev/null +++ b/func.asm @@ -0,0 +1,11 @@ +PRESERVE8 +THUMB +AREA |.text|, CODE, READONLY +EXPORT func +EXTERN func2 +__func + PUSH{LR} + MOVS R0, #5 + BL func2 + POP{PC} +END diff --git a/func2.asm b/func2.asm new file mode 100644 index 0000000..8e5204b --- /dev/null +++ b/func2.asm @@ -0,0 +1,8 @@ +PRESERVE8 +THUMB +AREA |.text|, CODE, READONLY +EXPORT func2 +func2 + MOVS R1, #5 + BX LR +END diff --git a/main.asm b/main.asm new file mode 100644 index 0000000..ad1a09f --- /dev/null +++ b/main.asm @@ -0,0 +1,12 @@ +PRESERVE8 +THUMB +AREA |.text|, CODE, READONLY +EXPORT __main +EXTERN func +__main + BL func + MOVS R0, #40 + NOP +STOP + B STOP +END diff --git a/pushPop.asm b/pushPop.asm new file mode 100644 index 0000000..dbfe4d7 --- /dev/null +++ b/pushPop.asm @@ -0,0 +1,17 @@ +PRESERVE8 +THUMB +AREA |.text|, CODE, READONLY +EXPORT __main + +__main + LDR R3,=0X20000100 + LDR R0,=0X20000050 + LDMIA R3!,{R1,R2} + + MOV SP, R0 + PUSH {R1,R2} + POP {R1,R2} +STOP + B STOP +END + diff --git a/switchCase.asm b/switchCase.asm new file mode 100644 index 0000000..9eabe59 --- /dev/null +++ b/switchCase.asm @@ -0,0 +1,39 @@ +PRESERVE8 +THUMB +AREA |.text|, CODE, READONLY +EXPORT __main +__main + LDR R0,= 0 + CMP R0, #3 + BHI default_case + MOVS R2, #4 + MULS R0,R0,R2 + LDR R1,= BranchTable + LDR R2, [R1,R0] + BX R2 + ALIGN 4 +BranchTable + DCD Dest0 + DCD Dest1 + DCD Dest2 + DCD Dest3 +default_case + stop + B stop +Dest0 + LDR R0, =10 + stop1 + B stop1 +Dest1 + LDR R0, =20 + stop2 + B stop2 +Dest2 + LDR R0, =30 + stop3 + B stop3 +Dest3 + LDR R0, =40 + stop4 + B stop4 +END