Advertisement
Guest User

Untitled

a guest
Jun 16th, 2019
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.69 KB | None | 0 0
  1. ;Функция для вывода строки, адрес на которой хранится в eax, на экран
  2. swrite: ;Выводим строку на экран
  3. push edx; значения регистров сохраняются в стек
  4. push ecx
  5. push ebx
  6. push eax
  7. call _strlen; вызов подпрограммы для вычисления длины строки
  8.  
  9. mov edx, eax; сохраняем вычисленную длину строки в edx
  10. pop eax; восстанавливаем из стека указатель на строку
  11.  
  12. ; инициализация остальных регистров для системного вызова SYS_WRITE
  13. mov ecx, eax
  14. mov eax, 4
  15. mov ebx, 1
  16. int 80h; выполняем системный вызов
  17.  
  18. ; восстанавливаем значения остальных регистров
  19. pop ebx
  20. pop ecx
  21. pop edx
  22. ret
  23.  
  24. ;Функция для ввода строки с клавиатуры в eax-адрес длины ebx
  25. sread:
  26. push edx ;Сохраняем исходные значения edx и ebx
  27. push ebx
  28.  
  29. mov ecx, eax ;Перемещаем исходные данные
  30. mov edx, ebx
  31.  
  32. mov eax, 3 ;Подготавливаемся к считыванию
  33. mov ebx, 0
  34.  
  35. int 80h ;Системный вызов считывания
  36.  
  37. pop edx ;Возвращаем исходные значения edx и ebx
  38. pop ebx
  39. ret
  40.  
  41. section .bss
  42. input1 resb 256
  43. input2 resb 256
  44.  
  45.  
  46. ;Суммирование чисел
  47. _summ:
  48. ;Вводим числа
  49.  
  50. mov eax, input1
  51. mov ebx, 256
  52. call sread
  53.  
  54. mov eax, input2
  55. mov ebx, 256
  56. call sread
  57.  
  58. mov eax, input1
  59. adc eax,input2
  60. daa ;Коррекция чисел BCD формата
  61.  
  62. call swrite
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement