Вывод символа заданным цветом - 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 в регистр
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д