Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
17
Добавлен:
21.05.2015
Размер:
3.27 Кб
Скачать
program _Line;
uses Crt;
Function Sign(Number : integer) : integer;
begin
if Number < 0 then Sign := -1
else if Number = 0 then Sign := 0
else Sign := 1;
end;

Procedure Line_(x1,y1,x2,y2 : Integer; Color : Byte);
var
x,y,s1,s2,dlx,dly,e: integer;
change: boolean;
begin
asm
mov ax,[x1]
mov [x],ax
mov ax,[y1]
mov [y],ax
mov ax,[x2]
sub ax,[x1]
mov si,ax
jns @1
neg ax
@1:
mov [dlx],ax
mov ax,[y2]
sub ax,[y1]
mov di,ax
jns @2
neg ax
@2:
mov [dly],ax
cmp si,0
jl @3
cmp si,0
jg @4
mov ax,0
jmp @5
@3:
mov ax,-1
jmp @5
@4:
mov ax,1
@5:
mov [s1],ax
cmp di,0
jl @6
cmp di,0
jg @7
mov ax,0
jmp @8
@6:
mov ax,-1
jmp @8
@7:
mov ax,1
@8:
mov [s2],ax
mov ax,[dly]
cmp ax,[dlx]
jle @9
mov ax,[dlx]
mov bx,[dly]
xchg ax,bx
mov [dlx],ax
mov [dly],bx
jmp @10
@9:
mov [change],0
@10:
mov ax,[dlx]
mov bx,[dly]
shl bx,1
sub bx,ax
mov [e],bx
mov ax,[dlx]
mov dx,ax
shl ax,1
mov bx,[dly]
shl bx,1
mov cx,1
@11:
cmp cx,dx
jg @12
push ax
push bx
push dx
push di
mov ax,0A000H
mov es,ax
mov bx,[X]
mov dx,[Y]
mov di,bx
mov bx, dx
shl dx, 8
shl bx, 6
add dx, bx
add di, dx
mov al, [Color]
stosb
pop di
pop dx
pop bx
pop ax
@13:
cmp [e],0
jl @14
push ax
cmp [change],0
je @15
mov ax,[x]
add ax,[s1]
mov [x],ax
jmp @16
@15:
mov ax,[y]
add ax,[s2]
mov [y],ax
@16:
pop ax
sub [e],ax
jmp @13
@14:
push ax
cmp [change],0
je @17
mov ax,[y]
add ax,[s2]
mov [y],ax
jmp @18
@17:
mov ax,[x]
add ax,[s1]
mov [x],ax
@18:
add [e],bx
inc cx
pop ax
jmp @11
{ end;}
@12:
{ mem[$A000: x + y * 320] := Color;}
push ax
push bx
push dx
push di
mov ax,0A000H
mov es,ax
mov bx,[X]
mov dx,[Y]
mov di,bx
mov bx, dx
shl dx, 8
shl bx, 6
add dx, bx
add di, dx
mov al, [Color]
stosb
pop di
pop dx
pop bx
pop ax
end;
end;

var
ch : Char;
begin

asm
mov ax,13h
int 10h
end;
while Not KeyPressed do
begin
Line_(random(320),random(200),random(320),random(200),random(255));
end;
asm
mov ax,3h
int 10h
end;
end.
Соседние файлы в папке Линии