1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
|
[BITS 64]
[extern printf]
[global asm_main]
[segment .data]
;{
longIntFormat: db "%ld_", 0
newLine: db 10, 0
a: dq -23, 34, 51, 65, -32, 12, 67
;}
[segment .bss]
;{
;}
[segment .text]
;{
asm_main:
;{
; enter 0, 0
push r12
;{
mov r12, 7
et1:
;{
mov rdi, a
mov rsi, r12
call fonc
sub r12, 2
;}
cmp r12, 0
jg et1
;}
pop r12
; leave
mov rax, 0
ret
;}
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
fonc:
;{
; enter 0, 0
push rbx
push r13
push r12
;{
mov rbx, rdi
mov r13, rsi
mov r12, 0
jmp test2
next2:
;{
sub rsp, 40
mov rcx, longIntFormat
mov rdx, [rbx + 8 * r12]
call printf
add rsp, 40
mov rax, [rbx + 8 * r12]
add rax, 2
mov [rbx + 8 * r12], rax
inc r12
;}
test2:
cmp r12, r13
jl next2
sub rsp, 40
mov rcx, newLine
call printf
add rsp, 40
;}
pop r12
pop r13
pop rbx
; leave
mov rax, 0
ret
;}
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;} |
Partager