Advertisement
EugeneCrabs

Untitled

May 16th, 2021
1,597
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. data segment
  2.  
  3. data ends
  4. stk segment stack
  5. db 256 dup(0)
  6. stk ends
  7. text segment
  8. assume CS:text,DS:data,SS:stk
  9. begin:
  10. ;Очистка экрана
  11.  
  12. ;Настроим сегментный регистр ES на страницу 0 видеобуфера, а ds на сегмент данных
  13. mov ax,0B800h
  14. mov es,ax
  15. ;Перешлём в видеобуфер строку символов, настроив соответствующим образом
  16. ;регистры si, di и cx
  17. mov si,offset msg ;Смещение источника
  18. mov di,160*20+30*2 ;Смещение приёмника (36 столбец 13 -ой строки),
  19. mov cx,msglen ;Число пересылаемых байт
  20. cld ;Просмотр вперёд
  21. mov ah,0E4h ;Атрибут выводимых символов 0E4h – красный по жёлтому
  22. cycle: lodsb ;Загрузка в al очередного символа (al ← ds:si)
  23. stosw ;Выгрузка “символ + атрибут” из ах в видеобуфер (ax→es:di)
  24. loop cycle ;Повторить msglen раз
  25. rep movsb ;)* ;Переслать строку символов с атрибутами в видеобуфер
  26.  
  27.  
  28. ;Поля данных в сегменте данных программы. Символы и атрибуты: 0B0h – cветло-
  29. ;бирюзовый по чёрному, 0E4h –красный по жёлтому
  30. msg db '*TEST*', 0E4h
  31. msglen = $-msg
  32.  
  33. ;Остановим программу для наблюдения результата (иначе после завершения программы
  34. ;запрос DOS на ввод команды может затереть выведенную информацию)
  35. mov ah,01h
  36. int 21h
  37.  
  38.  
  39. mov AH, 4ch
  40. mov AL, 0
  41. int 21h
  42.  
  43. text ends
  44. end begin
  45.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement