8086Bresenham算法画圆!
时间:2010-12-16
来源:互联网
前两天,masmaster在论坛张榜悬赏捉拿游戏天平,我一直惦记着,可那天平游戏要画圆的,我不会.
这两天我就专门考究了下Bresenham算法画圆,下午打了腹稿,晚上正式汇编... ...
辛苦脑动还真得到了回报,竟一战而下--拿下了Bresenham算法画圆!
先发个图,这次发下源代码了.希望有参考价值.
另外,因为显示器的比例关系,可能在一些显示器上显示出的是椭圆,那不关我的程序的事了...本来是做在320*200*256色模式下的,可在笔记本实机下没通过(虚拟机下通过了),就改在640*480816色模式下了...
图与源如下:(就没写注释了)
DATAS SEGMENT
xs db ?
yh db ?
color dw 0
rr dw 0
rx dw 0
ry dw 0
xx dw 0
yy dw 0
zd dw 0
zg dw 0
yd dw 0
yg dw 0
x8 dw 8 dup (0)
y8 dw 8 dup (0)
paktq db "Press any key to quit!$"
DATAS ENDS
STACKS SEGMENT
db 100h dup (0)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
mov ax,stacks
mov ss,ax
mov sp,100h
mov ah,0fh
int 10h
mov xs,al
mov yh,bh
mov ax,12h
int 10h
mov ax,500h
int 10h
mov ax,4
mov bx,50
mov cx,320
mov dx,320
call yuan
mov dx,offset paktq
mov ah,9
int 21h
mov ah,7
int 21h
mov al,xs
mov ah,0
int 10h
mov al,yh
mov ah,5
int 10h
MOV AH,4CH
INT 21H
yuan:
push ax
push bx
push cx
push dx
mov color,ax
mov rr,bx
mov rx,cx
mov ry,dx
mov yy,bx
HY:
call HD
mov ax,xx
cmp ax,yy
jnb yuanover
xor dx,dx
mov ax,xx
inc ax
mul ax
shl ax,1
rcl dx,1
mov zg,dx
mov zd,ax
xor dx,dx
mov ax,yy
mul ax
shl ax,1
rcl dx,1
add ax,1
adc dx,0
add zd,ax
adc zg,dx
xor dx,dx
mov ax,rr
mul ax
shl ax,1
rcl dx,1
mov yd,ax
mov yg,dx
xor dx,dx
mov ax,yy
mov bx,2
mul bx
add yd,ax
adc yg,dx
mov ax,zg
cmp ax,yg
ja Y_1
jb y_0
mov ax,zd
cmp ax,yd
jb y_0
y_1:
dec yy
Y_0:
inc xx
jmp HY
yuanover:
pop dx
pop cx
pop bx
pop ax
ret
HD:
push ax
push bx
push cx
push dx
mov cx,8
mov si,offset x8
mov di,offset y8
mov bx,rx
mov dx,ry
d8d:
mov [si],bx
mov [di],dx
add si,2
add di,2
loop d8d
mov cx,xx
mov dx,yy
add [si-16],cx
add [di-16],dx
add [si-14],cx
sub [di-14],dx
sub [si-12],cx
add [di-12],dx
sub [si-10],cx
sub [di-10],dx
add [si-8],dx
add [di-8],cx
add [si-6],dx
sub [di-6],cx
sub [si-4],dx
add [di-4],cx
sub [si-2],dx
sub [di-2],cx
mov cx,8
h8d:
push cx
sub si,2
sub di,2
mov ax,color
mov ah,0ch
mov bh,0
mov dx,[di]
mov cx,[si]
int 10h
pop cx
loop h8d
pop dx
pop cx
pop bx
pop ax
ret
CODES ENDS
END START
这两天我就专门考究了下Bresenham算法画圆,下午打了腹稿,晚上正式汇编... ...
辛苦脑动还真得到了回报,竟一战而下--拿下了Bresenham算法画圆!
先发个图,这次发下源代码了.希望有参考价值.
另外,因为显示器的比例关系,可能在一些显示器上显示出的是椭圆,那不关我的程序的事了...本来是做在320*200*256色模式下的,可在笔记本实机下没通过(虚拟机下通过了),就改在640*480816色模式下了...
图与源如下:(就没写注释了)
DATAS SEGMENT
xs db ?
yh db ?
color dw 0
rr dw 0
rx dw 0
ry dw 0
xx dw 0
yy dw 0
zd dw 0
zg dw 0
yd dw 0
yg dw 0
x8 dw 8 dup (0)
y8 dw 8 dup (0)
paktq db "Press any key to quit!$"
DATAS ENDS
STACKS SEGMENT
db 100h dup (0)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
mov ax,stacks
mov ss,ax
mov sp,100h
mov ah,0fh
int 10h
mov xs,al
mov yh,bh
mov ax,12h
int 10h
mov ax,500h
int 10h
mov ax,4
mov bx,50
mov cx,320
mov dx,320
call yuan
mov dx,offset paktq
mov ah,9
int 21h
mov ah,7
int 21h
mov al,xs
mov ah,0
int 10h
mov al,yh
mov ah,5
int 10h
MOV AH,4CH
INT 21H
yuan:
push ax
push bx
push cx
push dx
mov color,ax
mov rr,bx
mov rx,cx
mov ry,dx
mov yy,bx
HY:
call HD
mov ax,xx
cmp ax,yy
jnb yuanover
xor dx,dx
mov ax,xx
inc ax
mul ax
shl ax,1
rcl dx,1
mov zg,dx
mov zd,ax
xor dx,dx
mov ax,yy
mul ax
shl ax,1
rcl dx,1
add ax,1
adc dx,0
add zd,ax
adc zg,dx
xor dx,dx
mov ax,rr
mul ax
shl ax,1
rcl dx,1
mov yd,ax
mov yg,dx
xor dx,dx
mov ax,yy
mov bx,2
mul bx
add yd,ax
adc yg,dx
mov ax,zg
cmp ax,yg
ja Y_1
jb y_0
mov ax,zd
cmp ax,yd
jb y_0
y_1:
dec yy
Y_0:
inc xx
jmp HY
yuanover:
pop dx
pop cx
pop bx
pop ax
ret
HD:
push ax
push bx
push cx
push dx
mov cx,8
mov si,offset x8
mov di,offset y8
mov bx,rx
mov dx,ry
d8d:
mov [si],bx
mov [di],dx
add si,2
add di,2
loop d8d
mov cx,xx
mov dx,yy
add [si-16],cx
add [di-16],dx
add [si-14],cx
sub [di-14],dx
sub [si-12],cx
add [di-12],dx
sub [si-10],cx
sub [di-10],dx
add [si-8],dx
add [di-8],cx
add [si-6],dx
sub [di-6],cx
sub [si-4],dx
add [di-4],cx
sub [si-2],dx
sub [di-2],cx
mov cx,8
h8d:
push cx
sub si,2
sub di,2
mov ax,color
mov ah,0ch
mov bh,0
mov dx,[di]
mov cx,[si]
int 10h
pop cx
loop h8d
pop dx
pop cx
pop bx
pop ax
ret
CODES ENDS
END START
作者: nanlingcg 发布时间: 2010-12-16
学习~~~
作者: masmaster 发布时间: 2010-12-16
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28