section .data
arr dw 10, 25, 33, 47, 78
len equ ($ - arr) / 2
msg db "Результат: ", 0
section .bss
buffer resb 20
section .text
global _start
_start:
movsx eax, word [arr]
movsx ebx, word [arr + (len - 1) * 2]
sub eax, ebx
mov rdi, msg
call print_string
mov rdi, rax
call print_int
mov rdi, 10
call print_char
mov rax, 60
xor rdi, rdi
syscall
print_string:
push rax
push rbx
push rcx
push rdx
mov rcx, rdi
xor rdx, rdx
.strlen_loop:
cmp byte [rcx + rdx], 0
je .got_len
inc rdx
jmp .strlen_loop
.got_len:
mov rax, 1
mov rdi, 1
mov rsi, rcx
syscall
pop rdx
pop rcx
pop rbx
pop rax
ret
print_char:
push rax
push rdi
mov [buffer], dil
mov rax, 1
mov rdi, 1
mov rsi, buffer
mov rdx, 1
syscall
pop rdi
pop rax
ret
print_int:
push rax
push rbx
push rcx
push rdx
push rdi
mov eax, edi
cmp eax, 0
jge .positive
mov dil, '-'
call print_char
neg eax
.positive:
mov ebx, 10
mov ecx, buffer + 19
mov byte [ecx], 0
dec ecx
.digit_loop:
xor edx, edx
add dl, '0'
mov [ecx], dl
dec ecx
test eax, eax
jnz .digit_loop
mov rdi, rcx
inc rdi
call print_string
pop rdi
pop rdx
pop rcx
pop rbx
pop rax
ret
c2VjdGlvbiAuZGF0YQogICAgYXJyICAgICBkdyAxMCwgMjUsIDMzLCA0NywgNzgKICAgIGxlbiAgICAgZXF1ICgkIC0gYXJyKSAvIDIKICAgIG1zZyAgICAgZGIgItCg0LXQt9GD0LvRjNGC0LDRgjogIiwgMAoKc2VjdGlvbiAuYnNzCiAgICBidWZmZXIgIHJlc2IgMjAKCnNlY3Rpb24gLnRleHQKICAgIGdsb2JhbCBfc3RhcnQKCl9zdGFydDoKICAgIG1vdnN4IGVheCwgd29yZCBbYXJyXQogICAgbW92c3ggZWJ4LCB3b3JkIFthcnIgKyAobGVuIC0gMSkgKiAyXQogICAgc3ViICAgZWF4LCBlYngKCiAgICBtb3YgICByZGksIG1zZwogICAgY2FsbCAgcHJpbnRfc3RyaW5nCgogICAgbW92ICAgcmRpLCByYXgKICAgIGNhbGwgIHByaW50X2ludAoKICAgIG1vdiAgIHJkaSwgMTAKICAgIGNhbGwgIHByaW50X2NoYXIKCiAgICBtb3YgICByYXgsIDYwCiAgICB4b3IgICByZGksIHJkaQogICAgc3lzY2FsbAoKcHJpbnRfc3RyaW5nOgogICAgcHVzaCByYXgKICAgIHB1c2ggcmJ4CiAgICBwdXNoIHJjeAogICAgcHVzaCByZHgKICAgIG1vdiByY3gsIHJkaQogICAgeG9yIHJkeCwgcmR4Ci5zdHJsZW5fbG9vcDoKICAgIGNtcCBieXRlIFtyY3ggKyByZHhdLCAwCiAgICBqZSAuZ290X2xlbgogICAgaW5jIHJkeAogICAgam1wIC5zdHJsZW5fbG9vcAouZ290X2xlbjoKICAgIG1vdiByYXgsIDEKICAgIG1vdiByZGksIDEKICAgIG1vdiByc2ksIHJjeAogICAgc3lzY2FsbAogICAgcG9wIHJkeAogICAgcG9wIHJjeAogICAgcG9wIHJieAogICAgcG9wIHJheAogICAgcmV0CgpwcmludF9jaGFyOgogICAgcHVzaCByYXgKICAgIHB1c2ggcmRpCiAgICBtb3YgW2J1ZmZlcl0sIGRpbAogICAgbW92IHJheCwgMQogICAgbW92IHJkaSwgMQogICAgbW92IHJzaSwgYnVmZmVyCiAgICBtb3YgcmR4LCAxCiAgICBzeXNjYWxsCiAgICBwb3AgcmRpCiAgICBwb3AgcmF4CiAgICByZXQKCnByaW50X2ludDoKICAgIHB1c2ggcmF4CiAgICBwdXNoIHJieAogICAgcHVzaCByY3gKICAgIHB1c2ggcmR4CiAgICBwdXNoIHJkaQoKICAgIG1vdiBlYXgsIGVkaQoKICAgIGNtcCBlYXgsIDAKICAgIGpnZSAucG9zaXRpdmUKCiAgICBtb3YgZGlsLCAnLScKICAgIGNhbGwgcHJpbnRfY2hhcgogICAgbmVnIGVheAoKLnBvc2l0aXZlOgogICAgbW92IGVieCwgMTAKICAgIG1vdiBlY3gsIGJ1ZmZlciArIDE5CiAgICBtb3YgYnl0ZSBbZWN4XSwgMAogICAgZGVjIGVjeAoKLmRpZ2l0X2xvb3A6CiAgICB4b3IgZWR4LCBlZHgKICAgIGRpdiBlYngKICAgIGFkZCBkbCwgJzAnCiAgICBtb3YgW2VjeF0sIGRsCiAgICBkZWMgZWN4CiAgICB0ZXN0IGVheCwgZWF4CiAgICBqbnogLmRpZ2l0X2xvb3AKCiAgICBtb3YgcmRpLCByY3gKICAgIGluYyByZGkKICAgIGNhbGwgcHJpbnRfc3RyaW5nCgogICAgcG9wIHJkaQogICAgcG9wIHJkeAogICAgcG9wIHJjeAogICAgcG9wIHJieAogICAgcG9wIHJheAogICAgcmV0