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


