Convert to Assembly Language M3 Please use as CMP R1 R2 MOV
Convert to Assembly Language M3
(Please use as
CMP R1, R2
MOV R1, #3)
#include
#include
int main()
{
int r1 = 3;
int r2 = 15;
int r3 = 0;
if (r1 <= r2)
{ for (int n = r1; n <= r2; n++)
{ r3 += (50 - n - n + r1 + r2); } }
else
{ r3 = abs(r1) + abs(r2); }
return 0; }
Solution
Assembly Language M3 code for given program------->
main:
push {r7}
sub sp, sp, #20
add r7, sp, #0
movs r3, #3
str r3, [r7, #8]
movs r3, #15
str r3, [r7, #12]
movs r3, #0
str r3, [r7]
ldr r2, [r7, #8]
ldr r3, [r7, #12]
cmp r2, r3
bgt .L2
ldr r3, [r7, #8]
str r3, [r7, #4]
.L4:
ldr r2, [r7, #4]
ldr r3, [r7, #12]
cmp r2, r3
bgt .L5
ldr r3, [r7, #4]
rsb r2, r3, #50
ldr r3, [r7, #4]
subs r2, r2, r3
ldr r3, [r7, #8]
add r2, r2, r3
ldr r3, [r7, #12]
add r3, r3, r2
ldr r2, [r7]
add r3, r3, r2
str r3, [r7]
ldr r3, [r7, #4]
adds r3, r3, #1
str r3, [r7, #4]
b .L4
.L2:
ldr r3, [r7, #8]
eor r2, r3, r3, asr #31
sub r2, r2, r3, asr #31
ldr r3, [r7, #12]
cmp r3, #0
it lt
rsblt r3, r3, #0
add r3, r3, r2
str r3, [r7]
.L5:
movs r3, #0
mov r0, r3
adds r7, r7, #20
mov sp, r7
ldr r7, [sp], #4
bx lr

