-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathoutput.asm
More file actions
115 lines (92 loc) · 1.5 KB
/
output.asm
File metadata and controls
115 lines (92 loc) · 1.5 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
108
109
110
111
112
113
114
115
section .bss
digitSpace resb 100
digitSpacePos resb 8
Vvar1 resb 8
Vvar2 resb 8
Vvar3 resb 8
Vvar4 resb 8
section .data
text db "Hello, World!",10
S1 db "arithmetic operation",10,0
S2 db "priority",10,0
section .text
global _start
_start:
mov rax,S1
call _print_string
mov rax,10
mov [Vvar1],rax
mov rax,5
mov [Vvar2],rax
mov rax,60
mov [Vvar3],rax
mov rax,6
mov [Vvar4],rax
mov rax,[Vvar1]
call _print_num
mov rax,[Vvar2]
call _print_num
mov rax,[Vvar3]
call _print_num
mov rax,[Vvar4]
call _print_num
mov rax,S2
call _print_string
mov rax,5
mov [Vvar1],rax
mov rax,85
mov [Vvar2],rax
mov rax,[Vvar1]
call _print_num
mov rax,[Vvar2]
call _print_num
mov rax, 60
mov rdi, 0
syscall
_print_num:
mov rcx, digitSpace
mov rbx, 10
mov [rcx], rbx
inc rcx
mov [digitSpacePos], rcx
_printRAXLoop:
mov rdx, 0
mov rbx, 10
div rbx
push rax
add rdx, 48
mov rcx, [digitSpacePos]
mov [rcx], dl
inc rcx
mov [digitSpacePos], rcx
pop rax
cmp rax, 0
jne _printRAXLoop
_printRAXLoop2:
mov rcx, [digitSpacePos]
mov rax, 1
mov rdi, 1
mov rsi, rcx
mov rdx, 1
syscall
mov rcx, [digitSpacePos]
dec rcx
mov [digitSpacePos], rcx
cmp rcx, digitSpace
jge _printRAXLoop2
ret
_print_string:
push rax
mov rbx, 0
_printLoop:
inc rax
inc rbx
mov cl, [rax]
cmp cl, 0
jne _printLoop
mov rax, 1
mov rdi, 1
pop rsi
mov rdx, rbx
syscall
ret