Possible Solution

Factorial (with for loop)

.equ    ZERO,   0
.equ    RIP,    1
.equ    I,      7
.equ    N,      8
.equ    RES,    9

.data
n:
        .quad   4

.text
        movq    n(%RIP),        %N                              # load n from data segment
        orq     $1,             %ZERO,          %RES            # res = 1
        orq     $2,             %ZERO,          %I              # i   = 2
        jmp     forcond                                         # check for_cond
forbody:
        mulq    %I,             %RES,           %RES            # res = i*res
        addq    $1,             %I,             %I              # i   = i+1
forcond:
        subq    %I,             %N,             %ZERO           # if (n-i>=0)
        jae     forbody                                         #     goto forbody
        movq    %RES,           n(%RIP)                         # store res as n in data segemnt
        halt

Vector-Sum

.equ    ZERO,   0
.equ    RIP,    1
.equ    N,      7
.equ    X,      8
.equ    I,      9
.equ    TMP,    10
.equ    RES,    11

.data
n:
        .quad   4
x:
        .quad   1
        .quad   2
        .quad   3
        .quad   4

.text
        movq    n(%RIP),        %N                              # load n from data segment
        shlq    $3,             %N,             %N              # n = n*8
        orq     $x,             %ZERO,          %X              # store address x in %X
        orq     %ZERO,          %ZERO,          %I              # i   = 0
        orq     %ZERO,          %ZERO,          %RES            # res = 0
        jmp     forcond                                         # check for_cond
forbody:
        movq    (%X,%I),        %TMP                            # tmp = x[i]
        addq    %TMP,           %RES,           %RES            # res = res + tmp
        addq    $8,             %I,             %I              # i   = i+8
forcond:
        subq    %I,             %N,             %ZERO           # if (n-i>0)
        ja      forbody                                         #     goto forbody
        movq    %RES,           n(%RIP)                         # store res as n in data segemnt
        halt