Установка цвета фона в графическом режиме - Assembler

Узнай цену своей работы

Формулировка задачи:

Ребята, подскажите пожалуйста, как закрасить фон одним цветом? Ассемблер masm Сейчас делаю так:
CSEG    segment
org     100h
 
begin:  
    mov ah, 0h      ;установка видеорежима (EGA, 350x640 точек)
    mov al, 10h     ; графический режим 16 цветов
    int 10h         ; вызов BIOS
 
; Формирование фона на видеостранице путём попиксельного окрашивания
    mov bh, 0       ; видеостраница 0
    mov ah, 0ch     ; функция вывода пиксела
    mov al, 0ch     ; розовый цвет фона 
    
    mov cx, 0       ; начальная х-координата
c4: mov dx, 0       ; начальная у-координата
c3: int 10h         ; вызов BIOS - вывод точки
    inc dx          ; инкремент по у
    cmp dx, 350     ; дошли ли до границе по у?
    jne c3          ; нет, повторяем вывод точек
    inc cx          ; дошли до границе по у, инкремент по х
    cmp cx, 640     ; дошли до границе по х?
    jne c4          ; нет, повторяем вывод вертикальных линий
 
CSEG ends
end begin
Фон окрашивается, но медленно, т.е. видно, как он ползёт слева направо. Нужно что-то более быстрое, но, как я понимаю, функциями BIOS это сделать нельзя. Может, как-то через DOS можно?

Решение задачи: «Установка цвета фона в графическом режиме»

textual
Листинг программы
mov cx, 50          ; начальная х-координата
    mov dx, 50          ; начальная у-координата
    mov end_line, 150
    call linev          ; сторона b1
    
    mov cx, 150d        ; начальная х-координата
    mov dx, 50d         ; начальная у-координата
    call linev          ; сторона b2
    
    mov cx, 51d         ; начальная х-координата
    mov dx, 50d         ; начальная у-координата
    call lineg          ; сторона b3    
    
    mov cx, 51d         ; начальная х-координата
    mov dx, 149d        ; начальная у-координата
    call lineg          ; сторона b4

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

В данном коде на языке Assembler происходит рисование прямоугольника в графическом режиме. Список действий: 1. mov cx, 50 — устанавливает начальную х-координату в 50. 2. mov dx, 50 — устанавливает начальную у-координату в 50. 3. mov end_line, 150 — устанавливает конечную координату в 150. 4. call linev — вызывает функцию для рисования первой стороны прямоугольника. 5. mov cx, 150d — устанавливает начальную х-координату в 150. 6. mov dx, 50d — устанавливает начальную у-координату в 50. 7. call linev — вызывает функцию для рисования второй стороны прямоугольника. 8. mov cx, 51d — устанавливает начальную х-координату в 51. 9. mov dx, 50d — устанавливает начальную у-координату в 50. 10. call lineg — вызывает функцию для рисования третьей стороны прямоугольника. 11. mov cx, 51d — устанавливает начальную х-координату в 51. 12. mov dx, 149d — устанавливает начальную у-координату в 149. 13. call lineg — вызывает функцию для рисования четвёртой стороны прямоугольника. Для рисования прямоугольника в графическом режиме используется функция linev, а для рисования сторон прямоугольника используется функция lineg.

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

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