В видеорежиме 320х200, закрасить прямоугольную область заданным цветом (8086) - Assembler
Формулировка задачи:
Задать параметры прямоугольника:
-цвет;
-координаты левого верхнего угла;
-координаты правого нижнего угла;
Пока-что остановился на этом:
.model small .stack 100h color equ 0Ah ; цвет линии .code start: mov ax,13h ; 320x200x256 int 10h mov ax,color*257 ; цвет точки push 0A000h mov di,0*320+0 ;координата верхней левой точки end start
Решение задачи: «В видеорежиме 320х200, закрасить прямоугольную область заданным цветом (8086)»
textual
Листинг программы
.model small .stack 100h color equ 0Ah ; цвет линии .code start: mov ax,13h ; 320x200x256 int 10h mov al,color ; цвет точки push 0A000h pop es ;ES = начало графического видеобуфера mov di,0 ;координата верхней левой точки stosb; выводим точку заданного цвета в заданные координаты mov ah,0 int 16h;ждем нажатия на клавиатуру mov ax,3 int 10h;восстанавливаем текстовый режим mov ah,4Ch int 21h; завершаем программу end start
Объяснение кода листинга программы
- Установка модели памяти на
small
. - Установка стека на 100 байт.
- Объявление переменной
color
со значением 0Ah (цвет линии). - Начало кода.
- Передача значения 13h в регистр AX при вызове функции 10h, что переводит видеодисплей в режим 320x200x256.
- Передача значения цвета в регистр AL при помощи оператора mov.
- Отправка значения 0A000h в стек, затем его восстановление из стека в регистр ES, который используется как адрес начала графического видеобуфера.
- Установка регистра DI на значение 0, что означает, что первая точка будет нарисована в верхнем левом углу.
- Вывод точки заданного цвета в заданные координаты с помощью команды stosb.
- Ожидание нажатия клавиши с помощью функции int 16h.
- Передача значения 3 в регистр AX при вызове функции 10h, что переводит видеодисплей в текстовый режим 80x25.
- Вызов функции int 21h для завершения программы.
- Значение 4Ch является старшим байтом регистра AH, который передается в функцию int 21h при завершении программы.
- Конец кода.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д