Изменение фона консоли - Assembler
Формулировка задачи:
при нажатии кнопки очистить экран синим цветом, вывести свое имя с атрибутом мерцающий красным цветом на зеленом фоне в левом верхнем углу и плавно перемещать в правый нижний угол.
вот суть задания. но проблема с самого начала. не могу сделать синий экран при нажатии клавиши. вот мой код и ошибка
.model small .stack 100h .code start: ;input func again: xor ax,ax int 16h cmp ah, 34 jz g cmp ah, 20 jz t jmp again ;window 80*25, 16 col, blue background t: mov ax, 3h ;80*25 mov al, 10h ;16 colors mov bh, 1h ;blue color int 10h g: ;cout int 29h ;endl mov al,0ah int 29h jmp again exit: mov ax,4c00h int 21h end start
Решение задачи: «Изменение фона консоли»
textual
Листинг программы
LOCALS .model small .stack 100h .data .code main proc mov ax, @data mov ds, ax call ClearScreen mov ax, 4C00h int 21h main endp ;Очистка экрана ;вход ; - нет ;выход ; - нет ClearScreen proc push ax push bx push cx push dx mov ah, 06h ;функция SCROLL UP mov bh, 17h ;атрибут для заполнения mov cx, 0000h ;верхний левый угол окна mov dx, 24*256+79 int 10h pop dx pop cx pop bx pop ax ret ClearScreen endp end main
Объяснение кода листинга программы
- .model small - Указывает модель сегментного регистра, используемую в программе. Сегментный регистр используется для адресации памяти в защищенном режиме, и его использование может быть полезно при работе с низкоуровневым кодом, таким как код управления процессором или драйверы устройств.
Модель
small
обычно используется для программ, которые не требуют большой памяти и не используют сегменты, большие, чем 64 КБ. - .stack 100h - Указывает размер стека в 100 байт (100h). Стек - это область памяти, используемая для временного хранения данных при вызове процедур и функций. Размер стека должен быть достаточным для хранения всех локальных переменных, которые могут быть созданы в процедуре или функции, а также для хранения аргументов, передаваемых в процедуру или функцию, и возвращаемого значения.
- .data - Отображает сегмент данных. Сегмент данных - это область памяти, используемая для хранения данных, которые могут быть доступны для чтения и записи во время выполнения программы.
- .code - Отображает сегмент кода. Сегмент кода - это область памяти, используемая для хранения команд, которые могут быть выполнены процессором.
- main proc - Определяет точку входа в программу. Точка входа - это место, с которого начинается выполнение программы.
- mov ax, @data - Перемещает адрес сегмента данных в регистр AX. Это обычно делается для того, чтобы можно было использовать сегмент данных в качестве сегмента для операций чтения и записи.
- mov ds, ax - Устанавливает сегмент данных равным сегменту, хранящемуся в регистре AX. Это обычно делается для того, чтобы можно было использовать сегмент данных в качестве сегмента для операций чтения и записи.
- call ClearScreen - Вызывает процедуру ClearScreen. В данном случае, это вызывает процедуру очистки экрана.
- mov ax, 4C00h - Перемещает значение 4C00h в регистр AX. Значение 4C00h обычно используется как код завершения программы.
- int 21h - Выполняет интеррутацию с номером 21h. Интеррутация - это способ взаимодействия между программами и операционной системой. Номер 21h обычно используется как код завершения программы.
- ClearScreen proc - Определяет процедуру очистки экрана.
- mov ah, 06h - Перемещает значение 06h в регистр AH. Значение 06h обычно используется как функция SCROLL UP.
- mov bh, 17h - Перемещает значение 17h в регистр BH. Значение 17h обычно используется как атрибут для заполнения.
- mov cx, 0000h - Перемещает значение 0000h в регистр CX. Значение 0000h обычно используется как верхний левый угол окна.
- *mov dx, 24256+79* - Перемещает значение 24256+79 в регистр DX. Значение 24*256+79 обычно используется как нижний правый угол окна.
- int 10h - Выполняет интеррутацию с номером 10h. Интеррутация - это способ взаимодействия между программами и операционной системой. Номер 10h обычно используется как функция вывода символов.
- pop dx - Восстанавливает значение регистра DX из стека.
- pop cx - Восстанавливает значение регистра CX из стека.
- pop bx - Восстанавливает значение регистра BX из стека.
- pop ax - Восстанавливает значение регистра AX из стека.
- ret - Возвращает управление в вызывающую программу.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д