-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathiter.asm
99 lines (88 loc) · 956 Bytes
/
iter.asm
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
89
90
91
92
93
94
95
96
97
98
99
extern printf
extern atoi
SECTION .data
forS: db '%s',10,0
forD: db '%d',10,0
SECTION .bss
i RESB 64
j RESB 64
n RESB 64
S RESB 64
SECTION .text
global main
main:
mov rcx,rdi
mov r8,8
mov rdx, qword[rsi+r8]
; mov to i
push rcx
push rdx
push rsi
push r8
mov rdi,rdx
call atoi
mov [i],rax
pop r8
pop rsi
pop rdx
pop rcx
add r8,8
; mov to j
push rcx
push rdx
push rsi
push r8
mov rdx, qword[rsi+r8]
mov rdi,rdx
call atoi
mov [j], rax
pop r8
pop rsi
pop rdx
pop rcx
add r8,8
push rcx
push rdx
push rsi
push r8
mov rdx, qword[rsi+r8]
mov rdi,rdx
call atoi
mov [n], rax
pop r8
pop rsi
pop rdx
pop rcx
mov rax,0
mov [S],rax
repeat:
mov eax,[n]
inc eax
cmp eax,[i]
jz end
mov eax,[i]
mov ebx,[j]
mul ebx
mov ebx,[S]
add eax,ebx
mov [S],eax
mov eax,[i]
inc eax
mov [i],eax
jmp repeat
end:
push rcx
push rdx
push rsi
push r8
mov rdi,forD
mov rsi, [S]
mov rax,0
call printf
pop r8
pop rsi
pop rdx
pop rcx
mov eax,1
mov rbx,0
int 80h