Advertisement
dxvmxnd

Untitled

Apr 3rd, 2024
27
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.39 KB | None | 0 0
  1. org 100h
  2. Start:
  3. mov ah, $09 ; DOS функция для вывода строки
  4. mov dx, strHelloUser ; Указатель на строку приветствия
  5. int 21h ; Вызов прерывания DOS
  6.  
  7. Input:
  8. mov ah, $0A ; DOS функция для ввода строки
  9. mov dx, bufInput ; Указатель на буфер ввода
  10. int 21h ; Вызов прерывания DOS
  11.  
  12. OutputBeforeChange:
  13. mov ah, $09 ; DOS функция для вывода строки
  14. mov dx, bufInput + 2 ; Указатель на строку в буфере ввода, смещенную на 2
  15. int 21h ; Вызов прерывания DOS
  16.  
  17. ProcessOnResult:
  18. mov cl, [bufInput + 1] ; Загрузка длины строки ввода в cl
  19. cmp cl, 4 ; Сравнение длины строки с 4
  20. jnge OutputLenghtBad ; Если длина строки меньше или равна 4, переход к OutputLenghtBad
  21.  
  22. ; Сравнение позиций 3 и 6
  23. mov al, [bufInput + 1 + 1] ; Загрузка символа на позиции 1 в al
  24. mov bl, [bufInput + 2 + 1] ; Загрузка символа на позиции 2 в bl
  25. cmp al, bl ; Сравнение символов
  26. jne OutputNo ; Если символы не равны, переход к OutputNo
  27.  
  28. ; Анализ символа на позиции 2
  29. mov al, [bufInput + 3 + 1] ; Загрузка символа на позиции 2 в al
  30. cmp al, 65 ; Сравнение символа с 'A' (48 в ASCII)
  31. jnge OutputNo ; Если символ меньше 'A', переход к OutputNo
  32. cmp al, 122 ; Сравнение символа с 'z' (57 в ASCII)
  33. jnle OutputNo; Если символ больше 'z', переход к OutputNo
  34.  
  35. ; Смещение на 2 элемента
  36. ; следует очень подробно работу каждой строчки смысл и так далее
  37. xor bh, bh
  38. mov bl, [bufInput + 1]
  39. sub bl, 1
  40. cmp [bufInput + bx], 65 ; Сравнение bx с 'A' (65 в ASCII)
  41. jnge OutputNo ; Если bx меньше 'A', переход к OutputNo
  42. cmp [bufInput + bx], 122 ; Сравнение bx с 'z' (122 в ASCII)
  43. jnle OutputNo; Если bx больше 'z', переход к OutputNo
  44.  
  45. ; Если все проверки прошли, переходим к outputyes
  46.  
  47. OutputYes:
  48. mov ah, $09 ; DOS функция для вывода строки
  49. mov dx, strYes ; Указатель на строку "YES"
  50. int 21h ; Вызов прерывания DOS
  51. jmp AvaitingClose ; Переход к ожиданию закрытия
  52.  
  53. OutputNo:
  54. mov ah, $09 ; DOS функция для вывода строки
  55. mov dx, strNo ; Указатель на строку "NO"
  56. int 21h ; Вызов прерывания DOS
  57. jmp AvaitingClose ; Переход к ожиданию закрытия
  58.  
  59. OutputLenghtBad:
  60. mov ah, $09 ; DOS функция для вывода строки
  61. mov dx, strLenghtBad ; Указатель на строку "Lenght..."
  62. int 21h ; Вызов прерывания DOS
  63. jmp AvaitingClose ; Переход к ожиданию закрытия
  64.  
  65. AvaitingClose:
  66. mov ah, $09 ; DOS функция для вывода строки
  67. mov dx, strClose ; Указатель на строку "Press any key to close programm..."
  68. int 21h ; Вызов прерывания DOS
  69.  
  70. mov ah, $08 ; DOS функция для чтения символа без эхо
  71. int 21h ; Вызов прерывания DOS
  72. ret ; Возврат из программы
  73.  
  74. x db ? ; Определение переменной x зачем(?)
  75. strHelloUser db 'Please, enter your string:',13,10,36
  76. bufInput db 9, 0, 9 dup(?),13,10,'$'
  77. strLenghtBad db 'Lenght...',13,10,36
  78. strNo db 'NO',13,10,36
  79. strYes db 'YES',13,10,36
  80. strClose db 'Press any key to close programm... $'
  81.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement