Вывод символа заданным цветом - Assembler
Формулировка задачи:
Необходимо вывести символ заданного цвета в заданном месте экрана в двух регистрах.Помогите,пожалуйста, с реализацией
Решение задачи: «Вывод символа заданным цветом»
textual
Листинг программы
.model small .stack 100h .data chr db 'F' ; символ x db 10 ; X (Столбец) y db 20 ; Y (Строка) color db 4 ; Номер цвета .code begin: mov ax, @data mov ds, ax mov es, ax mov ah, 0 ; установка видеорежима mov al, 13h ; Видеорежим = 13h (графика, 320х200) int 10h mov dl, x mov dh, y mov ah, 02h ; Изменение позиции курсора: DH:DL (Столбец:Строка) int 10h mov ah, 09h ; вывод символа mov al, chr ; AL = символ mov cx, 1 ; СХ = кол-во повторений mov bl, color ; BL = цвет int 10h ; вызываем прерывание add al, 32 mov dh, y inc dl mov ah, 02h int 10h mov ah, 09h ; вывод символа mov al, chr ; AL = символ add al, 32 ; преобразуем в нижний регистр (к ASCII коду добавляем 32) int 10h ; вызываем прерывание mov ah, 1 int 21h mov ax, 4c00h int 21h end begin
Объяснение кода листинга программы
- Создание переменных:
chr
с значениемF
(символ, который будет выведен)x
с значением 10 (координата X для вывода символа)y
с значением 20 (координата Y для вывода символа)color
с значением 4 (номер цвета символа)
- Установка видеорежима:
- Загрузка сегмента данных в регистр
ax
- Перемещение значения из
ax
вds
иes
- Установка видеорежима 13h (графический режим, 320x200) с помощью регистров
ah
иal
- Вызов прерывания int 10h для установки видеорежима
- Загрузка сегмента данных в регистр
- Установка позиции курсора:
- Загрузка значений
x
иy
в регистрыdl
иdh
соответственно - Изменение позиции курсора с помощью прерывания int 10h
- Загрузка значений
- Вывод символа заданным цветом:
- Установка значения
ah
в 09h для вывода символа - Помещение символа из
chr
в регистрal
- Установка количества повторений для вывода в
cx
- Загрузка цвета из
color
в регистрbl
- Вызов прерывания int 10h для вывода символа в заданном цвете
- Увеличение значения
x
для изменения позиции символа по горизонтали - Повторный вывод символа, но уже в нижнем регистре (с измененным значением
al
)
- Установка значения
- Возврат контроля операционной системе:
- Загрузка значения 4c00h в регистр
ax
- Вызов прерывания 21h для возврата контроля операционной системе.
- Загрузка значения 4c00h в регистр
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д