Asma Cpo4ho!

  • Автор темы ScoRpuwa
  • Дата начала
Статус
Закрыто для дальнейших ответов.
S

ScoRpuwa

#1
Доброе время суток всем! Я новичек в этом деле. НАписал прогу которая рисует квадрат...могли бы подсказать как реализовать что бы квадрат закрашивался. А то не могу допетрить
вот код проги
.model small
.stack 256h
.data
.code

start:

mov ah, 0
mov al, 13h
int 10h

mov cx, 110
mov dx, 60
mov al, 15

u1: mov ah, 0ch
int 10h

call qwe
u2: mov ah,0ch
int 10h

call qwe1

u3: mov ah,0ch
int 10h

call qwe2
u4:
mov ah,0ch
int 10h

call qwe3

dec cx

qwe proc
dec cx
cmp cx, 100
ja u1
qwe endp
qwe1 proc
dec dx
cmp dx,50
ja u2
qwe1 endp
qwe2 proc
inc cx
cmp cx,110
jb u3
qwe2 endp
qwe3 proc
inc dx
cmp dx,60
jb u4
qwe3 endp

mov ah,00
int 16h

mov ah,00
mov al,03
int 10h
end start
 
M

Maxx

#2
с прогой сдается мне что-т ты немного перемудрствовал :)
лучше использовать прямой вывод в видеопамять
рисовать закрашенный квадрат просто - рисуешь h линий длиной w нужного цвета
h - высота квадрата, w - ширина квадрата

примерная процедура для рисования закрашенного квадрата в режиме 13h

; вход
; al - цвет квадрата
; bx - x
; di - y
; cx - ширина
; dx - высота
_draw_square:

and cx,cx ; если ширина или высота 0 ничего не рисуем
jz _do_nothing
and dx,dx
jz _do_nothing
push es
push ax
push dx
mov ax,200 ; считаем координаты левого верхнего угла
mul di
add ax,bx
xchg ax,di
mov ax,0a000h ; базовый адрес видеопамяти в режиме 13h
mov es,ax
pop dx
pop ax
cld
_next_line:

push cx ; рисуем линию
rep stosb
pop cx
add di,199
sub di,cx
dec dx
jnz _next_line
pop es
_do_nothing:

retn
 
Статус
Закрыто для дальнейших ответов.