彙編畫直線

2021-04-18 11:49:36 字數 2384 閱讀 8383

line macro x1,y1,x2,y2,color

local exit

local linezheng,linefun

local linezhengzheng,linezhengfun

local linefunzheng,linefunfun

local line1,line2,line3

local line11,line12,line13

local line21,line22,line23

local line31,line32,line33

push ax

push bx

push cx

push dx

push si

push di

mov si,0

mov di,0

mov ax,x1

mov bx,x2

mov cx,y1

mov dx,y2

cmp ax,bx

ja linefun

linezheng:

cmp cx,dx

ja linezhengfun

linezhengzheng:

mov ah,0ch

mov al,color

mov bh,0

mov cx,x1

mov dx,y1

line1:add si,(y2-y1)

cmp si,(x2-x1)

jbe line2

sub si,(x2-x1)

inc dx

line2:add di,(x2-x1)

cmp di,(y2-y1)

jbe line3

sub di,(y2-y1)

inc cx

line3:int 10h

cmp cx,x2

jb line1

lea bx,exit

jmp bx

linezhengfun:

mov ah,0ch

mov al,color

mov bh,0

mov cx,x1

mov dx,y1

line11:add si,(y1-y2)

cmp si,(x2-x1)

jbe line12

sub si,(x2-x1)

dec dx

line12:add di,(x2-x1)

cmp di,(y1-y2)

jbe line13

sub di,(y1-y2)

inc cx

line13:int 10h

cmp cx,x2

jb line11

lea bx,exit

jmp bx

linefun:

mov cx,y1

mov dx,y2

cmp cx,dx

ja linefunfun

linefunzheng:

mov ah,0ch

mov al,color

mov bh,0

mov cx,x1

mov dx,y1

line21:

add si,(y2-y1)

cmp si,(x1-x2)

jbe line22

sub si,(x1-x2)

inc dx

line22:add di,(x1-x2)

cmp di,(y2-y1)

jbe line23

sub di,(y2-y1)

dec cx

line23:int 10h

cmp cx,x2

ja line21

jmp exit

linefunfun:

mov cx,x1

mov dx,y1

mov ah,0ch

mov al,color

mov bh,0

line31:add si,(y1-y2)

cmp si,(x1-x2)

jbe line32

sub si,(x1-x2)

dec dx

line32:add di,(x1-x2)

cmp di,(y1-y2)

jbe line33

sub di,(y1-y2)

dec cx

line33:int 10h

cmp cx,x2

ja line31

exit:

pop di

pop si

pop dx

pop cx

pop bx

pop ax

endm

畫直線演算法

畫直線演算法 前段時間做了一下光柵直線生成演算法的研究,並且在vc下實現了dda 演算法 bresenham 演算法 對稱演算法 兩步演算法 及四步演算法。這裡給個總結,希望和大家交流。主要研究的演算法主要有 dda演算法 bresenham 演算法 對稱演算法 兩步演算法 及四步演算法,此外還對自...

DDA演算法畫直線

畫直線的 適合所有斜率的直線 void cmyview linedda cdc pdc,int x0,int y0,int x1,int y1,colorref clr while y ymax return if y0 y1 水平線 while x xmax return double dx x1...

IOS開發 畫直線

介紹兩種畫直線的方法 1 通過quartzcore 2 通過uibezierpath 先建立乙個自定義view 然後在匯入quartzcore框架 然後在m檔案打出下面 三種函式都是同樣的效果 import zcview.h import implementation zcview only ove...