计算机绘图
精品文档
精品文档
收集于网络,如有侵权请联系管理员删除
收集于网络,如有侵权请联系管理员删除
精品文档
收集于网络,如有侵权请联系管理员删除
计算机绘图
目录:
1:绪论 说明本课题的意义.目的.研究范围及要达到的技术要求
2:方案 说明设计原理并进行方案选择,阐明为什么要选择这个方案以及所采用的方案的特点
3:过程论述
4:结果分析
5:结论
正文:
1:绪论
计算机绘图可以增加学生对IBM-PC汇编语言的兴趣,增强学生对书本知识的理解和应用能力
要求熟练掌握INT 21H,INT 16H,INT 10H各功能项的功能
2:方案
指定一矩形在屏幕的左上方或右下方的坐标,画出这一矩形,移动光标键,该矩形可以缩放或变形
该方案是以窗口控制程序完成工作和光标控制屏幕窗口。首先清除屏幕,紧接着在屏幕中心生成一个小窗口,其左上角的行列坐标为(10,30),右下角坐标为(15,40),光标定位在(0,0)。当按动光标控制键时,光标能上下左右移动,当光标移动到指定的位置上后,按下HOME键,此时光标的最后位置或作为窗口左上角坐标,或移动坐标扩大或缩小屏幕窗口。
3:过程论述
编写这个程序时,因多次要用到清屏.生成窗口.定位.清屏.光标定位等功能,因此采用宏汇编技术,把这些功能分别定义成宏指令clear.scroll,postc等,这样,在编写程序时,这些定义后的宏指令就和其它汇编语言指令一样直接写在程序中。
宏指令是8086汇编语言中提供的一种简化程序编写的手段。编写程序是经常会遇到这样的现象:同一个程序段需要在程序中出现多次,或者程序中有几段指令列中除了个别符号不相同外,总体上是一样的。“宏”正可以用来实现“文字块”操作的功能,不仅如此,使用宏还可以克服复制无法解决的困难:如果块复制后发现其中的内容有错误,则要对重复出现的每一处都进行修改。程序中使用宏分为定义和调用两部分。宏定义用来说明那些指令或伪指令是将在程序段;宏调用是用来告诉汇编程序,在翻译前先把宏定义中的程序段复制一遍。
宏定义:
宏定义是用一组伪操作来实现,格式为:
宏名 MACRO [哑元表]
.
.(宏体)
.
ENDM
说明:
(1)“宏名”是一个标识符,一个程序中可以定义多个宏,对每一个宏必须以不同的标识符命名,且宏名不能与变量.标号.段名等标识符同名。
(2)汇编语言规定,宏定义起始标记MACRO前面必须写宏的名字,而结束标记ENDM的前面却不允许写任何内容,写在起始标记之间的部分称为宏体,宏体部分通常是一段程序中需要重复使用的指令序列。
(3)宏定义仅仅用来告诉汇编程序,将来宏调用时复制的对象是什么,宏定义中的程序段并不是程序的一部分,也就是说,如果程序中定义了一个宏而没有调用它,汇编程序将忽略宏定义。
(4)宏定义可以放在程序的任何地方(但要在它的第一次调用之前),它可有可无,但习惯上总是把宏定义写在程序的最前面。
(5)哑元表给出了宏定义中所用到的形式参数,它可有可无,当有多个形参时,每个形参之间要用逗号隔开。
宏调用
定义后的宏名又为宏指令,就可以在源程序中调用宏了,调用格式为:
宏指令名[实元表]
宏调用的方式是在源程序中需要复制宏体的地方写宏的名字。宏名单独占一行,当源程序被汇编时,它必须与宏定义中的宏名一致,其后的实在参数要与宏定义的形参数按位置一一对应。如果实参的个数多于形参的个数时,多余的实参可以被忽略。如果实参的个数少于形参个数,则缺少的实参被处理为空白,实参可以与形参同名。
清除屏幕用的是存储器映射法,即连续往显存个单元中写入0,本程序中清除屏幕使用BIOS 10H 的卷屏功能AH=6或AH=7,给定左上角参数为(0,0),右下角参数为(24,79),属性为07,然后调用10H ROM例行程序,则完成清除的工作。
清除屏幕
INT 10H的06功能处理清除屏幕或滚动。清楚全屏或部分屏幕显示,可在全屏幕范围的任意位置开始和任意位置结束,设置以下寄存器:
AH=06H 功能号
AL=滚动的行数,或00H全屏为空白
BH=属性值(颜色.闪烁)
CX=起始行:列
DX=结束的行:列
CX和DX共同定义了滚动的屏幕区(或窗口),AL指明了上卷的行数。如果要清除整个屏幕,就指定CX中的起始行:列为00:00H,DX中的行:列为18:4FH。
下例中的属性71H设置整个屏幕为白色背景(属性为7)和蓝色前景(属性为1):
MOVAX,0600H
MOVBH,71H
MOVCX,0000H
MOVDX,184FH
INT10H
在文本方式下设置彩色属性并将全屏上卷一行:
MOVAH,0601H
MOVBH,61H
MOVCX,