《2022年霓虹灯显示程序设计 .pdf》由会员分享,可在线阅读,更多相关《2022年霓虹灯显示程序设计 .pdf(36页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1 吉林工程技术师范学院微机原理综合课程设计报告书设计题目:霓虹灯显示程序设计专 业 :计 算 机 科 学 与 技 术班级:C1042 学生姓名:孟 垂 参学号:29 号指导教师:齐艳茹2012年 6 月信息工程学院名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 36 页 - - - - - - - - - 2 目录第一章设计课题概述. 31.1 课程设计目的. 31.2 设计要求及内容. 3第二章总体设计 . 42.1 设计思想及实施方案. 42.1.1 设计思想 .
2、4第三章硬件设计原理图及其说明. 5第四章软件设计 . 64.1 流程图及其说明. 64.1.2 子程序流程图. 84.2 主要程序段与程序设计分析. 11 4.2.1 程序中用到的BIOS 内的中断功能. 11 4.2.2 程序中用到的DOS 功能调用 . 12 4.2.3 主要程序段与程序设计分析. 12 4.3 源程序清单和注释. 16 第五章程序运行及结果. 31 5.1.调试工具 . 31 5.2.调试过程与结果分析. 31 总结 . 35 参考资料 . 36 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整
3、理 - - - - - - - 第 2 页,共 36 页 - - - - - - - - - 3 第一章设计课题概述1.1 课程设计目的(一)目的1通过本教学环节的实践,巩固微机原理与接口技术的基本理论知识,强化软、硬件的设计和调试能力,培养学生独立分析与解决问题能力。2通过一定的文档要求,培养学生良好的程序设计风格,包括程序结构形式,行文格式和程序正文格式等。1.2 设计要求及内容(二)要求1本教学环节要求以学生独立操作实践为主,教师指导为辅,在实践中不断学习,尤其要强调学生自主设计,独立思考。2课题的选定应考虑既要工作量适宜,又能较好地溶合所学的主要知识点。(三)内容1课题类型设计课题选用
4、 8086汇编语言实现微机系统及常用接口控制,主要包括屏幕处理、键盘控制、中断控制、时钟控制、图形及简易的动画演示及发声系统设计等方面的应用课题名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 36 页 - - - - - - - - - 4 第二章总体设计2.1 设计思想及实施方案2.1.1 设计思想1用汇编语言编写一个霓虹灯的模拟显示程序; 2在屏幕上显示你的中文名字或其它文字,按某种规律闪烁变化,按“q”键退出;分析任务书要求可知:本次程序设计尽量在屏幕上显示自己的名
5、字,也可以显示其他的文字。 文字要按某种方式闪烁,闪烁方式不限定于一种,也可以多种。程序运行过程中,有Q或 q 输入,则程序结束;无字符输入或输入字符不是Q 、q,则程序照常运行。2.2.2 实施方案(1)文字显示可采用坐标纸写点的方式或者直接用字模软件取字符。原本下载了一个字模软件,在其中输入文字就可以读取字模。但是其字模编码是用于LED中的,并不能直接在本程序中调用显示文字。因此,最后采用用坐标纸写点的方式, 虽然写点的工作量较大,但是便于理解,容易修改。(2)用相同字体但不同颜色的字符去覆盖对应的字符,只能起到变色的作用。要实现闪烁还要把每一个点的颜色属性最高位设为1。(3)退出程序块中
6、,在判断输入字符是否为Q或 q 之前必须加一段有没有字符输入的程序。否则,程序运行到判断字符这里,运行窗口就会等在那里,直到输入字符才能继续运行。 这样每次运行到这里程序就会等着,实现不了霓虹灯的连续闪烁。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 36 页 - - - - - - - - - 5 第三章硬件设计原理图及其说明汇编语言是用指令的助记符、符号地址、标号等书写程序的语言, 实际上是机器语言的一种符号表示, 主要特点是可以使用助记符来表示机器指令的操作码和操
7、作数,可以用标号和符号来代替地址、常量和变量。汇编语言是能够利用计算机所有硬件特性进而直接控制硬件的唯一语言。汇编语言的使用范围很广, 文字显示只是其中很简单的一项。本次课程设计采用DOS 和 BIOS功能调用,采用 2580 的彩色图像显示方式。先在坐标纸上用ASCII 码所对应的字符拼出自己的名字,并设定 ASCII 码的颜色值。 ASCII 码对应字符的位置由行数与列数的二维坐标确定。其中行向上则减,向下则增;列向左则减,向右则增。程序在数据段中写出所要显示的我名字的位形图,每行数据段定义组成文字的一个点。其中包含组成文字的字符、颜色、横坐标、纵坐标。文字的变色是通过同一个字的不同颜色版
8、本去覆盖当前的版本以及清屏、擦除程序实现的。 文字的闪烁则是通过将颜色属性的八位二进制数的最高位置一实现的。通过比较输入字符与0、Q或 q 的大小,来实现退出的功能。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 36 页 - - - - - - - - - 6 第四章软件设计4.1 流程图及其说明4.1.1 主程序流程图流程思路:数据段初始化 调用汉字显示程序,先显示汉字”yu” ,再显示汉字”yu1”调用竖条纹显示程序,显示运动的条纹判断是否有字符输入,没有的话,继续
9、往下执行 有字符输入时,判断是否为“Q”或“ q”不为“Q”或“ q”时,转到执行程序段Aagain1为“Q”或“ q”时,退出程序。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 36 页 - - - - - - - - - 7 主程序流程图如下:图 1 霓虹灯显示主程序开始数据段初始Y Y N N 调用条纹显示子程序,显示运动的条纹调用汉字显示子程序,先后显示 “xiang” , “xiang1”调用条纹显示子程序, 显示运动的条纹结束输入字符是否是“Q” 、“ q”
10、 ?调用汉字显示子程序,先后显示 “jia” , “jia1”调用条纹显示子程序,显示运动的条纹调用汉字显示程序,先后显示 “yu” , “yu1”判 断 是 否 有字符输入?名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 36 页 - - - - - - - - - 8 4.1.2 子程序流程图本程序显示的汉字为自己的名字, 名字中的每个字都用不同颜色的版本写两次,然后竖形条纹扫过, 条纹扫过时汉字被覆盖, 条纹扫过后开始显示下一个文字,然后条纹再扫过,一直这样循环。因
11、此,子程序有汉字显示子程序、竖形条纹显示子程序、擦除子程序,对应的流程图分别如图2、3、4 所示。图 2 汉字显示子程序流程图开始Y N CX 中内容自减1 寄存器出栈判断CX中内容是否为 0?CX 出栈,保存循环次数在指定坐标处写第一个点CX 入栈保存组成点的基本信息CX 寄存器清零寄存器入栈结束名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 36 页 - - - - - - - - - 9 图 3 竖形条纹显示子程序寄存器入栈CX 寄存器清零保存组成点的基本信息结束寄
12、存器出栈将字符写11 次判 断 指 定 坐 标 处字符是否为 * ?判 断 指 定 坐 标 处字符是否为 ?CX 出栈, 保存循环次数在指定坐标处写第一个点判 断 是 否 到 达屏幕最左端?CX 寄存器入栈Y N Y N N Y 开始名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 36 页 - - - - - - - - - 10 图 4 擦除子程序N N N Y Y 结束保存点的基本信息列坐标 dl 自减 1 将字符改为 *将字符写11 个判 断 指 定 位 置 处字符
13、是否为 *?判断指定位置处字符是否为 ?判断是否到达屏幕最左端?保存组成点的基本信息开始名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 36 页 - - - - - - - - - 11 4.2 主要程序段与程序设计分析4.2.1 程序中用到的BIOS 内的中断功能(1)02H号功能调用功能:用文本坐标下设置光标位置入口参数: AH=02H BH=显示页码 DH=行(Y坐标) DL=列(X坐标)出口参数:无(2)08H号功能调用功能:读光标处的字符及其属性入口参数: A
14、H=08H BH=显示页码出口参数: AH= 属性 AL=字符(3)09H号功能调用功能:在当前光标处按指定属性显示字符入口参数: AH=09H AL=字符 BH=显示页码 BL=属性(文本模式)或颜色(图形模式) CX=重复输出字符的次数出口参数:无(4)0FH号功能调用功能:读取显示器模式入口参数: AH=0FH 出口参数: AH= 屏幕字符的列数名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 36 页 - - - - - - - - - 12 AL=显示模式 BH
15、=页码4.2.2 程序中用到的DOS 功能调用(1)01H号功能调用功能:从键盘输入一个字符输入参数:无输出参数: AL=ASCII码(2)0BH号功能调用功能:检查标准输入设备上是否有字符可读,该输入操作可被重定向输入参数: AH=0BH 输出参数: AL=00H 无字符可读; FFH 有字符可读(3)4CH号功能调用功能:返回操作系统4CH 调用: MOV AH,4CH INT 21H 4.2.3 主要程序段与程序设计分析(1)数据段本课程设计源程序中的汉字运用写点的方式实现,在数据段的定义中, 由组成汉字的点的ASCII 码值、颜色、 X坐标、 Y坐标构成。例如:yu db 34 db
16、2ah,8ah,0,0 db 2ah,8ah,-5,1 db 2ah,8ah,4,0 db 2ah,8ah,-5,1 这段程序是第一个汉字“余”的位形图,其中2ah为组成“余”字第一个点的ASCII码值,在屏幕上显示为 *;8ah为颜色属性,为淡绿色且闪烁; (0,0)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 36 页 - - - - - - - - - 13 为这个点的坐标,第一个为行坐标,第二个为列坐标。这个点为“余”字组成点的基准坐标,其它点的坐标设置与此点
17、类似。坐标设置按照矩阵的形式, 向上则行自减 1,向下则行自增 1,向左则列自减 1,向右则列自增 1。每写出一个点后,该点的坐标变回基准坐标(0,0) 。本程序中写点是按照从左到右、从上到下的顺序写的,直至写完所有的点。(2)写点程序段首先将汉字位形图的地址送给寄存器,程序如下:lea di,yu mov dh,17 mov dl,6 其中, dh,dl分别对应于所写汉字第一个点在屏幕上显示时的行、列坐标。然后读取组成点的信息,程序段如下:mov char_cnt1,cx mov pointer1,di mov line_on1,dh mov col_on1,dl mov char,cx 程
18、序中 char_cnt1指字符, pointer1指颜色, line_on1指行坐标,col_on1指列坐标。写点的程序在子程序Amust_2,Amust_21中类似,程序段如下:mov cx,char_cnt1 mov di,pointer1 mov dh,line_on1 mov dl,col_on1 Aplot_next0: adddh,di+2 adddl,di+3 movah,2int10hmoval,di 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 36
19、 页 - - - - - - - - - 14 movbl,di+1 pushcxmovcx,1movah,09int10hpopcxadddi,4应当说明的是,程序中cx寄存器入栈又出栈。入栈是为了保存cx中的数值,将寄存器 cx空出来, 作为计数用, 随即出栈的目的是重新将已经保存的cx中的值保存到 cx中,作为循环次数用。 程序中到int 10h为止都是写点的程序。 adddi,4是为写下一个点做准备,直至写完。(3)输入 Q、q退出程序movah,0bhint21hcmpal,0jzAagain1 movah,1int21hcmp al,q jzexit cmpal,Q jzexit
20、jmpAagain1 exit : mov ax,4c00hint21h本段程序实现了首先判断有没有字符输入,有字符输入再判断是否为Q、q,进而判断是否退出。若没有jmpAagain1这条语句,输入的字符不是Q、q程序也会结束。(4)竖形条纹的显示程序名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 36 页 - - - - - - - - - 15 cmpal,40hjeAexitx0 cmpal,02ahjeAexitx0 jmpAexitx1 Aexitx0: de
21、cAcount0 jneAplot_next movAcount0,11 数据段中竖形条纹只定义了6个点,为了能够有足够的宽度将汉字覆盖,因此要将db 40h,05h,1,0 与db 02ah,05h,-1,0 两个点重复写 11次,形成够宽的条纹。主程序中Acount0先定义为了 11,写完 11个“”后, Acount0重新赋值 11,再将 02ah对应的字符“ *”写11次,构成完整的竖形条纹。(5)竖形条纹的移动与擦除程序自己名字三个字的依次显示是通过竖形条纹的移动覆盖与擦除程序实现的。 Aerase_next: adddh,di+2 adddl,di+3 cmpdl,2jeAleft
22、 movah,2int10hmovah,8int10hcmpal,40hjeAexitx2 cmpal,02ahjeAexitx2 jmpAexitx3 Aexitx2: decAcount0 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 36 页 - - - - - - - - - 16 jneAexitx3 movAcount0,11Aexitx3: cmpAcount1,1jeAexit0 moval,* movbl,03hjmpAexit7 Aexit0: m
23、oval,* movbl,0Aexit7: pushcxmovcx,1movah,9int10hpopcxcmpAcount0,11jneAerase_next adddi,4loopAerase_next deccol_on1 在每次写完竖形条纹以后,由deccol_on1实现起始点列坐标的的自减1,从而实现竖形条纹的从右向左移动。屏幕的擦除是通过比较竖形条纹与“*” ,相同则不变,不同则将次字符改为“*”实现的。4.3 源程序清单和注释data_seg segment ;定义数据段yu db 34 ; 第一个“余”字的位形图db 2ah,8ah,0,0db 2ah,8ah,-5,1db 2
24、ah,8ah,4,0名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 36 页 - - - - - - - - - 17 db 2ah,8ah,-5,1db 3dh,8ah,2,0db 2ah,8ah,2,0db 2ah,8ah,-5,1db 3dh,8ah,3,0db 2ah,8ah,3,0db 2ah,8ah,-7,1db 3dh,8ah,2,0db 3dh,8ah,2,0db 2ah,8ah,4,0db 2ah,8ah,-9,1db 3dh,8ah,3,0db 40
25、h,8eh,1,0db 3dh,8ah,1,0db 40h,8eh,1,0db 40h,8eh,1,0db 40h,8eh,1,0db 40h,8eh,1,0db 2ah,8ah,-10,1db 2ah,8ah,1,0db 3dh,8ah,3,0db 3dh,8ah,2,0db 2ah,8ah,-4,1db 3dh,8ah,4,0db 2ah,8ah,2,0db 2ah,8ah,-5,1db 3dh,8ah,3,0db 2ah,8ah,3,0db 2ah,8ah,-5,1db 2ah,8ah,6,0db 2ah,8ah,-5,1yu1 db 34 ;第二个“余”字的位形图db 2ah,0ch,
26、0,0db 2ah,0ch,-5,1db 2ah,0ch,4,0db 2ah,0ch,-5,1db 3dh,0ch,2,0db 2ah,0ch,2,0db 2ah,0ch,-5,1db 3dh,0ch,3,0db 2ah,0ch,3,0db 2ah,0ch,-7,1db 3dh,0ch,2,0db 3dh,0ch,2,0名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 36 页 - - - - - - - - - 18 db 2ah,0ch,4,0db 2ah,0ch,-
27、9,1db 3dh,0ch,3,0db 40h,01h,1,0db 3dh,0ch,1,0db 40h,01h,1,0db 40h,01h,1,0db 40h,01h,1,0db 40h,01h,1,0db 2ah,0ch,-10,1db 2ah,0ch,1,0db 3dh,0ch,3,0db 3dh,0ch,2,0db 2ah,0ch,-4,1db 3dh,0ch,4,0db 2ah,0ch,2,0db 2ah,0ch,-5,1db 3dh,0ch,3,0db 2ah,0ch,3,0db 2ah,0ch,-5,1db 2ah,0ch,6,0db 2ah,0ch,-5,1jia db 43 ;
28、第一个“佳”字的位形图db 23h,0eh,0,0 db 23h,0eh,-1,1db 2ah,0eh,1,0db 2ah,0eh,1,0db 2ah,0eh,1,0db 2ah,0eh,1,0db 2ah,0eh,1,0db 2ah,0eh,1,0db 2ah,0eh,1,0db 2ah,0eh,1,0db 23h,0eh,-9,1db 23h,0eh,-1,1db 3dh,0eh,6,1db 3dh,0eh,4,0db 3dh,0eh,-7,1db 3dh,0eh,3,0db 3dh,0eh,2,0db 3dh,0eh,2,0db 3dh,0eh,-7,1db 3dh,0eh,3,0db
29、3dh,0eh,2,0名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 36 页 - - - - - - - - - 19 db 3dh,0eh,2,0db 24h,0ch,-10,1db 24h,0ch,1,0db 24h,0ch,1,0db 24h,0ch,1,0db 24h,0ch,1,0db 24h,0ch,1,0db 3dh,0eh,1,0db 24h,0ch,1,0db 3dh,0eh,1,0db 24h,0ch,1,0db 3dh,0eh,1,0db 3dh
30、,0eh,-7,1db 3dh,0eh,3,0db 3dh,0eh,2,0db 3dh,0eh,2,0db 3dh,0eh,-7,1db 3dh,0eh,3,0db 3dh,0eh,2,0db 3dh,0eh,2,0db 3dh,0eh,-4,1db 3dh,0eh,4,0 jia1 db 43 ;第二个“佳”字的位形图db 23h,0ah,0,0db 23h,0ah,-1,1db 2ah,0ah,1,0db 2ah,0ah,1,0db 2ah,0ah,1,0db 2ah,0ah,1,0db 2ah,0ah,1,0db 2ah,0ah,1,0db 2ah,0ah,1,0db 2ah,0ah,1
31、,0db 23h,0ah,-9,1db 23h,0ah,-1,1db 3dh,0ah,6,1db 3dh,0ah,4,0db 3dh,0ah,-7,1db 3dh,0ah,3,0db 3dh,0ah,2,0db 3dh,0ah,2,0db 3dh,0ah,-7,1db 3dh,0ah,3,0db 3dh,0ah,2,0名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 19 页,共 36 页 - - - - - - - - - 20 db 3dh,0ah,2,0db 24h,07h,-1
32、0,1db 24h,07h,1,0db 24h,07h,1,0db 24h,07h,1,0db 24h,07h,1,0db 24h,07h,1,0db 3dh,0ah,1,0db 24h,07h,1,0db 3dh,0ah,1,0db 24h,07h,1,0db 3dh,0ah,1,0db 3dh,0ah,-7,1db 3dh,0ah,3,0db 3dh,0ah,2,0db 3dh,0ah,2,0db 3dh,0ah,-7,1db 3dh,0ah,3,0db 3dh,0ah,2,0db 3dh,0ah,2,0db 3dh,0ah,-4,1db 3dh,0ah,4,0 xiang db 57 ;
33、第一个“翔”字的位形图db 2ah,0ch,0,0db 23h,0ch,3,0db 23h,0ch,2,0db 23h,0ch,2,0db 40h,0ch,3,0db 2ah,0ch,-9,1db 23h,0ch,2,0db 23h,0ch,2,0db 23h,0ch,2,0db 40h,0ch,2,0db 2ah,0ch,-7,1db 23h,0ch,1,0db 40h,0ch,1,0db 23h,0ch,1,0db 40h,0ch,1,0db 23h,0ch,1,0db 40h,0ch,1,0db 2ah,0ch,-7,1db 23h,0ch,2,0db 23h,0ch,2,0db 23h
34、,0ch,2,0名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 36 页 - - - - - - - - - 21 db 2ah,0ch,-7,1db 23h,0ch,3,0db 23h,0ch,2,0db 23h,0ch,2,0db 2ah,0ch,1,1db 3dh,0ch,-5,1db 2ah,0ch,2,0db 2ah,0ch,2,0db 3dh,0ch,-4,1db 2ah,0ch,3,0db 5ch,0ch,3,0db 5ch,0ch,1,0db 3dh,0
35、ch,-7,1db 7ch,0ch,1,0db 7ch,0ch,1,0db 7ch,0ch,1,0db 7ch,0ch,1,0db 7ch,0ch,1,0db 7ch,0ch,1,0db 7ch,0ch,1,0db 2ah,0ch,-2,1db 3dh,0ch,-5,1db 2ah,0ch,2,0db 2ah,0ch,2,0db 3dh,0ch,-4,1db 2ah,0ch,3,0db 5ch,0ch,3,0db 5ch,0ch,1,0db 3dh,0ch,-7,1db 7ch,0ch,1,0db 7ch,0ch,1,0db 7ch,0ch,1,0db 7ch,0ch,1,0db 7ch,0c
36、h,1,0db 7ch,0ch,1,0db 7ch,0ch,1,0 xiang1 db 57 ;第二个“翔”字的位形图db 2ah,07h,0,0db 23h,07h,3,0db 23h,07h,2,0db 23h,07h,2,0db 40h,07h,3,0db 2ah,07h,-9,1db 23h,07h,2,0名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 21 页,共 36 页 - - - - - - - - - 22 db 23h,07h,2,0db 23h,07h,2,0d
37、b 40h,07h,2,0db 2ah,07h,-7,1db 23h,07h,1,0db 40h,07h,1,0db 23h,07h,1,0db 40h,07h,1,0db 23h,07h,1,0db 40h,07h,1,0db 2ah,07h,-7,1db 23h,07h,2,0db 23h,07h,2,0db 23h,07h,2,0db 2ah,07h,-7,1db 23h,07h,3,0db 23h,07h,2,0db 23h,07h,2,0db 2ah,07h,1,1db 3dh,07h,-5,1db 2ah,07h,2,0db 2ah,07h,2,0db 3dh,07h,-4,1db
38、 2ah,07h,3,0db 5ch,07h,3,0db 5ch,07h,1,0db 3dh,07h,-7,1db 7ch,07h,1,0db 7ch,07h,1,0db 7ch,07h,1,0db 7ch,07h,1,0db 7ch,07h,1,0db 7ch,07h,1,0db 7ch,07h,1,0db 2ah,07h,-2,1db 3dh,07h,-5,1db 2ah,07h,2,0db 2ah,07h,2,0 db 3dh,07h,-4,1db 2ah,07h,3,0db 5ch,07h,3,0db 5ch,07h,1,0db 3dh,07h,-7,1db 7ch,07h,1,0名师
39、资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 22 页,共 36 页 - - - - - - - - - 23 db 7ch,07h,1,0db 7ch,07h,1,0db 7ch,07h,1,0db 7ch,07h,1,0db 7ch,07h,1,0db 7ch,07h,1,0car db 6db 3dh,0eh,0,0db 40h,0bh,1,0db 3dh,0eh,1,0db 3ch,0eh,0,1db 02ah,0bh,-1,0db 3ch,0eh,-1,0jeep db 6
40、;竖形条纹的位形图db 3dh,0eh,0,0db 40h,05h,1,0db 3dh,0eh,1,0db 3ch,0eh,0,-1db 02ah,05h,-1,0db 3ch,0eh,-1,0 char_cnt1 dw ? pointer1 dw ? line_on1 db ? col_on1 db ? char dw ? Acount db ? Acount0 db ? Acount1 db ? data_seg ends ;- code_seg segment assume cs:code_seg,ds:data_seg main proc far ;定义主函数pushdssubax,a
41、xsubcx,cxpushaxpushcxmovax,data_seg movds,axmovAcount1,2movAcount0,11Aagain: leadi,yu ;把第一个“余”字位形图地址送给di名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 23 页,共 36 页 - - - - - - - - - 24 movdh,17movdl,6callmove_shape1 ;调用子程序 move_shape1 callAmust_2 ;调用子程序Amust_2 leadi,y
42、u1 movdh,17movdl,6callmove_shape1 callAmust_2 leadi,jeep ;把竖形条纹位形图的地址送给dimovdh,6movdl,76callmove_shape1 callAmust_21 movah,0bh ;判断有没有字符输入int21hcmpal,0jzAagain1 ;无字符输入执行Aagain1 movah,1int21hcmp al,q jzexit cmpal,Q jzexit jmpAagain1 exit : mov ax,4c00hint21hAagain1: leadi,jia movdh,10movdl,29callmove_
43、shape1 callAmust_2 leadi,jia1 movdh,10movdl,29callmove_shape1 callAmust_2 leadi,jeep movdh,6movdl,76callmove_shape1 callAmust_21 leadi,xiang movdh,7名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 24 页,共 36 页 - - - - - - - - - 25 movdl,49callmove_shape1 callAmust_2 lea
44、di,xiang1 movdh,7movdl,49callmove_shape1 callAmust_2 leadi,jeep movdh,6movdl,76callmove_shape1 callAmust_21 jmpAagain main endp ;-clear_screen proc near ;清屏程序pushaxpushbxpushcxpushdxmovah,6moval,0movch,4movcl,3movdh,20movdl,77movbh,7int10hpopdxpopcxpopbxpopaxretclear_screen endp ;-;-move_shape1 proc
45、 near pushaxpushbxpushcxpushdxpush di movah,0fh ;读取显示器模式名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 25 页,共 36 页 - - - - - - - - - 26 int10hsubch,chmovcl,di incdi movchar_cnt1,cx ;读取组成点的字符、颜色、行列坐标movpointer1,di movline_on1,dhmovcol_on1,dlmovchar,cxpopdi popdxpopcxp
46、opbxpopaxretmove_shape1 endp ;-Amust_2 proc near pushaxpushbxpushcxpushdxpush di movah,0fhint10hsubcx,cxmovcx,char_cnt1 movdi,pointer1 movdh,line_on1 movdl,col_on1 Aplot_next0: adddh,di+2 adddl,di+3 movah,2int10hmoval,di movbl,di+1 pushcxmovcx,1movah,09int10h ;写第一个点popcxadddi,4call dly_qrtr1 ;调用延时显示
47、子程序名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 26 页,共 36 页 - - - - - - - - - 27 loop Aplot_next0 Aexit6: popdi popdxpopcxpopbxpopaxretAmust_2 endp ;-;* Amust_21 proc near pushaxpushbxpushcxpushdxpush di movah,0fhint10hmovAcount,20Aexit1: call dly_qrtr decAcount je
48、Aexit5 jmpAexit1 Aexit5: subcx,cxmovcx,char_cnt1 movdi,pointer1 movdh,line_on1 movdl,col_on1 Aplot_next: adddh,di+2 adddl,di+3 cmpdl,2jeAexit4 ;判断是否到达屏幕最左端,是的话执行movah,2int10hmoval,di movbl,di+1 pushcxmovcx,1movah,09int10hpopcxcmpal,40h名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 -
49、 - - - - - - 第 27 页,共 36 页 - - - - - - - - - 28 jeAexitx0 cmpal,02ahjeAexitx0 jmpAexitx1 Aexitx0: decAcount0 jneAplot_next movAcount0,11Aexitx1: adddi,4loop Aplot_next call dly_qrtr call dly_qrtr call dly_qrtr call Aerase jmpAexit5 Aexit4: call Aerase popdi popdxpopcxpopbxpopaxretAmust_21 endp ;*;-A
50、erase proc near ;读取点的基本信息movcx,char_cnt1 movdi,pointer1 movdh,line_on1 movdl,col_on1 Aerase_next: adddh,di+2 adddl,di+3 cmpdl,2jeAleft movah,2int10hmovah,8int10hcmpal,40hjeAexitx2 cmpal,02ahjeAexitx2 jmpAexitx3 Aexitx2: decAcount0 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - -