The sum of the squares of the first ten natural numbers is,
12 + 22 + ... + 102 = 385
The square of the sum of the first ten natural numbers is,
(1 + 2 + ... + 10)2 = 552 = 3025
Hence the difference between the sum of the squares of the first ten natural numbers and the square of the sum is 3025 - 385 = 2640.
Find the difference between the sum of the squares of the first one hundred natural numbers and the square of the sum.
.syntax unified .equ limit,100 number .req r4 sumsq .req r5 sqsum .req r6 tmp .req r7 .section .rodata .align 2 string: .asciz "%d\n" .text .align 2 .global main .type main, %function main: stmfd sp!, {r4-r7, lr} mov sqsum, 0 mov sumsq, 0 ldr number, =limit loop: mul tmp, number, number add sqsum, sqsum, tmp # decrement number and loop or exit subs number, number, 1 beq end_loop b loop end_loop: ldr number, =limit add number, number, 1 ldr sumsq, =limit mul sumsq, sumsq, number lsr sumsq, sumsq, 1 mul sumsq, sumsq, sumsq last: sub tmp, sumsq, sqsum mov r1, tmp ldr r0, =string @ store address of start of string to r0 bl printf mov r0, 0 ldmfd sp!, {r4-r7, pc} mov r7, 1 @ set r7 to 1 - the syscall for exit swi 0 @ then invoke the syscall from linux
No comments:
Post a Comment