В видеорежиме 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

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

  1. Установка модели памяти на small.
  2. Установка стека на 100 байт.
  3. Объявление переменной color со значением 0Ah (цвет линии).
  4. Начало кода.
  5. Передача значения 13h в регистр AX при вызове функции 10h, что переводит видеодисплей в режим 320x200x256.
  6. Передача значения цвета в регистр AL при помощи оператора mov.
  7. Отправка значения 0A000h в стек, затем его восстановление из стека в регистр ES, который используется как адрес начала графического видеобуфера.
  8. Установка регистра DI на значение 0, что означает, что первая точка будет нарисована в верхнем левом углу.
  9. Вывод точки заданного цвета в заданные координаты с помощью команды stosb.
  10. Ожидание нажатия клавиши с помощью функции int 16h.
  11. Передача значения 3 в регистр AX при вызове функции 10h, что переводит видеодисплей в текстовый режим 80x25.
  12. Вызов функции int 21h для завершения программы.
  13. Значение 4Ch является старшим байтом регистра AH, который передается в функцию int 21h при завершении программы.
  14. Конец кода.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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