Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .486 ;Указание набора команд
  2. model tiny ;Модель памяти COM-программы
  3. Code SEGMENT use16 ;Описание сегмента кода
  4. ASSUME cs:Code, ds:Code ;Ассоциации сегментных регистров
  5. org 100h ;Организация смещения от начала
  6. start: ;Начальная метка программы
  7. push cs ;Запись в стек регистра CS
  8. pop ds ;Восстановление из стека регистра DS
  9. mov ax, 0b800h ;В регистр AX заносим адрес сегмента видеобуфера
  10. mov es, ax ;Устанавливаем регистр ES на видеобуфер
  11. xor ax, ax ;Очищаем регистр AX
  12. mov di, ax ;Записываем смещение в регистр DI
  13. mov cx, 2000 ;Записываем в регистр CX количество повторений
  14. rep stosw ;Заполняем видеобуфер нулями
  15. mov di, 1670 ;Заносим в регистр DI смещение строки
  16. mov ah, 42h ;Записываем в AH параметры цвета: символ зеленый,
  17. ;фон - красный
  18. lea si, mess ;Загружаем в SI смещение строки mess
  19. mov cx, 12 ;Загружаем в CX количество символов в строке
  20. next0: ;Метка цикла вывода сообщения
  21. lodsb ;Записываем в AL следующий символ строки
  22. stosw ;Записываем в видеобуфер символ
  23. loop next0 ;Цикл вывода всей строки
  24. next1: ;Метка для перехода на ожидание
  25. in al, 60h ;Чтение кода нажатой клавиши на клавиатуре
  26. cmp al, 1 ;Сравнение с 1 (код ESC)
  27. jne next1 ;Переход если не равно
  28. int 20h ;Завершение программы
  29. mess db 'Hello world!',0 ;Описание строки
  30. Code ENDS ;Завершение описания сегмента кода
  31. end start ;Конец программы
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement