fork download
  1. section .data
  2. prompt1 db "Enter first number (up to 20 digits): ", 0
  3. len1 equ $-prompt1
  4. prompt2 db "Enter second number (up to 20 digits): ", 0
  5. len2 equ $-prompt2
  6. buffer_size equ 21 ; 20 цифр + символ новой строки
  7.  
  8. section .bss
  9. ; Буферы для хранения введенных строк символов
  10. input_buffer1 resb buffer_size
  11. input_buffer2 resb buffer_size
  12.  
  13. section .text
  14. global start
  15.  
  16. start:
  17. ; 1. Запрос и чтение первого числа
  18. ; Вывод приглашения (sys_write)
  19. mov rax, 1
  20. mov rdi, 1
  21. mov rsi, prompt1
  22. mov rdx, len1
  23. syscall
  24.  
  25. ; Чтение ввода (sys_read)
  26. mov rax, 0 ; номер системного вызова sys_read
  27. mov rdi, 0 ; файловый дескриптор 0 - stdin
  28. mov rsi, input_buffer1 ; адрес буфера для хранения
  29. mov rdx, buffer_size ; максимальный размер чтения
  30. syscall ; выполняем read
  31.  
  32. ; 2. Запрос и чтение второго числа
  33. ; Вывод приглашения (sys_write)
  34. mov rax, 1
  35. mov rdi, 1
  36. mov rsi, prompt2
  37. mov rdx, len2
  38. syscall
  39.  
  40. ; Чтение ввода (sys_read)
  41. mov rax, 0
  42. mov rdi, 0
  43. mov rsi, input_buffer2
  44. mov rdx, buffer_size
  45. syscall
  46.  
  47. ; !!! ВНИМАНИЕ !!!
  48. ; Здесь должен быть код для преобразования строк из input_buffer1
  49. ; и input_buffer2 в целые числа, их сложения и обратного преобразования
  50. ; суммы в строку для вывода. Это требует написания функций atoi и itoa.
  51. ; В текущем виде этот код просто читает данные и завершается.
  52.  
  53. ; 3. Выход из программы
  54. mov rax, 60 ; номер системного вызова exit (sys_exit)
  55. xor rdi, rdi ; код возврата 0 (успешное завершение)
  56. syscall
Success #stdin #stdout 0s 5300KB
stdin
Standard input is empty
stdout
Enter first number (up to 20 digits): Enter second number (up to 20 digits):