d_seg segment
row_u db 0 ;行上方的边界->r
row_ddb25 ;行下方的边界->l
col_ldb0 ;列左边的边界->u
col_r db80 ;列右边的边界->d
end_flag db 0 ;1为结束,0为继续
walkdirect db 'r';当前前进的方向,初始向右
d_seg ends
;
code segment
assume cs:code,ds:d_seg
start:
;**
;*
;主程序段代码
main proc far
pushds
xorax,ax
pushax
;
movax,d_seg
movds,ax
;
call clear; 清屏
;
movdx,0 ;光标置0行0列
movbh,0
movah,2
int 10h
;
calldrawdirect ;输出图形
;按任意键退出
mAgain:
mov ah,7
int 21h
cmp al,'q'
jemExit
jmp mAgain
mExit:
call clear
ret
main endp
;-----
;**
;*
;绘图方向的控制
drawdirect proc near
d_continue:
;跟col_l比较,如果col_l>=dl,则walkdirect='u'
cmpwalkdirect,'l' ;是否是左边
jnzno_left;不是
coll_next:
callchar_disp;输出字符
decdl ;往左移一列
cmpcol_l,dl ;比较是否该转方向
jlcoll_next ;不用转,继续输出
incdl ;往右回退一列
inccol_l ;左边界加一
inc col_l
movwalkdirect,'u' ;转方向为向上
jmpdcmp ;退出
;
no_left:
;跟col_r比较,如果col_r<=dl,则walkdirect='d'
cmpwalkdirect,'r' ;是否是右边
jnzno_right ;不是
colr_next:
callchar_disp ;输出字符
incdl ;往右移一列
cmpcol_r,dl ;比较是否该转方向
jgcolr_next ;不用转,继续输出
decdl ;往左回退一列
deccol_r ;右边界减一
dec col_r
movwalkdirect,'d' ;转方向为向下
jmpdcmp ;退出
;
no_right:
;跟row_u比较,如果row_u>=dh,则walkdircet='r'
cmpwalkdirect,'u' ;是否向上走
jnzno_up ;不是
rowu_next:
callchar_disp ;输出字符
decdh ;往上移一行
cmprow_u,dh ;比较是否该转方向了
jl rowu_next ;不用转,继续输出
incdh ;往下回退一行
incrow_u ;上边界加一
;inc row_u
movwalkdirect,'r' ;转方向为向右
jmp dcmp ;退出
;
no_up:
;跟row_d比较,如果row_d<=dh,则walkdirect='l'
rowd_next:
callchar_disp
incdh ;往下移一行
cmp row_d,dh ;比较是否该转方向了
jgrowd_next ;不用转,继续输出
decdh ;往上回退一行
decrow_d ;下边界减一
;dec row_d
mov walkdirect,'l' ;转方向为向左
dcmp:
pushax ;保存al
moval,row_u
incal ;上边界试加一
cmpal,row_d ;上边界是否和下边界重合
pop ax ;恢复al
jged_Exit ;如果将要重合,退出
pushax ;保存al
moval,col_l
incal ;左边界试加一
cmpal,col_r ;如果将要重合,退出
pop ax ;恢复al
jged_Exit ;如果将要重合,退出
jmpd_continue ;接着输出
d_Exit:
ret
drawdirect endp
;--------
;**
;*
char_disp proc near
pushcx ;保存cx
;
mov ah,2
mov bh,0 ;0页显示
int 10h ;置光标位置
;
mov al,2 ;置入笑脸ASCII码
mov bl,07 ;黑底白字符
movcx,1 ;输出字符1次
mov ah,9
int 10h ;输出笑脸
pop cx
ret
char_disp endp
;--------
;**
;*
clear proc near
mov ax,0600h ;全屏幕空白
mov bh,7 ;正常显示
sub cx,cx;起点(0,0)
movdx,184fh ;终点(24,79)
int10h
ret
clear endp
;--------
code ends
end start
分享到:
相关推荐
矩形空心线圈计算器,可计算线圈匝数、线圈高度、线圈厚度、线圈电感。 LC谐振频率计算,可计算电容、电感、频率。 需要.Net 3.5运行环境
matlab矩形线圈磁场仿真
matlab 矩形线圈磁场仿真,可实现图形化分析
昨天去面试 公司出了一题螺旋数组 输入 5 输出 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 当场让我编写,当时比较紧张 没有写出来,回来想了想 其实也不难,附上代码实现,希望能帮到...
矩形矩形矩形矩形矩形矩形矩形矩形矩形矩形矩形矩形矩形矩形矩形矩形矩形矩形矩形矩形矩形矩形矩形矩形矩形矩形矩形矩形矩形矩形矩形矩形矩形矩形矩形矩形矩形矩形矩形矩形矩形矩形矩形矩形矩形矩形矩形矩形矩形矩形...
一维亥姆霍兹线圈仿真,绕线区域由矩形生成,即长方体,更好的模拟了多匝线圈的情况。开发平台为comsol5.2
CSS3同心矩形动画特效是一款彩色好看的递归同心矩形旋转动画特效。
螺旋矩形C语言实现,输入结果如下:1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9
非常实用的特效代码,可以完美运行,可以二次修改!
本资源是一种基于霍夫变换的矩形检测方法,采用matlab语言实现,提供了很多矩形检测的实例。大学毕业设计可以使用。
划分一个由64块小正方形组成的8*8的矩形: 将原矩形分成两个矩形,在分开后的两个矩形中任选一块重复这样的划分, 这样分了(n-1)次后,连同最后剩下的矩形共有n块矩形。 原矩形上每一格有一个分值, 一块矩形的...
方形线圈磁场分布matlab仿真代码
WPF工程 可绘制多个矩形 绘制结束后可拖动矩形的四个角 动态改变矩形大小
通过目标的对角点,可以框出目标的最小外接矩形
DOS界面,找图像中最大的轮廓、画外接矩形,计算矩形度
在 X-Y 坐标平面上,给定多个矩形,它们的边分别与坐标轴平行。请计算它们的并的面积。 输入格式 输入第一行为一个整数 n,1,表示矩形的数量。 接下来有 n 行,每行包括四个数:x1,y1,x2,y2 (0;0),用空格分开...
C#代码,不规则图形分割成多个矩形,可视化工具, 核心是一个找最大内切矩形的算法 牵涉到的知识点: 1. 图片的加载和像素解析,绘制到pictureBox上 2.控制pitctureBox缩放(ctrl+滚轮)和移动 3.动态生成bitmap,...
1097:画矩形 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 21249 通过数: 12589 【题目描述】 根据参数,画出矩形。输入四个参数:前两个参数为整数,依次代表矩形的高和宽(高不少于3行不多于10行,宽不少于5列...
Matlab实现的图像中的圆、矩形、正方形等形状识别
MATLAB仿真矩形线圈垂向磁场,长度和宽度等参数可以调整,得出V=f(x,y,z)的四维立体图,较好的反映整体关系,可以通过修改Z的slice参数,进行切片分层仿真。