![]() | 第9章 图形显示 | -249- | |||||||||||||||||||
exit: main disp disp code |
mov int mov int endp proc endp ends end |
ax,0003h 10h ah,4ch 21h near main |
;设置字符显示模式3 ;结束进程 ;DISP子过程与DOTMAP.ASM相同,此处省略 |
||||||||||||||||||
灵活地应用画点功能可以绘制出更复杂的图形。刚刚讨论的"画文字"是画点功能的一个具体地应用,我们下面的任务就是要解决如何画出任意方向直线的问题。 解析几何告诉我们坐标系中任意一条直线都可以用方程"y=kx+b"表示,其中k是这条直线的斜率,b是这条直线在y轴上的截距。我们只要根据这个公式编制程序就能在屏幕上画出直线来。请看下面这个程序: |
|||||||||||||||||||||
code start: k x0 y0 x1 y1 go_on: pixel: |
segment assume org jmp db db db db db mov sub mov mov sub mov mov int mov mov |
cs:code,ds:code 100h go_on 0,0 0 0 200 200 al,y1 al,y0 k,al al,x1 al,x0 k+1,al ax,0004h 10h cl,x0 dl,y0 |
;跳过数据区 ;保存斜率 ;起始点的X坐标 ;起始点的Y坐标 ;终止点的X坐标 ;终止点的Y坐标 ;计算Y1-Y0 ;将Y1-Y0保存至K ;计算X1-X0 ;将X1-X0保存至K+1 ;设置图形显示模式4 ;将起始点的(X0,Y0)送至CX-DX |
||||||||||||||||||
Copyright © 2004-2015 Reanimator | www.cookmoon.org |