section .data
char_A db 'A'
msg_hello db "Hello", 0
msg_hi db "Hi!", 0xa
len_hi equ $ - msg_hi
section .bss
digit_buf resb 1
section .text
global _start
; ЗАДАЧА 1
task_1:
mov rax, 1
mov rdi, 1
mov rsi, char_A
mov rdx, 1
syscall
ret
; ЗАДАЧА 2
task_2:
mov rax, 7
add al, 48
mov [digit_buf], al
mov rax, 1
mov rdi, 1
mov rsi, digit_buf
mov rdx, 1
syscall
ret
; ЗАДАЧА 3
task_3:
mov rax, 3
add rax, 4
add rax, 5
ret
; ЗАДАЧА 4
task_4:
mov rax, 7
mov rbx, 6
imul rax, rbx
ret
; ЗАДАЧА 5
task_5:
mov rax, 15
mov rbx, 27
cmp rax, rbx
jge .done
mov rax, rbx
.done:
ret
; ЗАДАЧА 6
task_6:
mov rax, 13
shl rax, 1
ret
; ЗАДАЧА 7
task_7:
xor rax, rax
mov rcx, 10
.loop:
add rax, rcx
sub rcx, 2
jnz .loop
ret
; ЗАДАЧА 8
task_8:
mov rsi, msg_hello
xor rcx, rcx
.count_loop:
cmp byte [rsi + rcx], 0
je .done
inc rcx
jmp .count_loop
.done:
mov rax, rcx
ret
; ЗАДАЧА 9
task_9:
mov rcx, 2
.print_loop:
push rcx
mov rax, 1
mov rdi, 1
mov rsi, msg_hi
mov rdx, len_hi
syscall
pop rcx
dec rcx
jnz .print_loop
ret
; ЗАДАЧА 10
task_10:
mov rax, 2
mov rcx, 4
.pow_loop:
shl rax, 1
dec rcx
jnz .pow_loop
ret
; ТОЧКА ВХОДА
_start:
xor rax, rax ; по умолчанию код выхода = 0
; --- Задачи с выводом на экран ---
call task_1 ; выведет A
; call task_2 ; выведет 7
; call task_9 ; выведет Hi! дважды
; --- Задачи с проверкой через Exit code (результат попадет в rax) ---
; call task_3 ; Exit code: 12
; call task_4 ; Exit code: 42
; call task_5 ; Exit code: 27
; call task_6 ; Exit code: 26
; call task_7 ; Exit code: 30
; call task_8 ; Exit code: 5
; call task_10 ; Exit code: 32
; Завершение программы с кодом из rax
mov rdi, rax
mov rax, 60
syscall
To embed this project on your website, copy the following code and paste it into your website's HTML: