extern printf, scanf
global main
section .data
; повідомлення для користувача
msg db "Введіть елементи:", 10, 0
; форматна стрічка для виводу (для printf)
in_fmt db "%ld",0
; форматна стрічка для виводу (для printf)
out_msg1 db "так", 10, 0
out_msg2 db "ні", 10, 0
section .bss
; Змінна 8 байти
num resb 8
x resb 8
y resb 8
main:
; виклик scanf(text) scanf(in_fmt, num)==scanf("%ld", num)
mov rdx, num ; Як і в scanf тут вказується
mov rcx, in_fmt ; адреса в пам'яті куди буде
sub rsp, 40 ; записано результат вводу
call scanf
add rsp, 40
; завершення scanf(...)
; виклик scanf(text) scanf(in_fmt, num)==scanf("%ld", num)
mov rdx, x ; Як і в scanf тут вказується
mov rcx, in_fmt ; адреса в пам'яті куди буде
sub rsp, 40 ; записано результат вводу
call scanf
add rsp, 40
; завершення scanf(...)
; виклик scanf(text) scanf(in_fmt, num)==scanf("%ld", num)
mov rdx, y ; Як і в scanf тут вказується
mov rcx, in_fmt ; адреса в пам'яті куди буде
sub rsp, 40 ; записано результат вводу
call scanf
add rsp, 40
; завершення scanf(...)
mov rax, qword[num]
cmp rax, qword[x]
jl out_msg
cmp rax, qword[y]
jg out_msg
mov rcx, in_d
jmp print_msg
out_msg:
mov rcx, out_d
print_msg
CMOVxx
cmp rax, qword[x],0
jl число негативне
cmp rax, qword[y],8000h
jb число позитивне