section .data
num1 dd -33
num2 dd 22
msg db "Результат: "
msg_len equ $ - msg
newline db 10
; Буфер достаточно большой для 64-битного числа со знаком
buffer db "00000000000000000000", 0 ; 20 нулей + терминатор
section .text
global _start
_start:
; Умножение
mov eax, [num1]
imul dword [num2]
mov [num1], eax ; временно сохраняем
; Вывод сообщения
mov rax, 1
mov rdi, 1
mov rsi, msg
mov rdx, msg_len
syscall
; Преобразование числа в строку
mov eax, [num1] ; результат умножения
mov rdi, buffer + 19 ; конец буфера
mov byte [rdi], 0 ; терминатор
mov ebx, 10 ; делитель
mov ecx, eax ; сохраняем для знака
; Обработка знака
cmp eax, 0
jge .positive
neg eax
.positive:
xor edx, edx
add dl, '0'
dec rdi
mov [rdi], dl
test eax, eax
jnz .positive
; Добавляем минус если нужно
cmp ecx, 0
jge .output
dec rdi
mov byte [rdi], '-'
.output:
; Вывод результата
mov rsi, rdi
mov rdx, buffer + 20
sub rdx, rdi
mov rax, 1
mov rdi, 1
syscall
; Новая строка
mov rax, 1
mov rdi, 1
mov rsi, newline
mov rdx, 1
syscall
; Выход
mov rax, 60
xor rdi, rdi
syscall
c2VjdGlvbiAuZGF0YQogICAgbnVtMSAgICBkZCAtMzMKICAgIG51bTIgICAgZGQgMjIKICAgIAogICAgbXNnICAgICBkYiAi0KDQtdC30YPQu9GM0YLQsNGCOiAiCiAgICBtc2dfbGVuIGVxdSAkIC0gbXNnCiAgICBuZXdsaW5lIGRiIDEwCiAgICA7INCR0YPRhNC10YAg0LTQvtGB0YLQsNGC0L7Rh9C90L4g0LHQvtC70YzRiNC+0Lkg0LTQu9GPIDY0LdCx0LjRgtC90L7Qs9C+INGH0LjRgdC70LAg0YHQviDQt9C90LDQutC+0LwKICAgIGJ1ZmZlciAgZGIgIjAwMDAwMDAwMDAwMDAwMDAwMDAwIiwgMCAgOyAyMCDQvdGD0LvQtdC5ICsg0YLQtdGA0LzQuNC90LDRgtC+0YAKCnNlY3Rpb24gLnRleHQKICAgIGdsb2JhbCBfc3RhcnQKCl9zdGFydDoKICAgIDsg0KPQvNC90L7QttC10L3QuNC1CiAgICBtb3YgZWF4LCBbbnVtMV0KICAgIGltdWwgZHdvcmQgW251bTJdCiAgICBtb3YgW251bTFdLCBlYXggIDsg0LLRgNC10LzQtdC90L3QviDRgdC+0YXRgNCw0L3Rj9C10LwKICAgIAogICAgOyDQktGL0LLQvtC0INGB0L7QvtCx0YnQtdC90LjRjwogICAgbW92IHJheCwgMQogICAgbW92IHJkaSwgMQogICAgbW92IHJzaSwgbXNnCiAgICBtb3YgcmR4LCBtc2dfbGVuCiAgICBzeXNjYWxsCgogICAgOyDQn9GA0LXQvtCx0YDQsNC30L7QstCw0L3QuNC1INGH0LjRgdC70LAg0LIg0YHRgtGA0L7QutGDCiAgICBtb3YgZWF4LCBbbnVtMV0gIDsg0YDQtdC30YPQu9GM0YLQsNGCINGD0LzQvdC+0LbQtdC90LjRjwogICAgbW92IHJkaSwgYnVmZmVyICsgMTkgIDsg0LrQvtC90LXRhiDQsdGD0YTQtdGA0LAKICAgIG1vdiBieXRlIFtyZGldLCAwICAgICA7INGC0LXRgNC80LjQvdCw0YLQvtGACiAgICBtb3YgZWJ4LCAxMCAgICAgICAgICAgOyDQtNC10LvQuNGC0LXQu9GMCiAgICBtb3YgZWN4LCBlYXggICAgICAgICAgOyDRgdC+0YXRgNCw0L3Rj9C10Lwg0LTQu9GPINC30L3QsNC60LAKICAgIAogICAgOyDQntCx0YDQsNCx0L7RgtC60LAg0LfQvdCw0LrQsAogICAgY21wIGVheCwgMAogICAgamdlIC5wb3NpdGl2ZQogICAgbmVnIGVheAogICAgCi5wb3NpdGl2ZToKICAgIHhvciBlZHgsIGVkeAogICAgZGl2IGVieAogICAgYWRkIGRsLCAnMCcKICAgIGRlYyByZGkKICAgIG1vdiBbcmRpXSwgZGwKICAgIHRlc3QgZWF4LCBlYXgKICAgIGpueiAucG9zaXRpdmUKICAgIAogICAgOyDQlNC+0LHQsNCy0LvRj9C10Lwg0LzQuNC90YPRgSDQtdGB0LvQuCDQvdGD0LbQvdC+CiAgICBjbXAgZWN4LCAwCiAgICBqZ2UgLm91dHB1dAogICAgZGVjIHJkaQogICAgbW92IGJ5dGUgW3JkaV0sICctJwoKLm91dHB1dDoKICAgIDsg0JLRi9Cy0L7QtCDRgNC10LfRg9C70YzRgtCw0YLQsAogICAgbW92IHJzaSwgcmRpCiAgICBtb3YgcmR4LCBidWZmZXIgKyAyMAogICAgc3ViIHJkeCwgcmRpCiAgICBtb3YgcmF4LCAxCiAgICBtb3YgcmRpLCAxCiAgICBzeXNjYWxsCgogICAgOyDQndC+0LLQsNGPINGB0YLRgNC+0LrQsAogICAgbW92IHJheCwgMQogICAgbW92IHJkaSwgMQogICAgbW92IHJzaSwgbmV3bGluZQogICAgbW92IHJkeCwgMQogICAgc3lzY2FsbAoKICAgIDsg0JLRi9GF0L7QtAogICAgbW92IHJheCwgNjAKICAgIHhvciByZGksIHJkaQogICAgc3lzY2FsbA==