Вывод символа заданным цветом - 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

Объяснение кода листинга программы

  1. Создание переменных:
    • chr с значением F (символ, который будет выведен)
    • x с значением 10 (координата X для вывода символа)
    • y с значением 20 (координата Y для вывода символа)
    • color с значением 4 (номер цвета символа)
  2. Установка видеорежима:
    • Загрузка сегмента данных в регистр ax
    • Перемещение значения из ax в ds и es
    • Установка видеорежима 13h (графический режим, 320x200) с помощью регистров ah и al
    • Вызов прерывания int 10h для установки видеорежима
  3. Установка позиции курсора:
    • Загрузка значений x и y в регистры dl и dh соответственно
    • Изменение позиции курсора с помощью прерывания int 10h
  4. Вывод символа заданным цветом:
    • Установка значения ah в 09h для вывода символа
    • Помещение символа из chr в регистр al
    • Установка количества повторений для вывода в cx
    • Загрузка цвета из color в регистр bl
    • Вызов прерывания int 10h для вывода символа в заданном цвете
    • Увеличение значения x для изменения позиции символа по горизонтали
    • Повторный вывод символа, но уже в нижнем регистре (с измененным значением al)
  5. Возврат контроля операционной системе:
    • Загрузка значения 4c00h в регистр ax
    • Вызов прерывания 21h для возврата контроля операционной системе.

Оцени полезность:

5   голосов , оценка 4.4 из 5
Похожие ответы