Графика на асме

Низкоуровневое программирование портов, микроконтроллеров и т.д.

Модератор: Andy

Ответить
Аватара пользователя
NetCat
Сообщения: 4
Зарегистрирован: 07 янв 2007, 17:34
Откуда: Russia Arkhangelsk
Контактная информация:

необходимо написать прогу по рисованию отрезка, если известны координаты его концов :( help!
Аватара пользователя
NetCat
Сообщения: 4
Зарегистрирован: 07 янв 2007, 17:34
Откуда: Russia Arkhangelsk
Контактная информация:

вот мой код, он работает не на всех вариантах точек:
что неправильно?
mainseg segment
ORG 100h
ASSUME cs:mainseg, ds:mainseg, ss:mainseg
start:
y1 dw 20
x1 dw 20
x2 dw 40
y2 dw 40
ddx dw ?
ddy dw ?
ex dw ?
ey dw ?
d dw ?
i dw ?
x dw ?
y dw ?
ix dw ?
iy dw ?


;mov ah , 0fh
;int 10h
;push ax

;переход в графический режим
mov ah, 00
mov al, 04
int 10h

;функция установки цвета
mov ah, 0bh
;выбор палитры
mov bh, 01
;зелёный красный коричневый
mov bl, 00
; вызвать BIOS
int 10h

call drawline


@exiit:
in al,60h ; Scan keyboard
cmp al,0 ; Test on ESCAPE
je @exiit

;pop ax
;mov ah, 0
;int 10h


drawline proc

mov ex, 0
mov ey, 0

mov bx, x1
cmp x2, bx
ja @bol6e_x2
jb @men6e_x2
mov ix, 0
jmp @ly

@bol6e_x2:
mov ix, 1
jmp @ly

@men6e_x2:
mov ix, 2
jmp @ly

@ly:

mov bx, y1
cmp y2, bx
ja @bol6e_y2
jb @men6e_y2
mov iy, 0
jmp @dal6e

@bol6e_y2:
mov iy, 1
jmp @dal6e

@men6e_y2:
mov iy, 2
jmp @dal6e
@dal6e:

cmp ix, 1
ja @x1_x2
jb @x1___x2
mov bx, x2
sub bx, x1
mov ddx, bx
jmp @dddy

@exit:
jmp @end
@x1_x2:
mov bx, x1
sub bx, x2
mov ddx, bx
jmp @dddy

@x1___x2:
mov ddx, 0

@dddy:

cmp iy, 1
ja @y1_y2
jb @y1___y2
mov bx, y2
sub bx, y1
mov ddy, bx
jmp @sravnenie

@y1_y2:
mov bx, y1
sub bx, y2
mov ddy, bx
jmp @sravnenie

@y1___y2:
mov ddy, 0

@sravnenie:
mov bx, ddx
cmp ddy, bx
ja @ddyb
mov d, bx
jmp @tak

@ddyb:
mov bx, ddy
mov d, bx

@tak:
mov bx, x1
mov x, bx
mov bx, y1
mov y, bx

mov i, 0

@snova:

mov bx, ddx
add ex, bx
mov bx, ddy
add ey, bx

mov bx, d
cmp ex, bx
ja @ex_d
jmp @ey_d
@ex_d:
mov bx, d
sub ex, bx

cmp ix, 1
ja @x1__x2
jb @yd
inc x
jmp @yd

@x1__x2:
dec x
jmp @yd
@yd:

mov bx, d
cmp ey, bx
ja @ey_d
jmp @ey_d
@ey_d:
mov bx, d
sub ey, bx

cmp iy, 1
ja @y1__y2
jb @xd
inc y
jmp @xd

@y1__y2:
dec y
jmp @xd
@xd:

inc i
mov bx, d
cmp i, bx
ja @end




;функция вывода точки
mov ah, 0ch
;цвет точки
mov al, 10
;горизонтальная координата
mov cx, x
;вертикальная координата
mov dx, y
;Вызвать BIOS
int 10h
jmp @snova

@end:
in al,60h ; Scan keyboard
cmp al,0 ; Test on ESCAPE
je @end

drawline endp





mainseg ends
end start
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

Надо в своем архиве покопаться, завтра покажу свой - там попроще будет
It's a long way to the top if you wanna rock'n'roll
Ответить