Рисование прямоугольника - Assembler

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

Подскажите,пожалуйста,каким образом можно нарисовать прямоугольник с заданными координатами в ассемблер?

Код к задаче: «Рисование прямоугольника - Assembler»

textual
.model small
.stack 100h
.data
chr db 'F'
x1 dw 10  ; col
y1 dw 10  ; row
x2 dw 50
y2 dw 20
color db 3
 
.code
begin:
    mov ax, @data
    mov ds, ax
    mov es, ax
   
    mov ah, 0       ; 0 - установить видеорежим
    mov al, 13h     ; Видеорежим = 13h (графика, 320х200)
    int 10h         ; Прерывание - видео сервис.
       
    mov cx, x1      ; устанавливаем координату Х (откуда будем рисовать)
    mov dx, y1      ; устанавливаем координату Y
    mov ah, 0Ch     ; Номер функции установки точки
                    ; CX - строка (Y) ; DX - столбец (Х)
    xor bh, bh      ; видеостраница - 0
    mov al, color   ; устанавливаем цвет  
   
   
c1:                
    int 10h         ; вызываем прерывание и ставим точку
    cmp dx, y2      ; сравниваем со значением y2
    jne lp          ; если не равно - goto LP
    cmp cx, x2      ; если равно - сравниваем с Х2
    jne lp2         ; не равно - goto lp2
    jmp ex          ; иначе - выходим из цикла (т.к. половину прямоугольника мы нарисовали)
lp:
    inc dx          ; увеличиваем координату
    jmp c1
lp2:
    inc cx
    jmp c1
     
ex:  
 
; аналогичный цикл на достроение 2 части прямоугольника  
c2:  
    int 10h
    cmp dx, y1
    jne lp3
    cmp cx, x1
    jne lp4
    jmp ex2
lp3:
    dec dx
    jmp c2
lp4:
    dec cx
    jmp c2  
ex2:    
    mov ah, 1
    int 21h
   
    mov ax, 4c00h
    int 21h    
 
end begin

6   голосов, оценка 4.333 из 5


СОХРАНИТЬ ССЫЛКУ