Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2011, 00:36   #1
KaRaNTiN
Новичок
Джуниор
 
Регистрация: 27.05.2011
Сообщений: 1
По умолчанию Assembler. Рисование прямоугольника

Доброй ночи!).. Возникла определённая проблема.

Задание: Вывести на экран прямоугольник определённого цвета. Прямоугольник меняет свой цвет.

Проблема: решил рисовать прямоугольник вертикальными линиями, каждая из которых имеет свой индекс в палитре цветов. Одну линию нарисовал. Как сделать, чтобы рисовались остальные, допустим, 50 линий, и у каждой свой индекс (например, от 1 до 50)?..

Цитата:
Код программы:
.model small
.stack 100h
.186
.data
green db 0,63,0
white db 63,63,63
black db 0,0,0
red db 63,0,0
blue db 0,0,63

;koorx dw ?
;koory dw ?

.code
mov ax,@data
mov ds,ax

mov ax,13h ;режим 320*200
int 10h
mov ax,0a000h ; начало
mov es,ax

mov al,1
mov cx,50
white_palet:
push cx
whitepalitra PROC NEAR
mov dx,03c8h
out dx,al
mov dx,03c9h
mov cx,3
mov si,offset white
rep outsb
whitepalitra endp
sub cx,1
add al, 1
pop cx
jne white_palet

mov al,51
mov cx,50
green_palet:
push cx
greenpalitra PROC NEAR
mov dx,03c8h
out dx,al
mov dx,03c9h
mov cx,3
mov si,offset green
rep outsb
greenpalitra endp
sub cx,1
add al, 1
pop cx
jne green_palet

mov al,101
mov cx,50
red_palet:
push cx
redpalitra PROC NEAR
mov dx,03c8h
out dx,al
mov dx,03c9h
mov cx,3
mov si,offset red
rep outsb
redpalitra endp
sub cx,1
add al, 1
pop cx
jne red_palet

mov al,151
mov cx,50
blue_palet:
push cx
bluepalitra PROC NEAR
mov dx,03c8h
out dx,al
mov dx,03c9h
mov cx,3
mov si,offset blue
rep outsb
bluepalitra endp
sub cx,1
add al, 1
pop cx
jne blue_palet

mov al,201
mov cx,50
black_palet:
push cx
blackpalitra PROC NEAR
mov dx,03c8h
out dx,al
mov dx,03c9h
mov cx,3
mov si,offset red
rep outsb
blackpalitra endp
sub cx,1
add al, 1
pop cx
jne black_palet

mov cx,51
mov ax,cx

mov cx,100
push cx

mov al, 1
mov di, 50+320*50; координата верхнего левого угла квадрата
mov si,di
a2: pop cx
push cx
a1:
stosb
add di,319
sub cx,1
jnz a1

sub ax,1
mov cx,ax
add al,1
mov di,si
add di,1
mov si,di
jnz a2

mov ah,7 ; klavisha ESC
int 21h
cmp al,1bh
je vihod
vihod:
mov ah,4ch
int 21h

end
Вот помогите, пожалуйста, решить эту проблему).. Очень очень прошу)
KaRaNTiN вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
рисование прямоугольника, ошибка programmm Win Api 2 17.05.2011 21:10
рисование прямоугольника programmm Win Api 10 16.05.2011 21:52
Рисование прямоугольника в С# vedro-compota C# (си шарп) 4 19.12.2010 10:19
Стороны прямоугольника Caragius Microsoft Office Excel 8 27.12.2008 03:02