Alyks

4.2

May 12th, 2020
249
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.38 KB | None | 0 0
  1. ESC_ equ 1Bh
  2.  
  3. org 100h
  4.  
  5. start:
  6. mov ah, 8 ;Ввод символа
  7. int 21h
  8. cmp al, ESC_ ;Сравнение, нажат ли esc
  9. je exit ;Если нажат, то выполняется процедура exit
  10.  
  11. ;Далее идет проверка, нажат ли любой из символов в промежутке от 91 до 96
  12. cmp al, 5bh
  13. je bell
  14. cmp al, 5ch
  15. je bell
  16. cmp al, 5dh
  17. je bell
  18. cmp al, 5eh
  19. je bell
  20. cmp al, 5fh
  21. je bell
  22. cmp al, 60h
  23. je bell
  24. ;Если нажат, то воспроизводится звуковой сигнал
  25.  
  26. cmp al, 41h ;Если введенный символ меньше, чем код 65, то выполняется процедура bell
  27. jb bell
  28. cmp al, 7ah ;Если введенный символ больше, чем код 122, то выполняется процедура bell
  29. ja bell
  30. jmp toUpperCase ;Если введен правильный символ, то переводим букву в верхний регистр
  31.  
  32. jmp start ;Выполняем процедуру заново
  33.  
  34. toUpperCase:
  35. cmp al, 5Bh ;Если символ в верхнем регистре (меньше, чем код 91), то он просто выводится в консоль
  36. jb printSymbol
  37. sub al, 20h ;Если символ в нижнем регистре, то отнимаем 32 от его кода, чтобы сделать его большим
  38. jmp printSymbol ;Выводим его в консоль
  39. ret
  40.  
  41. printSymbol:
  42. mov ah, 2 ;Функция вывода символа в консоль
  43. mov dl, al
  44. int 21h
  45. jmp start ;Переход к процедуре start
  46. ret
  47.  
  48. exit:
  49. mov ah, 9 ;Вывод сообщения в консоль
  50. mov dx, exitMsg
  51. int 21h
  52.  
  53. mov ah, 8 ;Ожидание ввода любого символа, после чего программа закроется
  54. int 21h
  55. ret
  56.  
  57. bell:
  58. mov ah, 2
  59. mov dl, 7 ; 7 - звук
  60. int 21h
  61. jmp start ;Переход к процедуре start
  62. ret
  63.  
  64. exitMsg db " press any button to exit$"
Add Comment
Please, Sign In to add comment