-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlab.asm
More file actions
107 lines (81 loc) · 1.05 KB
/
lab.asm
File metadata and controls
107 lines (81 loc) · 1.05 KB
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
100
101
102
103
104
105
106
107
extern printf
extern atoi
SECTION .data
msg1 : db "Odd = %d",10,0
msg2 : db "Even = %d",10,0
SECTION .bss
n RESB 64
count RESB 64
odd RESB 64
SECTION .text
global main
main:
mov rcx,rdi
mov r8,8
mov rdx,qword[rsi+r8]
push rdx
push rcx
push rsi
push r8
mov rdi,rdx
call atoi
mov [n],rax
pop r8
pop rsi
pop rdx
pop rdx
mov rax,[n]
mov rdx,0
mov [count],rdx
mov [odd],rdx
loop:
mov rax,[n]
cmp rax,0
je end
mov r9,10
mov rdx,0
div r9
mov [n],rax
mov rax,rdx
mov rdx,0
mov r9,2
div r9
mov rax,rdx
add rax,[odd]
mov [odd],rax
mov r9,[count]
add r9,1
mov [count],r9
mov rax,[n]
jmp loop
end:
push rdx
push rdi
push rsi
push r8
mov rdi,msg1
mov rsi,[odd]
mov rax,0
call printf
pop r8
pop rsi
pop rdi
pop rdx
mov rax,[count]
mov rbx,[odd]
sub rax,rbx
push rdx
push rdi
push rsi
push r8
mov rdi,msg2
mov rsi,rax
mov rax,0
call printf
pop r8
pop rsi
pop rdi
pop rdx
mov rax,1
mov eax,0
int 80h