Главная »
Асм » Линия с помощью алгоритма Брезенхема
§ Текст программы
На экран выводится линия
(0,0)-(319,199),11
org 100h
mov ax, 0013h
int 10h
mov ax, $A000
mov es, ax
mov ax, 0
mov bx, 0
mov cx, 319
mov dx, 199
mov bp, 11
call line
ret
line: push si di
mov si, 1
mov di, 1
mov [.x2], cx
mov [.y2], dx
sub cx, ax
jge @f
neg cx
neg si
@@: sub dx, bx
jge @f
neg dx
neg di
@@: mov [.sx], si
mov [.sy], di
mov [.dx], cx
mov [.dy], dx
mov si, cx
sub si, dx
mov dx, bp
.ps: cmp ax, 320
jnb @f
cmp bx, 200
jnb @f
imul di, bx, 320
add di, ax
mov [es: di], dl
@@: cmp ax, [.x2]
jne @f
cmp bx, [.y2]
jne @f
pop di si
ret
@@: mov cx, si
add cx, cx
cmp cx, [.dx]
jg @f
add si, [.dx]
add bx, [.sy]
@@: add cx, [.dy]
jle .ps
sub si, [.dy]
add ax, [.sx]
jmp .ps
.sx: dw 0
.sy: dw 0
.dx: dw 0
.dy: dw 0
.x2: dw 0
.y2: dw 0