Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .486 ;Указание набора команд
- model tiny ;Модель памяти COM-программы
- Code SEGMENT use16 ;Описание сегмента кода
- ASSUME cs:Code, ds:Code ;Ассоциации сегментных регистров
- org 100h ;Организация смещения от начала
- start: ;Начальная метка программы
- push cs ;Запись в стек регистра CS
- pop ds ;Восстановление из стека регистра DS
- mov ax, 0b800h ;В регистр AX заносим адрес сегмента видеобуфера
- mov es, ax ;Устанавливаем регистр ES на видеобуфер
- xor ax, ax ;Очищаем регистр AX
- mov di, ax ;Записываем смещение в регистр DI
- mov cx, 2000 ;Записываем в регистр CX количество повторений
- rep stosw ;Заполняем видеобуфер нулями
- mov di, 1670 ;Заносим в регистр DI смещение строки
- mov ah, 42h ;Записываем в AH параметры цвета: символ зеленый,
- ;фон - красный
- lea si, mess ;Загружаем в SI смещение строки mess
- mov cx, 12 ;Загружаем в CX количество символов в строке
- next0: ;Метка цикла вывода сообщения
- lodsb ;Записываем в AL следующий символ строки
- stosw ;Записываем в видеобуфер символ
- loop next0 ;Цикл вывода всей строки
- next1: ;Метка для перехода на ожидание
- in al, 60h ;Чтение кода нажатой клавиши на клавиатуре
- cmp al, 1 ;Сравнение с 1 (код ESC)
- jne next1 ;Переход если не равно
- int 20h ;Завершение программы
- mess db 'Hello world!',0 ;Описание строки
- Code ENDS ;Завершение описания сегмента кода
- end start ;Конец программы
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement