Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- data segment
- data ends
- stk segment stack
- db 256 dup(0)
- stk ends
- text segment
- assume CS:text,DS:data,SS:stk
- begin:
- ;Очистка экрана
- ;Настроим сегментный регистр ES на страницу 0 видеобуфера, а ds на сегмент данных
- mov ax,0B800h
- mov es,ax
- ;Перешлём в видеобуфер строку символов, настроив соответствующим образом
- ;регистры si, di и cx
- mov si,offset msg ;Смещение источника
- mov di,160*20+30*2 ;Смещение приёмника (36 столбец 13 -ой строки),
- mov cx,msglen ;Число пересылаемых байт
- cld ;Просмотр вперёд
- mov ah,0E4h ;Атрибут выводимых символов 0E4h – красный по жёлтому
- cycle: lodsb ;Загрузка в al очередного символа (al ← ds:si)
- stosw ;Выгрузка “символ + атрибут” из ах в видеобуфер (ax→es:di)
- loop cycle ;Повторить msglen раз
- rep movsb ;)* ;Переслать строку символов с атрибутами в видеобуфер
- ;Поля данных в сегменте данных программы. Символы и атрибуты: 0B0h – cветло-
- ;бирюзовый по чёрному, 0E4h –красный по жёлтому
- msg db '*TEST*', 0E4h
- msglen = $-msg
- ;Остановим программу для наблюдения результата (иначе после завершения программы
- ;запрос DOS на ввод команды может затереть выведенную информацию)
- mov ah,01h
- int 21h
- mov AH, 4ch
- mov AL, 0
- int 21h
- text ends
- end begin
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement