section .data
prompt1 db "Enter first number (up to 20 digits): ", 0
len1 equ $-prompt1
prompt2 db "Enter second number (up to 20 digits): ", 0
len2 equ $-prompt2
buffer_size equ 21 ; 20 цифр + символ новой строки
section .bss
; Буферы для хранения введенных строк символов
input_buffer1 resb buffer_size
input_buffer2 resb buffer_size
section .text
global start
start:
; 1. Запрос и чтение первого числа
; Вывод приглашения (sys_write)
mov rax, 1
mov rdi, 1
mov rsi, prompt1
mov rdx, len1
syscall
; Чтение ввода (sys_read)
mov rax, 0 ; номер системного вызова sys_read
mov rdi, 0 ; файловый дескриптор 0 - stdin
mov rsi, input_buffer1 ; адрес буфера для хранения
mov rdx, buffer_size ; максимальный размер чтения
syscall ; выполняем read
; 2. Запрос и чтение второго числа
; Вывод приглашения (sys_write)
mov rax, 1
mov rdi, 1
mov rsi, prompt2
mov rdx, len2
syscall
; Чтение ввода (sys_read)
mov rax, 0
mov rdi, 0
mov rsi, input_buffer2
mov rdx, buffer_size
syscall
; !!! ВНИМАНИЕ !!!
; Здесь должен быть код для преобразования строк из input_buffer1
; и input_buffer2 в целые числа, их сложения и обратного преобразования
; суммы в строку для вывода. Это требует написания функций
atoi и
itoa.
; В текущем виде этот код просто читает данные и завершается.
; 3. Выход из программы
mov rax
, 60 ; номер системного вызова
exit (sys_exit
) xor rdi, rdi ; код возврата 0 (успешное завершение)
syscall
c2VjdGlvbiAuZGF0YQogICAgcHJvbXB0MSBkYiAiRW50ZXIgZmlyc3QgbnVtYmVyICh1cCB0byAyMCBkaWdpdHMpOiAiLCAwCiAgICBsZW4xIGVxdSAkLXByb21wdDEKICAgIHByb21wdDIgZGIgIkVudGVyIHNlY29uZCBudW1iZXIgKHVwIHRvIDIwIGRpZ2l0cyk6ICIsIDAKICAgIGxlbjIgZXF1ICQtcHJvbXB0MgogICAgYnVmZmVyX3NpemUgZXF1IDIxIDsgMjAg0YbQuNGE0YAgKyDRgdC40LzQstC+0Lsg0L3QvtCy0L7QuSDRgdGC0YDQvtC60LgKCnNlY3Rpb24gLmJzcwogICAgOyDQkdGD0YTQtdGA0Ysg0LTQu9GPINGF0YDQsNC90LXQvdC40Y8g0LLQstC10LTQtdC90L3Ri9GFINGB0YLRgNC+0Log0YHQuNC80LLQvtC70L7QsgogICAgaW5wdXRfYnVmZmVyMSByZXNiIGJ1ZmZlcl9zaXplCiAgICBpbnB1dF9idWZmZXIyIHJlc2IgYnVmZmVyX3NpemUKCnNlY3Rpb24gLnRleHQKICAgIGdsb2JhbCBzdGFydAoKc3RhcnQ6CiAgICA7IDEuINCX0LDQv9GA0L7RgSDQuCDRh9GC0LXQvdC40LUg0L/QtdGA0LLQvtCz0L4g0YfQuNGB0LvQsAogICAgOyDQktGL0LLQvtC0INC/0YDQuNCz0LvQsNGI0LXQvdC40Y8gKHN5c193cml0ZSkKICAgIG1vdiByYXgsIDEKICAgIG1vdiByZGksIDEKICAgIG1vdiByc2ksIHByb21wdDEKICAgIG1vdiByZHgsIGxlbjEKICAgIHN5c2NhbGwKCiAgICA7INCn0YLQtdC90LjQtSDQstCy0L7QtNCwIChzeXNfcmVhZCkKICAgIG1vdiByYXgsIDAgICAgICAgICAgICAgOyDQvdC+0LzQtdGAINGB0LjRgdGC0LXQvNC90L7Qs9C+INCy0YvQt9C+0LLQsCBzeXNfcmVhZAogICAgbW92IHJkaSwgMCAgICAgICAgICAgICA7INGE0LDQudC70L7QstGL0Lkg0LTQtdGB0LrRgNC40L/RgtC+0YAgMCAtIHN0ZGluCiAgICBtb3YgcnNpLCBpbnB1dF9idWZmZXIxIDsg0LDQtNGA0LXRgSDQsdGD0YTQtdGA0LAg0LTQu9GPINGF0YDQsNC90LXQvdC40Y8KICAgIG1vdiByZHgsIGJ1ZmZlcl9zaXplICAgOyDQvNCw0LrRgdC40LzQsNC70YzQvdGL0Lkg0YDQsNC30LzQtdGAINGH0YLQtdC90LjRjwogICAgc3lzY2FsbCAgICAgICAgICAgICAgICA7INCy0YvQv9C+0LvQvdGP0LXQvCByZWFkCgogICAgOyAyLiDQl9Cw0L/RgNC+0YEg0Lgg0YfRgtC10L3QuNC1INCy0YLQvtGA0L7Qs9C+INGH0LjRgdC70LAKICAgIDsg0JLRi9Cy0L7QtCDQv9GA0LjQs9C70LDRiNC10L3QuNGPIChzeXNfd3JpdGUpCiAgICBtb3YgcmF4LCAxCiAgICBtb3YgcmRpLCAxCiAgICBtb3YgcnNpLCBwcm9tcHQyCiAgICBtb3YgcmR4LCBsZW4yCiAgICBzeXNjYWxsCgogICAgOyDQp9GC0LXQvdC40LUg0LLQstC+0LTQsCAoc3lzX3JlYWQpCiAgICBtb3YgcmF4LCAwCiAgICBtb3YgcmRpLCAwCiAgICBtb3YgcnNpLCBpbnB1dF9idWZmZXIyCiAgICBtb3YgcmR4LCBidWZmZXJfc2l6ZQogICAgc3lzY2FsbAoKICAgIDsgISEhINCS0J3QmNCc0JDQndCY0JUgISEhCiAgICA7INCX0LTQtdGB0Ywg0LTQvtC70LbQtdC9INCx0YvRgtGMINC60L7QtCDQtNC70Y8g0L/RgNC10L7QsdGA0LDQt9C+0LLQsNC90LjRjyDRgdGC0YDQvtC6INC40LcgaW5wdXRfYnVmZmVyMQogICAgOyDQuCBpbnB1dF9idWZmZXIyINCyINGG0LXQu9GL0LUg0YfQuNGB0LvQsCwg0LjRhSDRgdC70L7QttC10L3QuNGPINC4INC+0LHRgNCw0YLQvdC+0LPQviDQv9GA0LXQvtCx0YDQsNC30L7QstCw0L3QuNGPCiAgICA7INGB0YPQvNC80Ysg0LIg0YHRgtGA0L7QutGDINC00LvRjyDQstGL0LLQvtC00LAuINCt0YLQviDRgtGA0LXQsdGD0LXRgiDQvdCw0L/QuNGB0LDQvdC40Y8g0YTRg9C90LrRhtC40LkgYXRvaSDQuCBpdG9hLgogICAgOyDQkiDRgtC10LrRg9GJ0LXQvCDQstC40LTQtSDRjdGC0L7RgiDQutC+0LQg0L/RgNC+0YHRgtC+INGH0LjRgtCw0LXRgiDQtNCw0L3QvdGL0LUg0Lgg0LfQsNCy0LXRgNGI0LDQtdGC0YHRjy4KCiAgICA7IDMuINCS0YvRhdC+0LQg0LjQtyDQv9GA0L7Qs9GA0LDQvNC80YsKICAgIG1vdiByYXgsIDYwICAgICAgICAgICAgOyDQvdC+0LzQtdGAINGB0LjRgdGC0LXQvNC90L7Qs9C+INCy0YvQt9C+0LLQsCBleGl0IChzeXNfZXhpdCkKICAgIHhvciByZGksIHJkaSAgICAgICAgICAgOyDQutC+0LQg0LLQvtC30LLRgNCw0YLQsCAwICjRg9GB0L/QtdGI0L3QvtC1INC30LDQstC10YDRiNC10L3QuNC1KQogICAgc3lzY2FsbA==