<!--Obj 1 - addition,substraction using data processing immediate data-->
MOV R0, #0x40
MOV R1, #0x50
ADD R2, R0, R1
SUB R3, R0, R1
MUL R4, R0, R1
my_exit: b my_exit
<!--Obj 2 - addition,substraction,multiplication load addressing mode-->
LDR R0,= LIST
LDR R1, [R0], #4
LDR R2, [R0], #4
LDR R3, [R0], #4
ADD R4, R1, R2
STR R4, [R0], #4
SUB R5, R1, R3
STR R5, [R0]
MUL R6, R2, R3
STR R6, [R0]
EXIT: B EXIT
.DATA
LIST:
.WORD 2,3,4
<!--Obj 3 - and,or,xor and not using load adressing mode -->
LDR R0, = 0x20100031
LDR R1, [R0], #4
LDR R2, [R0], #4
AND R3, R1, R2
STR R3, [R0], #4
ORR R4, R1, R2
COR R5, R1, R2
STR R5, R1, R2
MVN R6, R2
STR R6, [R0]
MY_EXIT: B MY_EXIT
<!--lARGEST IN ARRAY-->
.global _start
_start:
LDR R0,= COUNT
LDR R1, [R0]
MOV R4,#0X00
LDR R3,=ARRAY
BACK: LDR R3, [R2],#4
CMP R4,R3
BGT FWD
MOV R4,R3
FWD: SUBS R1,R1,#01
BNE BACK
STR R4,[R2]
EXIT: B EXIT
.DATA
COUNT: .WORD 0x05
ARRAY: .WORD 0x15, 0x35, 0x45, 0x10, 0x45
RESULT:
<!--SMALLEST IN ARRAY-->
.global _start
_start:
LDR R0,= COUNT
LDR R1, [R0]
MOV R4,#0X00
LDR R3,=ARRAY
BACK: LDR R3, [R2],#4
CMP R4,R3
BLT FWD
MOV R4,R3
FWD: SUBS R1,R1,#01
BNE BACK
STR R4,[R2]
EXIT: B EXIT
.DATA
COUNT: .WORD 0x05
ARRAY: .WORD 0x15, 0x35, 0x45, 0x10, 0x45
RESULT:
<!--even and odd-->
.global _start
_start:
LDR R0,= COUNT
LDR R1, [R0]
LDR R3,=ARRAY
LDR R4,= EVEN
LDR R5,= ODD
BACK: LDR R6, [R3],#4
ANDS R7,R6,#1
BEQ FWD
STR R6,[R5],#4
D FWD1
FWD: STR R6,[R5],#4
FWD1: SUBS R1,R1,#01
BNE BACK
EXIT: B EXIT
.DATA
COUNT: .WORD 0x07
ARRAY: .WORD 0x15, 0x35, 0x32, 0x45, 0x10, 0x4f, 0x34
EVEN: 0,0,0,0,0
ODD: 0,0,0,0,0
<!--Obj 3 - Gray code-->