ARM7 Codes
ARM7 Codes
Write a program in ARM assembly language to add and subtract two 32-bit numbers
using:
a) Direct addressing mode
Addition:
area program, code, readonly
entry
LDR R1,value1
LDR R2,value2
ADD R3,R1,R2
area program,data,readonly
value1 DCD &00000005
value2 DCD &00000004
END
1
Subtraction:
area program, code, readonly
entry
LDR R1,value1
LDR R2,value2
SUB R3,R1,R2
2
b) Indirect addressing mode
Addition:
area program, code, readonly
entry
LDR R0,value1
LDR R1,[R0]
LDR R2,value2
LDR R3,[R2]
ADD R4,R1,R3
area program,data,readonly
value1 DCD &10000024
value2 DCD &10000028
END
Subtraction:
area program, code, readonly
entry
LDR R0,value1
LDR R1,[R0]
LDR R2,value2
LDR R3,[R2]
SUB R4,R1,R3
area program, data, readonly
value1 DCD &10000024
value2 DCD &10000028
END
3
c) Barrel shifter
Addition:
area program, code, readonly
entry
LDR R1,value1
LDR R2,value2
ADD R0,R1,R2,LSL #2
SWI&11
Subtraction:
area program, code, readonly
entry
LDR R1,value1
LDR R2,value2
4
ADD R0,R1,R2,LSL #2
SWI&11
area program, data, readonly
value1 DCD &00001000
value2 DCD &00001010
END
5
2. Write a program to perform left and right shift of a number.
MOV R0,R1,LSL #2
MOV R0,R1,LSL R2
MOV R0,R1,LSR #2
MOV R0,R1,LSR R2
MOV R0,R1,ASR #2
MOV R0,R1,ASR R2
MOV R0,R1,ASL #2
MOV R0,R1,ASL R2
MOV R0,R1,ROR #2
MOV R0,R1,ROR R2
END
6
Logical Left Shift:
7
Logical Right Shift
area program,code,readonly
entry
main
LDR R1,value
MVN R1,R1
SW1 &11
area program,data,readonly
value DCD &00000001
END
8
4. Write a program to find whether a number is even or odd.
9
10
5. Write a program to perform Multiplication using addition.
11
6. Write a program to store Multiplication table of a number.
area program,data,readonly
value1 DCD &00000002
value2 DCD &0000000A
END
12
7. Write a program to perform Division using subtraction.
area program,data,readonly
value1 DCD &0000000A
value2 DCD &00000002
END
13
8. Write a program to count the number of characters in a given string.
AREA countnoofchar,data,readonly
String DCB "HELLO"
END
14
9. Write a program to find the number of occurence of a particular character in a string.
15
10. Write a program to add two integer strings.
area program,data,readonly
count DCD &00000004
val1 DCB 2,4,6,8
val2 DCB 1,5,3,7
val3 DCD &00000000
END
16
11. Write a program to find the factorial of a number.
AREA fact,data,readonly
num DCD &00000003
END
17
12. Write a program to perform 64-bit addition of two 64-bit number.
LDR R0,=val1
LDR R1,[R0]
18
LDR R2,[R0,#0x04]
LDR R0,=val2
LDR R3,[R0]
LDR R4,[R0,#0x04]
ADDS R5,R2,R4
ADC R6,R1,R3
LDR R1,=result
STR R6,result
STR R5,[R1,#0x04]
area program,data,readonly
val1 DCD &12A2E640,&F2100123
val2 DCD &001019BF,&40023F51
result DCD &00000000
END
19
13. Write a program to find the largest number in an array.
area program,code,readonly
entry
main
LDR R0, =arr
LDRB R1,[R0]
LDR R2, arrsize
LOOP
LDRB R3,[R0],#0x01
CMP R3,R1
MOVGT R1,R3
SUB R2, #0x01
CMP R2, #0x00
BNE LOOP
area program,data,readonly
arrsize DCD &00000006
arr DCB 23,45,56,20,72,19
END
20
14. Write a program to copy an array.
21
15. Write a program in ARM assembly language to implement the following equation:
i. ax2+by2
area program, code, readonly
entry
LDR R0,value1
LDR R1,value2
LDR R2,value3
LDR R3,value4
MUL R4,R2,R2
MUL R5,R4,R0
MUL R6,R3,R3
MUL R7,R6,R1
ADD R8,R5,R7
area program, data, readonly
value1 DCD &00000001
value2 DCD &00000002
value3 DCD &00000003
value4 DCD &00000004
END
22
ii) 6(x+y) +2z+4
area program, code, readonly
entry
LDR R0,value1
LDR R1,value2
LDR R2,value3
ADD R3,R0,R1
MUL R4, #6
MUL R2, #2
ADD R5,R4,R2,#4
16. Write a program in ARM assembly language to count the number of 1s and 0s in a
given byte and verify the result.
23
24