计算机绘图
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机绘图 Prepared on 22 November 2020
计算机绘图
目目录录::
11::绪绪论论 说明本课题的意义.目的.研究范围及要达到的技术要求
2:方案 说明设计原理并进行方案选择,阐明为什么要选择这个方案以及所采用的方案的特点
3:过程论述
4:结果分析
5:结论
正文:
1:绪论
计算机绘图可以增加学生对IBM-PC 汇编语言的兴趣,增强学生对书本知识的理解和应用能力
要求熟练掌握INT 21H ,INT 16H ,INT 10H 各功能项的功能 2:方案
指定一矩形在屏幕的左上方或右下方的坐标,画出这一矩形,移动光标键,该矩形可以缩放或变形
该方案是以窗口控制程序完成工作和光标控制屏幕窗口。首先清除屏幕,紧接着在屏幕中心生成一个小窗口,其左上角的行列坐标为(10,30),右下角坐标为(15,40),光标定位在(0,0)。当按动光标控制键时,光标能上下左右移动,当光标移动到指定的
位置上后,按下HOME键,此时光标的最后位置或作为窗口左上角坐标,或移动坐标扩大或缩小屏幕窗口。
3:过程论述
编写这个程序时,因多次要用到清屏.生成窗口.定位.清屏.光标定位等功能,因此采用宏汇编技术,把这些功能分别定义成宏指令,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):
MOV AX,0600H
MOV BH,71H
MOV CX,0000H
MOV DX,184FH
INT 10H
在文本方式下设置彩色属性并将全屏上卷一行:
MOV AH,0601H
MOV BH,61H
MOV CX,0000
MOV DX,184FH
INT 10H
注意不要错误的设置右下角屏幕位置大于184FH
用INT 16H的功能0,重置屏幕显示方式也能达到清除屏幕的效果。
键盘输入使用INT 16H的功能0,如键入一个光标移动键,则控制光标在屏幕25*80的范围内移动;如果按动HOME键(扫描码为47H),则以当前光标位置作为新设定的坐标生成新的窗口;如果键入escape键,则退出本程序返回DOS;若键入其它可显示字符,则可在新窗口范围内显示,若显示字符超过窗口的右边界,窗口则上卷一行,字符又从下面一行开始显示
设置光标
该操作在文本方式或图形方式下,按照行:列坐标在屏幕上的任何位置设置光标(功能13H也设置光标),该操作要设置这些寄存器:
BH=页号(默认页为0),DH=行,DL=列
下面的为在第12行,第30列,0页设置光标:
MOV AH,02H
MOV BH,00
MOV DH,12
MOV DL,30
INT 10H
每页的光标位置都独立于其他页的光标。该操作没有返回值。虽然在图形方式下光标是看不见的,仍然可以设置。
光标位置显示字符:
功能INT 10H 的0AH和09H都能显示字符,唯一的区别是:功能09H设置属性,而功能0AH使用当前的属性值。
INT 10H的功能0ah代码:
MOV AH,0AH
MOV AL,CHAR
MOV BH,PAGE#
MOV BL,VALUE
MOV CX,REPETITION
INT 10H