模拟“霓虹灯”汇编语言程序设计

合集下载

霓虹灯模拟显示课程设计

霓虹灯模拟显示课程设计

霓虹灯模拟显示课程设计1.设计任务及要求分析本次课程设计要求用汇编语言设计“霓虹灯”模拟显示,需要实现的功能如下:1、按下b/B键,分六笔快速画出矩形及其两条对角线;2、按下y/Y 键,流水灯从左到右依次点亮,然后一次熄灭;3、按下q/Q键,退出程序。

分析本设计不需要硬件设备,在微机原理实验集成环境MF2KP中编写程序,调用DOS命令和BIOS命令,并用合适的字符代替霓虹灯来实现。

1方案论证2.1方案一我们可以采用编写延时子程序的方法来实现延时,这种方法的主要原理是运用计算机相应每一条的时间积累。

程序如下:push bxpush cxmov cx ,xx ;输入正数A1:mov bx,xx ;输入正数A2:dec bxJnz A1Loop A2pop cxpop bx此方案的原理是运用循环指令来进行,主要通过设置cx和bx的值来进行复循环,从而达到时间的积累即延时。

2.2方案二方案二:运用DOS功能调用。

采用21H来中断调用,功能号为AH=2CH,完成的功能是设置时间,DH的值变换一次是0.01秒,这样通过设置DH的值来设置时间的延时。

2.3方案比较两种方案在理论上都是可行的,但是课程设计任务在时间要求上不是很严格只要区分快慢的大概效果既可,故选择方案一。

3设计原理3.1设计思想本次课程设计主要中显示图案是通过显示单个字符逐步实现的,通过移动光标可以改变字符输出的位置,位置的改变又是通过宏定义定义了一个程序段用于改变光标,设计了两个变量分别为光标在屏幕上的行和列坐标,把已经设计好了的图案的行列坐标分别定义在数据段的行列数据组里,用指针自加的方式进行连续调用显示。

在显示中插入延时程序控制显示的效果。

本次课程设计设计了二个延时程序分别满足二种不同的延时需要。

延时程序是通过LOOP循环来实现的,可以改变CX的值来改变延时的长短。

本次课设还涉及到清屏功能,故设计了一个清屏子程序,通过BIOS功能的调用实现清屏,和屏幕属性的设置。

霓虹灯显示程序设计

霓虹灯显示程序设计

霓虹灯显示程序设计………………………………………………………………………………………………..?设计内容简介 (1)霓虹灯显示程序设计 (2)设计任务及要求 (2)设计方案及程序流程图 (2)主程序流程图 (2)汉字显示闪烁子程序 (3)2.2.3 程序结果显示 (6)主要程序段与程序设计 (10)程序中用到的DOS功能调用 (10)程序中用到的BIOS内的中断功能 (10)主要程序段分析.........................................................................11 程序调试说明. (16)调试工具 (16)调试过程 (16)课程设计总结..............................................................................................17 参考文献. (1)8 附录源程序清单与注释 (19)霓虹灯是日常生活中最常见的灯饰,它装点了晚上,丰富了人们的生活。

通过汇编语言,实现霓虹灯的显示与闪烁,可以很方便的达到想要的效果。

汇编语言的INT 10号中断提供了设置显示模式、设置颜色模式、设置光标位置、按指定属性显示字符等功能号,可以显示汉字,同时也提供了初始化屏幕或滚屏等功能号,通过擦除子程序以及清屏子程序的配合运用,从而达到让汉字闪烁的功能。

正确编排汉字组成点的坐标、颜色以及ASCII码值,就可以得到想要显示的汉字,合理运用INT 10号中断的功能号,正确调用擦除子程序和清屏子程序就可以得到想要的闪烁效果。

:霓虹灯中断子程序闪烁显示I汇编语言是计算机提供给用户的最快最有效的语言,也是能过利用计算机所有硬件特性并能直接控制硬件的唯一语言,是操作系统等其它核心课程的必要先修课。

汇编语言的应用有很多,其中,图形文字的显示就是计算机的一项基本应用。

本次课程设计说明书在简单说明课题的硬件设施工作原理后,采用BIOS的 INT 10H 显示功能调用,设置为AH=0,AL=4的320×200彩色图像显示方式,利用AH=12写点功能,通过写ASCII 码,来组成文字,其中ASCII码的位置可由行数与列数的二维坐标确定,从定义的区域内开始,行向下自增1,列向右自减1,逐列写ASCII码。

霓虹灯显示程序设计

霓虹灯显示程序设计

引言我们知道汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言,汇编语言对于硬件的控制具有独特的优势。

一方面,汇编语言指令是用一些具有相应含义的助忆符来表达的,所以,它要比机器语言容易掌握和运用,但另一方面,它要直接使用CPU的资源,相对高级程序设计语言来说,它又显得难掌握。

霓虹灯是日常生活中常见的灯饰,它装点了夜空,丰富了人们的生活,让夜间的城市更加美丽。

通过汇编语言的学习,我们通过汇编语言,可实现霓虹灯的控制与操作,实现其显示与闪烁,或者是其他的动态变化,从而可以很方便的达到理想效果。

INT 10H 是由BIOS 对屏幕及显示器所提供的服务程序,汇编语言的INT 10号中断提供了设置显示模式、设置颜色模式、设置光标位置、按指定属性显示字符等功能,可以显示汉字或图像,同时也提供了初始化屏幕或滚屏等功能号,通过擦除子程序以及清屏子程序的配合运用,可以达到让汉字或图像闪烁或运动的功能。

而文字的显示我们又可以通过取模软件轻松获得,这使得整个编译过程轻松了很多,同时可以让文字或图标的显示更加规范和多样化,达到霓虹灯多样变化的目的。

本次课程设计,研究的正是霓虹灯显示程序设计,我们可通过对INT 10号中断的功能调用实现,设计出我们想要的霓虹灯显示效果。

在整个设计过程,我们可以加强对课本知识的巩固,并借此拓展自己的知识面。

关键词:汇编语言霓虹灯中断字符运行调试1设计要求及分析1.1设计要求1)用汇编语言编写一个霓虹灯的模拟显示程序;2)在屏幕上显示你的中文名字或其它文字,按某种规律闪烁变化,按“q”键退出;3)撰写课程设计说明书。

内容包括:摘要、目录、正文、参考文献、附录(程序清单)。

正文部分包括:设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等)、程序调试说明和结果分析、课程设计收获及心得体会。

1.2设计分析分析任务书要求可知:本次程序设计尽量在屏幕上显示自己的名字,也可以显示其他的文字。

微机原理与接口技术霓虹灯程序设计

微机原理与接口技术霓虹灯程序设计

微机原理实验报告课题名:霓虹灯设计班级:学号: _姓名:指导教师:目录实验目的 (3)实验要求 (3)实验原理 (3)实验内容 (3)程序代码 (4)程序及硬件系统调试情况 (9)设计总结与体会 (9)➢实验目的在熟悉8086/8088指令系统的基础上,掌握8086/8088汇编语言程序设计方法;掌握8259可编程中断控制器,8255可编程并行接口的应用。

➢实验要求模拟霓虹灯(实验箱中的发光二极管)交替变换的过程。

用8255设计霓虹灯,三种以上变化:设计程序控制8个并排LED灯霓虹灯至少4种不同的状态的变换,选择8255的任一数据端口连接发光二极管模拟。

运行过程中可随时中断退出。

➢实验原理可通过DVCC8086单板机上的8255芯片来实现,利用8255A中的PC口,将其8位输出PC7~PC0分别与8个LED灯L1~L8相连,当PC口其中某位输出为“0”时,则对应LED灯亮。

通过编程先对8255进行初始化,选择控制字,设置PC口为输出方式,然后给8088CPU中的AH赋值0EFH,采用循环移位指令对AH中的数值0EFH进行移位,最后将移位后的数据输到PC口,从而使8个LED灯按要求依次逐一点亮。

其他变化原理类似。

➢实验内容✧八个灯半亮,半灭;✧依次从左向右亮,从右向左亮,循环三次;✧两边往中间,中间往两边亮,循环三次;✧单数灯依次从左向右亮,双数灯依次从右往左亮,循环三次。

➢流程图➢程序代码STACK SEGMENT STACK.DW64 DUP(?)stack endsCODE SEGMENTASSUME CS:CODE,SS:STACKSTART:CLIMOV BX,0010HMOV AL,80HOUT 63H,ALPUSH DSMOV AX,0000HMOV DS,AXMOV AX,OFFSET IRQ1ADD AX,2000HMOV SI,0024HMOV [SI],AXMOV AX,0000HMOV SI,0026HMOV [SI],AXMOV AX,OFFSET IRQ5ADD AX,2000HMOV SI,0034HMOV [SI],AXMOV AX,0000HMOV SI,0036HMOV [SI],AXPOP DSIN AL,21HAND AL,0DDHOUT 21H,ALMOV AL,0FFHOUT 61H,ALa10:STICMP BX,0000HJZ A11JMP A10a11:STIMOV CX,3.A1: MOV AL,80H ;半亮,半灭OUT 63H,ALMOV AL,00HOUT 61H,ALCALL DALLY1MOV AL,0FFHOUT 61H,ALCALL DALLY1MOV AL,80HOUT 63H,ALMOV AL,0F0HOUT 61H,ALCALL DALLY1MOV AL,80HOUT 63H,ALMOV AL,0FFHOUT 61H,ALCALL DALLY1MOV AL,0FHOUT 61H,ALCALL DALLY2LOOP A1MOV CX,3A2: MOV AL,07EH ;两边往中间,中间往两边OUT 61H,ALCALL DALLY1MOV AL,0BDHOUT 61H,ALCALL DALLY1MOV AL,0DBHOUT 61H,ALCALL DALLY1MOV AL,0E7HOUT 61H,ALCALL DALLY1MOV AL,0E7HOUT 61H,ALCALL DALLY1MOV AL,0DBHOUT 61H,ALCALL DALLY1MOV AL,0BDHOUT 61H,ALMOV AL,07EHOUT 61H,ALCALL DALLY2LOOP A2MOV CX,2A3: MOV AL,07FH ;依次亮,左右OUT 61H,ALCALL DALLY1MOV AL,0BFHOUT 61H,ALCALL DALLY1MOV AL,0DFHOUT 61H,ALCALL DALLY1MOV AL,0EFHOUT 61H,ALCALL DALLY1MOV AL,0F7HOUT 61H,ALCALL DALLY1MOV AL,0FBHOUT 61H,ALCALL DALLY1MOV AL,0FDHOUT 61H,ALCALL DALLY1MOV AL,0FEHOUT 61H,ALCALL DALLY1MOV AL,0FEHOUT 61H,ALCALL DALLY1MOV AL,0FDHOUT 61H,ALCALL DALLY1MOV AL,0FBHOUT 61H,ALCALL DALLY1MOV AL,0F7HOUT 61H,ALCALL DALLY1MOV AL,0EFHCALL DALLY1MOV AL,0DFHOUT 61H,ALCALL DALLY1MOV AL,0BFHOUT 61H,ALCALL DALLY1MOV AL,07FHOUT 61H,ALCALL DALLY2LOOP A3MOV cx,3A4: MOV AL,07FH ;单数依次从左向右亮,双数依次从右向左亮OUT 61H,ALCALL DALLY1MOV AL,0DFHOUT 61H,ALCALL DALLY1MOV AL,0F7HOUT 61H,ALCALL DALLY1MOV AL,0FDHOUT 61H,ALCALL DALLY1MOV AL,0FEHOUT 61H,ALCALL DALLY1MOV AL,0FBHOUT 61H,ALCALL DALLY1MOV AL,0EFHOUT 61H,ALCALL DALLY1MOV AL,0BFHOUT 61H,ALCALL DALLY2LOOP A4MOV AL,0FAHOUT 61H,ALCALL DALLY2LOOP A4.MOV CX,3JCXZ A12JMP A11a12:INT 21Hirq1:MOV AL,0FFHOUT 61H,ALMOV AL,20HOUT 20H,ALHLTIRETirq5:MOV BX,0000HMOV AL,20HIRETDALLY1 PROCPUSH AXPUSH CXMOV CX,0040HB1: MOV AX,0200HB2: DEC AXJNZ B2LOOP BPOP AXRETDALLY1 ENDPDALLY2 PROCPUSH AXPUSH CXMOV CX,0200HB3: MOV AX,0200HB4: DEC AXJNZ B4LOOP B3POP CXPOP AXRETDALLY2 ENDPCODE ENDSEND START.➢程序及硬件系统调试情况在Wmd86调试软件里面打开程序,首先编译改程序,此时会弹出一个编译出错对话框,按提示的出错行数对应进行修改,修改完后再编译—汇编—链接。

汇编语言课程设计

汇编语言课程设计

沈阳大学2.3 MASM的介绍MASM是微软公司开发的汇编开发环境,拥有可视化的开发界面,使开发人员不必再使用DOS环境进行汇编的开发,编译速度快,支持80x86汇编以及Win32Asm是Windows下开发汇编的利器。

它与windows平台的磨合程度非常好,但是在其他平台上就有所限制,使用MASM的开发人员必须在windows下进行开发,历经二三十年的发展,目前MASM的版本已升至6.15,支持MMX Pentium、Pentium II、Pentium III及Pentium 4等指令系统。

2.4总体设计功能本次课程设计的内容是采用汇编语言设计一个运行于计算机的“霓虹灯”的模拟显示程序,由$及*字符相间,从两侧向中间螺旋汇聚直至形成一个矩形,这就要求该霓虹灯能够动态地进行变化;霓虹灯模拟显示程序主要是进行程序循环调用,可以通过CMP、JMP、JZ、RET等命令进行跳转。

由于是霓虹灯的模拟显示,因此在进行程序循环调用前需要进行数据段定义,以使子程序在进行调用时能够根据数据段的定义来执行,最后显示结果。

定时器中断处理程序:计数器中断的次数记录在计数单元count中,由于定时中断的引发速率是每秒18.2次,即计数一次为55ms,当count计数值为18时,sec计数单元加一(为1秒)。

视频显示程序设计:一般由DOS 或BIOS调用来完成。

有关显示输出的DOS功能调用不多,而BIOS调用的功能很强,主要包括设置显示方式、光标大小和位置、设置调色板号、显示字符、显示图形等。

用INT 10H中断即可建立某种显示方式。

用DOS功能调用显示技术,把系统功能调用号送至AH,把程序段规定的入口参数,送至指定的寄存器,然后由中断指令INT 21H来实现调用。

键盘扫描程序设计:利用DOS系统功能调用的01号功能,接受从键盘输入的字符到AL寄存器,以及检测键盘状态,有无输入,并检测输入各值。

2.5详细功能设计2.5.1主程序功能主程序通过调用各个子程序来实现清屏,改变图形等功能,具体调用过程如图1所示。

汇编语言霓虹灯字符显示

汇编语言霓虹灯字符显示

信息工程学院《汇编语言程序设计》课程设计设计题目:霓虹灯的字符显示年级专业:组长:小组成员:指导教师:完成日期:霓虹灯的字符显示【摘要】:五光十色的霓虹灯对于我们并不陌生,但却从不知道是如何被设计和应用的,通过本学期学习的汇编语言,我组在本次课程设计中便尝试设计模拟霓虹灯显示,所以,设计内容是采用本学期所学的8086汇编语言设计一个运行于计算机的“霓虹灯”的模拟显示程序。

霓虹灯的主题为英文单词“HELLO”,在白色单词的基础上,红色不断的在每个英文字母上循环闪烁。

并且,键盘数字键“1”和“2”均可控制不同的闪烁方式,按键“ESC”可控制退出程序运行。

这就要求了该霓虹灯能够动态的进行变化,最后,按键“esc”退出,以免程序一直运行导致电脑死机。

该霓虹灯模拟显示程序主要是进行程序的循环、子程序的调用,来完成这一动态变化效果。

【Abstract】Colorful neon no stranger to us, but they never know how the design and application, through the semester to learn assembly language, I team during the course design, the design will try to simulate neon display, so the design content is learned this semester using 8086 assembly language running on the computer to design a "neon" analog display program. Neon theme for the English word "HELLO", in white the word, based on constantly in the red letters on each cycle of flicker. Also, the keyboard number keys "1" and "2" can be controlled flashes of different ways, the key "ESC" to control exit program is running. This requires that the neon can be changed dynamically, and finally, the key "esc" to exit, so as not to cause the computer to crash the program has been run. The neon analog display program is primarily one of the program cycle, a subroutine call, to complete this dynamic effect.关键词:霓虹灯;汇编语言;子程序;循环目录1 设计内容与要求..................................................... - 1 -1.1 设计要求.............................................................................................................. - 1 -1.2 实现的主要功能.................................................................................................. - 1 -2 需求分析........................................................... - 2 -2.1 子程序的设计...................................................................................................... - 2 -2.2 循环体的设计...................................................................................................... - 2 -3 总体流程图设计..................................................... - 5 -3.1 总体流程图.......................................................................................................... - 5 -3.2调用各程序流程图.................................................................................... - 6 -图3-2为部分个程序调用流程图.......................................... - 6 -4 算法中涉及的知识点................................................. - 7 -5 设计用的计算机环境................................................. - 8 -6 运行效果图......................................................... - 9 -7 源代码............................................................ - 10 -结论................................................................. - 13 -参考文献.......................................................... - 14 -致谢............................................................. - 15 -1 设计内容与要求1.1 设计要求在经过一个学期8086汇编语言的学习与上机练习之后,要求本次课程设计的内容为:设计一个在计算机上的“霓虹灯”的模拟显示程序。

PLC霓虹灯闪烁控制系统设计

PLC霓虹灯闪烁控制系统设计

PLC霓虹灯闪烁控制系统设计PLC(可编程逻辑控制器)是一种用于控制工业自动化系统的计算机控制系统,可以通过编程来控制各种设备和机器。

在工业生产中,PLC控制系统通常用于控制生产线上的各种设备和机器,以实现自动化生产。

在本文中,我们将设计一个基于PLC的霓虹灯闪烁控制系统,用于展示PLC 在工业控制中的应用。

系统概述本系统的设计目的是通过PLC来控制一组霓虹灯进行闪烁显示。

用户可以通过PLC编程来控制灯的亮灭状态和闪烁频率,从而实现不同的显示效果。

系统主要由PLC、霓虹灯、电源和控制面板组成。

系统结构PLC作为系统的核心控制器,接收用户输入的指令并通过输出信号来控制霓虹灯的亮灭状态和闪烁频率。

霓虹灯通过接入PLC的数字输出端口来进行控制,电源提供系统所需的电力支持,控制面板用于用户操作与交互。

系统设计1.PLC选型:选择一款适合该应用场景的PLC控制器,如西门子、三菱等品牌的PLC。

PLC需要支持足够的输入输出端口以满足系统的需求。

2.硬件连接:将霓虹灯连接到PLC的数字输出端口,并接入电源。

控制面板通过线缆连接到PLC,用于用户输入指令。

3.软件编程:使用PLC编程软件进行程序的编写。

根据系统设计要求,编写控制程序实现灯的闪烁效果。

程序需要包括控制霓虹灯亮灭的逻辑和闪烁频率的控制。

4.测试调试:完成程序编写后,进行系统的测试与调试。

通过PLC仿真软件或实际硬件测试系统的功能是否符合设计要求。

5.系统优化:根据测试结果进行系统优化。

若系统功能不完善或存在问题,需要对程序进行修改并重新测试。

系统应用该系统可以应用于各种需要灯光显示的场景,如工业生产线上的指示灯、交通信号灯等。

通过PLC控制系统,可以实现远程控制和自动化管理,提高生产效率和可靠性。

总结本文设计了一个基于PLC的霓虹灯闪烁控制系统,通过PLC控制器实现了灯的亮灭和闪烁功能。

该系统可以广泛应用于工业生产中的各种场景,提高了生产的自动化水平和效率。

计算机霓虹灯模拟显示软件设计

计算机霓虹灯模拟显示软件设计

课程设计任务书学生姓名:专业班级:指导教师:工作单位:题目: 计算机霓虹灯模拟显示软件设计初始条件:1.用于调试程序的IBM兼容PC机一台;2.安装DOS/WIN98操作系统或运行于DOS/ WIN98兼容方式;3.EDIT 等文本编辑器输入80x86汇编程序,MASM 5.0编译及链接程序。

要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.使用汇编语言设计一个运行于计算机的霓虹灯模拟显示软件,软件应实现模拟显示霓虹灯,要求至少有一种动态显示效果。

可以附加显示其它信息和添加多种动态显示效果。

2.说明书撰写格式应符合《课程设计说明书统一书写格式》。

时间安排:1.程序框图设计,3天2.编程,4天3.调试,3天4.编写设计报告,4天指导教师签名:年月日系主任(或责任教师)签名:年月日摘要霓虹灯是日常生活中常见的灯饰,它装点了夜空,丰富了人们的生活。

通过汇编语言的学习,可实现霓虹灯的控制与操作,实现其显示与闪烁,或者是其他的动态变化,从而可以很方便的达到理想效果。

本设计通过对字符进行坐标形式的定义再调用BIOS使之顺序显示,通过擦除子程序以及清屏子程序的配合运用,可以达到让汉字或图像闪烁或运动的功能。

最后通过按键‘Q/q’来实现程序的结束。

关键字:霓虹灯汇编语言子程序目录1设计任务原理及方案认证 (1)1.1设计任务 (1)1.2设计原理分析 (1)1.3方案比较及认证 (1)2程序流程图 (2)2.1主程序流程图 (2)2.2 子程序流程图 (3)2.2.1字符显示程序结构流程图 (3)2.2.2清屏程序结构流程图 (4)3主要程序段与程序设计分析 (6)3.1程序中用到的BIOS内的中断功能 (6)3.2程序中用到的DOS功能调用 (7)3.3主要程序段与程序设计分析 (8)3.3.1数据段程序 (8)3.3.2写点程序段 (8)3.3.3 输入Q、q退出程序 (10)3.3.4 竖形条纹的显示程序 (11)3.3.5条纹清屏与文字闪烁功能程序 (12)3.3.6延迟功能程序 (13)4程序调试 (14)4.1.调试工具 (14)4.2.调试过程与结果分析 (14)5 心得体会 (15)参考文献 (16)附录一源程序和程序注释 (17)本科生课程设计成绩评定表................................... 错误!未定义书签。

汇编语言课程设计模版

汇编语言课程设计模版

汇编语⾔课程设计模版中⽂摘要中⽂摘要本次设计主要完成了霓虹灯的显⽰界⾯⼤⼩、霓虹灯的颜⾊及代表霓虹灯的字符(@、*)的运动情况和霓虹灯的界⾯显⽰。

关键字:霓虹灯汇编语⾔程序设计主流程图和⼦流程图的设计I⽬录⽬录中⽂摘要 .............................................................................................I 第⼀章霓虹灯内容和功能 ................................ 错误!未定义书签。

第⼆章霓虹灯设计. (1)第⼀节霓虹灯设计思路、模块划分 .............................. 错误!未定义书签。

第⼆节霓虹灯主流程图 (2)第三节霓虹灯⼦流程图 .................................................. 错误!未定义书签。

第四节霓虹灯界⾯显⽰ (6)第五节霓虹灯程序源代码及注释 (7)第三章总结 (12)致谢 (13)参考⽂献 (14)II第⼀章霓虹灯内容和功能第⼀章霓虹灯内容和功能◆内容⼀、设置霓虹灯的显⽰界⾯⼤⼩(15⾏77列字符)屏幕⼤⼩(24⾏79列)⼆、设置控制霓虹灯字符的颜⾊三、“霓虹灯”的模拟显⽰步骤1、显⽰霓虹灯的上横杠@(从左到右);2、显⽰霓虹灯的下横杠@ (从右到左);3、显⽰霓虹灯的左横杠*@;4、显⽰霓虹灯的右横杠@*;5、字符(@*)分别从左右两边进⼊向中间移动,然后⼀起从中间向左右运动并且变换颜⾊;6、整个的模拟图形显⽰出来◆功能:霓虹灯模拟显⽰图形并且变换颜⾊第⼆章霓虹灯设计第⼀节霓虹灯设计思路、模块划分⼀、霓虹灯设计思路:写出主程序,根据主程序调⽤⼦程序完成霓虹灯显⽰。

⼆、霓虹灯课程设计的模块划分:主程序:设置寄存器的内容,调⽤⼦程序设置屏幕⼤⼩、屏幕显⽰的颜⾊和字符的运动情况。

8086汇编语言-模拟交通灯_实验报告

8086汇编语言-模拟交通灯_实验报告

计算机接口技术实验模拟交通灯控制一、实验目的:综合运用接口芯片,提高实践能力。

二、实验设备:TDN86/51教学实验系统一台。

三、实验要求:自行设计实验电路,独立编写程序,实现模拟交通灯控制系统。

模拟交通灯有三个状态往复循环:1、初始时,东西方向的绿灯亮,同时,南北方向及人行道上的红灯全亮。

持续5S。

2、然后,南北方向的绿灯亮,同时,东西方向及人行道上的红灯全亮。

持续8S。

3、最后,人行道方向的绿灯亮,同时,东西方向及南北的红灯全亮。

持续6S。

四、实验步骤:1. 系统分析:根据TDN86/51教学实验系统中的LED单元进行的约定如下:状态1时LED单元的状态如下:即1000 0111B=87H状态2时LED单元的状态如下:2即0100 1011B=4BH状态1时LED单元的状态如下:即0011 1100B=D3H电路连接如下图:2. 芯片工作状态分析:8253:芯片端口地址:40H~43H。

工作在方式0,0号计数器,工作方式命令字:30H。

CLK0为1.19MHZ,故最大计数时间为:65536/(1.19x106) =55ms。

可令其产生50ms定时,计数初值约为:0.05x1.19x106=59500。

从而,5s定时外循环次数为100次,8s定时外循环次数为160次,6s定时外循环次数为120次。

8259:芯片端口地址:20H、21H实验IRQ0中断,初始化时需要开IRQ0中断。

8255:芯片端口地址:60H~63HA口工作在方式0状态,输出,工作方式控制字:80H。

3. 程序流程图:主程序流程图:IRQ0中断服务程序流程图:五、实验程序源代码:STACK SEGMENT STACKDW 64 DUP (?)STACK ENDSCODE SEGMENTASSUME CS:CODESTART:CLI ;关中断,开始填0中断矢量PUSH DSMOV AX,00H ;填偏移量MOV DS,AXMOV AX,OFFSET IRQ0ADD AX,2000HMOV SI,20HMOV [SI],AXMOV AX,00H ;填CS段基址MOV SI,22HMOV [SI],AXPOP DSIN AL,21H ;读8259中断屏蔽字AND AL,0FEH ;开中断0OUT 21H,ALMOV AL,80H ;初始化8255OUT 63H,ALMOV AL,30H ;初始化8253OUT 43H,ALMOV AL,0FFH ;循环前把所有的灯关闭OUT 60H,ALA0:MOV CX,100 ;开始进入1状态,CX初值为100A1:MOV AX,59500 ;8253载入初值OUT 40H,ALMOV AL,AHOUT 40H,ALMOV AL,87H ;状态1的数据存入AL,等待输出STI ;开中断HLT ;停机等待中断LOOP A1 ;根据CX的值循环本状态MOV CX,160 ;开始进入2状态,CX初值为160A2:MOV AX,59500 ;8253载入初值OUT 40H,ALMOV AL,AHOUT 40H,ALMOV AL,4BH ;状态2的数据存入AL,等待输出STIHLTLOOP A2MOV CX,120 ;开始进入3状态,CX初值为120 A3:MOV AX,59500OUT 40H,ALMOV AL,AHOUT 40H,ALSTIHLTLOOP A3JMP A0IRQ0: ;中断服务程序OUT 60H,AL ;输出AL数据到8255,改变灯状态MOV AL,20H ;发EOIOUT 20H,ALIRET ;中断返回CODE ENDSEND START。

霓虹灯显示程序设计详解

霓虹灯显示程序设计详解

要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.用汇编语言编写一个霓虹灯的模拟显示程序;2.在屏幕上动态显示”新年快乐”,按蓝—绿—黄---红---白闪烁变化,按“q”键退出;时间安排:1月3 日----- 1 月5 日查阅资料及方案设计1月5 日----- 1 月7 日编程1月7 日----- 1 月9 日调试程序1月9 日----- 1 月10 日撰写课程设计报告指导教师签名:年月日系主任(或责任教师)签名:年月日目录1设计内容及要求 (1)2程序原理分析 (2)3主程序流程图 (3)4 程序主要模块功能分析 (4)4.1名字显示功能模块 (4)4.1.1 vga简介 (4)4.1.2 256色调色板 (4)4.1.3 视频显示模式设置 (4)4.3 文字显示 (6)4.4 清屏子程序 (8)4.5文字动画效果 (8)5程序调试 (10)6课程设计总结 (11)参考文献 (12)附录源程序代码 (13)1设计内容及要求要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.用汇编语言编写一个霓虹灯的模拟显示程序;2.在屏幕上显示你的中文名字或其它文字,按某种规律闪烁变化,按“q”键退出;3.撰写课程设计说明书。

内容包括:摘要、目录、正文、参考文献、附录(程序清单)。

正文部分包括:设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等)、程序调试说明和结果分析、课程设计收获及心得体会。

2程序原理分析采用系统提供的BIOS功能调用中的int 10h显示功能,定义AH=0,AL=13将屏幕输出设置为320X200,256色图形方式。

利用AH=12些点功能,通过写ASCII码,来组成文字,其中ASCII码的位置可由行数和列数的二维坐标确定,由定义的区域内开始,行向下自增1,列向右自增1,逐列写ASCII码,然后编写程序段实现内存地址与屏幕坐标之间的联系。

汇编语言小霓虹灯代码

汇编语言小霓虹灯代码

ess segmentx db'a'BUFF DB'H',15,'e',15,'l',15,'l',15,'o',15,'$' ess endsstack segmentdb20dup(?)stack endsDATA segmentKBEsc EQU1BHdata endsCODE segmentassume ds:data,es:ess,ss:stackmov ax,datamov ds,axmov es,axmov ss,axstart:;.STARTUPCALL Clearmov si,9;again11:;mov BUFF[si],15;mov si,1;jmp again1;again22:;mov BUFF[si],15;MOV SI,9;jmp again2again1:MOV BUFF[si],15;把前一次的红色还原ADD SI,2.IF SI>9MOV SI,1.ENDIFmov bx,sijmp showagain2:mov BUFF[si],15sub si,2.if si<1mov si,9.ENDIF.if si==-1mov si,9.ENDIFmov bx,sijmp show;MOV BUFF[bx],4;把当前字符以红色显示show:MOV BH,0MOV CX,5MOV DH,5MOV DL,20;显示位置从(5,20)开始mov BP,seg BUFFmov es,bpmov bp,offset BUFFmov BUFF[bx],12;lea bp,BUFFMOV AL,2MOV AH,13HINT10H;调用中断10H之功能13Hmov ah,07hint21hcmp al,'1'je again1cmp al,'2'je again2CMP AL,KBEsc;若按键不是Escape,则继续循环je exitjmp again1Clear PROC Near Uses AX BX CX DX;清屏幕,并保护所用寄存器MOV CL,0MOV CH,0MOV DL,79MOV DH,24;(0,0)-(24,79)是屏幕的左上角和右下角MOV BH,7MOV AL,0MOV AH,6INT10HRETClear ENDPexit:mov ah,4chint21hcode endsend start。

霓虹灯的PLC程序设计_循环彩灯设计论文

霓虹灯的PLC程序设计_循环彩灯设计论文

霓虹灯的PLC程序设计_循环彩灯设计论文山西职业技术学院毕业论文霓虹灯的PLC程序设计所在院(系): 电气工程与自动化学生姓名 : 靳晓斌班级 : 机电A1102班学号: 1012110239指导教师 : 胡颖山西职业技术学院摘要随着社会主义市场经济的繁荣和发展~各大中小城市都在进行亮化工程。

各企业为宣传自己企业的形象和产品~常用霓虹灯广告来实现这一目的。

霓虹灯的亮灭、闪烁时间及流动方向等均可以通过PLC来进行控制。

使用PLC控制霓虹灯~具有使用方便、运行可靠、控制程序设计简单等优点。

关键字:PLC,霓虹灯,梯形图程序目录引言 ......................................................................1 1、PLC的简介 (1)1.1 PLC的产生和定义 (1)1 1.2 PLC的发展和应用 ...................................................1. 3 PLC的特点1.4 PLC的工作原理 (2)1.4.1 读取输入 .....................................................31.4.2 执行用户程序 .................................................31.4.3 通信处理 .....................................................41.4.4 CPU自诊断测试 ...............................................41.4.5 改写输出 .....................................................41.4.6 中断程序的处理 ...............................................41.4.7 立即I/O处理 .................................................51.4.8 输入/输出滞后时间 ............................................5 2、霓虹灯的设计要求 (5)2.1霓虹灯控制的几种要求 ............................................... 6 3、霓虹灯的设计方案 (6)3.1 PLC的型号选择 (6)3.2霓虹灯的I/O地址分配 (7)3.3霓虹灯的梯形图程序设计 (8)3.4霓虹灯闪烁的流程图 (12)3.5霓虹灯的I/O接线图 ................................................ 13 4、模拟调试 .............................................................. 13 5、设计总结 ..............................................................14 致谢 .....................................................................14 参考文献 (14)霓虹灯的PLC程序设计山西职业技术学院2011届毕业设计引言随着社会主义市场经济的不断繁荣和发展,各大中小城市都在进行亮化工程。

微机课设—霓虹灯”的模拟显示程序设计—包刚

微机课设—霓虹灯”的模拟显示程序设计—包刚

目录1.设计意义与要求 (1)1.1设计意义 (1)1.2设计要求 (1)2方案论证 (2)2.1方案比较 (2)2.2方案选择 (2)3系统原理阐述 (2)3.1设计思路 (2)3.2程序中的BIOS和DOS功能调用 (3)3.2.1 BIOS功能调用 (3)3.2.2 DOS功能调用 (3)3.3.程序模块 (4)4.软件思想与流程图 (5)4.1程序功能描述 (5)4.2 流程图 (6)5.调试记录及结果分析 (7)5.1 调试过程 (7)5.2结果记录 (7)5.3调试中出现的问题及解决方法 (9)6.心得体会 (10)7.参考文献 (11)8.附录源程序清单 (12)“霓虹灯”的模拟显示程序设计1.设计意义与要求1.1设计意义通过课程设计,能够对所学知识有更进一步的理解,并能掌握学习理论时没有注意的细节。

调试程序,排除故障有助于提高分析问题、解决问题的能力。

课程设计中碰到的挫折,有助于养成良好的学习习惯、严谨的工作作风。

通过此课程设计的汇编语言练习,可以熟悉汇编语言的寻址方式和指令系统,BIOS 和DOS系统功能调用,程序设计方法并熟悉汇编的编程环境。

1.2设计要求设计内容:采用汇编语言设计一个在屏幕中央以#字符显示一矩形,并以&将矩型内部由下到上,从中央到两边填满;然后再按相反的次序消失的程序。

按Q退出程序设计要求:(1)设计任务及要求分析(2)方案比较及认证说明(3)系统原理阐述(4)软件设计课题需要说明:软件思想,流程图,源程序及程序注释(5)调试记录及结果分析(6)总结(7)参考资料(8)附录:芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物图2方案论证2.1方案比较在设计过程中字符的显示有2中不同的方式。

方案一:运用DOS功能的2号调用,程序的设计如下MA ROW,COLUME ;MA是个宏定义光标位置MOV AH,02HMOV DL,’#’INT 21H在本程序中,显示方式很简洁很直观很容易记忆理解。

汇编实现交通灯控制模拟程序设计

汇编实现交通灯控制模拟程序设计

使用方法:使用win-masm运行后,首先输入个任意的两位数表示红灯亮的时间如05或99,然后输入个其他任意字符来作为分隔,接着输入个任意的小于红灯的两位数表示红灯亮的时间如03或98等等来表示黄灯亮的时间,绿灯亮的时间为红灯的时间减去黄灯的时间。

输入后开始工作。

当输入9时进入手动控制状态,接着可分别输入1,2,3,4,5,6,来点亮各方向的灯,输入a,b,c,d,e,f分别灭各方向灯。

输入7时返回自动控制状态。

当输入0时,则进入夜间状态,黄灯开始闪烁。

当输入8时进入紧急状态,个方向红灯亮起。

后两个状态没有做返回到自动控制的功能。

STACK SEGMENT STACKDW 64 DUP(0)STACK ENDSDA TA SEGMENTSTRING0 DB 13,10,3 DUP(9,20H),6 DUP(20H),'+',12 DUP(20H),'+$'STRING1 DB 13,10,3 DUP(9,20H),'======= *** =======$' ;上面一行STRING2 DB 13,10,3 DUP(9,20H),6 DUP(20H),'*',12 DUP(20H),'*$';一个制表等于7个空格STRING3 DB 13,10,3 DUP(9,20H),'======= * * * *** =======$' ;下面一行STRTIME DB 13,10,4 DUP(9,20H),'TIME: S$';显示时间的格式STRSHOW DB 13,10,2 DUP(9,20H),'SHOW TIME:$'STRRED DB 13,10,2 DUP(9,20H),'RED LIGHT(S),YELLOW LIGHT(S):$'STRBLUE DB 13,10,2 DUP(9,20H),'BLUE LIGHT(S)=RED LIGHT(S)-YELLOW LIGHT(S)$'RED DB 35H,30H ;红灯亮的时间BLUE DB 33H,30H ;绿灯亮的时间YELLOW DB 32H,30H ;黄灯亮的时间SA VE DB 35H,30H,?,32H,30H ;初始红,黄两种灯亮的时间COLOUR_CHANGE DB 01H;COLOUR_CHANGE为1时,表示南北红灯亮。

闪烁灯仿真 原理图与程序(汇编+C语言)

闪烁灯仿真 原理图与程序(汇编+C语言)

1闪烁灯仿真(入门级实验)实验介绍:这个实验应该是单片机相关课程的第一个实验,该实验电路简单,学生易于理解。

直接通过单片机的I/O 引脚控制单个LED 灯就可以实现实验效果。

实验控制程序简单,只涉及单片机I/O 引脚的电平的控制,属于单片机编程初学者入门级实验。

学生学习该实验一方面可以了解单片机的基本功能,当学生点亮了LED 灯时,可以在一定程度上可以激发学生的学习兴趣。

另一方面可以为后续的流水灯实验、数码管实验等简单的单片机输出控制实验打好基础。

实验目的:单个闪烁灯实验的主要目的是使学生了解单片机I/O 口的输出功能。

熟悉单片机程序的编写以及下载过程。

熟悉汇编语言子程序以及C 语言子函数的调用方法。

仿真原理图:通过开发板、电子元件或者仿真软件搭建电路图如下图所示。

实验注意事项:1.注意所用“灯”的极性。

在实验室实验或仿真软件仿真时,一般情况下使用发光二级作为输出设备。

因此在连接电路的时候,一定注意极性否则无法点亮。

2.在进行实物实验时,还要根据单片机引脚的特点,进行LED小灯的驱动电路的连接。

由于单片机引脚的灌电流能力比拉电流能力强,因此建议将LED 小灯的负极连接至单片机引脚,如上图所示。

3.在仿真软件Proteus中绘制仿真原理图如上图所示。

LED串联的电阻R2不可过大,如果过大,它上面分压过多,LED将无法被点亮。

根据上述电路图,编写控制程序如下:汇编语言代码:ORG 0HJMP MAINORG 30HMAIN:CLR P2.0CALL DELAYSETB P2.0CALL DELAYJMP MAINDELAY:MOV R2,#20X2:MOV R3,#20X1:MOV R4,#250DJNZ R4,$DJNZ R3,X1DJNZ R2,X2RETENDC语言代码:#include <reg52.h>#include <intrins.h>sbit P20=P2^0;delay(){ unsigned int i,j;for(i=0;i<100;i++)for(j=0;j<1000;j++)_nop_;}main(){while (1)2{P20=1;delay();P20=0;delay();}}在编写程序时注意,要掌握好延时程序(汇编语言中的DELAY子程序以及C语言中的delay()子函数)的延时长度。

微机课设霓虹灯显示程序

微机课设霓虹灯显示程序

课程设计题目霓虹灯显示程序设计学院自动化学院专业自动化卓越工程师班级自动化ZY1402姓名潘江宝指导教师李道远2016 年12 月 2 日课程设计任务书学生姓名:潘江宝 _ 专业班级:自动化ZY1402指导教师:李道远工作单位:自动化学院题目: 显示姓名字样的程序初始条件:编写显示“自己姓名”字样的程序,每隔1秒钟变一次颜色(变三次)。

按Q退出程序。

要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1)设计任务及要求分析(2)方案比较及认证说明(3)系统原理阐述(4)硬件设计课题需要说明:硬件原理,电路图,采用器件的功能说明(5)软件设计课题需要说明:软件思想,流程图,源程序及程序注释(6)调试记录及结果分析(7)总结(8)参考资料(9)附录:芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物图时间安排:11月20日~11月23日:收集资料,方案选择11月23日~11月30日:整体流程,程序细节,调试程序12月1日~12月7日: 课程设计报告撰写12月8日:交报告,程序演示,答辩指导教师签名:年月日系主任(或责任教师)签名:年月日目录摘要 (I)ABSTRACT (II)1设计任务及要求分析 (1)1.1设计任务目的分析 (1)1.2具体要求分析 (1)2方案比较及认证说明 (2)2.1方案设计 (2)2.2方案选择 (2)3 系统原理阐述 (3)4 设计思路及汇编程序 (4)4.1 主程序设计 (4)4.2 子程序yanse1设计 (5)4.3 子程序disp的设计 (5)4.4 子程序delay的设计 (6)4.5 退出程序及中断指令调用 (6)4.6 源程序代码 (7)5调试记录及结果分析 (14)总结 (17)参考文献 (18)摘要随着现代科学技术的发展,计算机的应用越来越广泛,软件技术应用于生活的各个领域。

而软件的开发离不开编程,因此,微机原理与接口技术的应用也更加深入了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计题目模拟“霓虹灯”汇编语言程序设计学院专业班级姓名指导教师2012年1月13日目录摘要 (1)1 设计内容介绍 (2)2 方案论证 (3)3 程序原理分析 (4)3.1程序中的字体属性定义 (4)3.2程序中用到的BIOS内的中断功能 (4)3.3程序中用到的DOS功能调用 (5)4 主要模块与程序设计 (7)4.1程序流程图 (7)4.2文字显示模块 (11)4.3颜色变化模块 (13)4.4竖形条纹显示模块 (13)4.5竖形条纹移动与清屏模块 (14)4.6按ESC退出模块 (15)4.7延迟功能模块 (16)5 程序调试 (18)5.1调试工具 (18)5.2调试过程 (18)5.3结果分析 (18)结束语 (21)参考文献 (22)附录源程序代码 (23)摘要霓虹灯是日常生活中最为常见的灯饰,它装点了晚上,使城市的夜景变得如此的美丽,极大地丰富了人们的生活。

通过汇编语言编写程序,实现模拟霓虹灯的显示与闪烁,可以很方便的打到需要的效果。

汇编语言中的INT 10H号中断提供了设置显示模式,设置颜色模式,设置光标位置,按指定属性显示字符等功能号,可以显示汉字与字母,同时还提供了初始化屏幕和滚动屏幕等功能号,通过擦除子程序以及清屏子程序的配合,从而达到让霓虹灯闪烁的功能。

正确编排文字组成点的坐标,颜色以及ASCII码值,就可以达到需要显示的文字,合理运用INT 10H号中断的功能号,正确调用擦除子程序和清屏子程序就可以达到预期的效果。

关键词:霓虹灯中断子程序显示闪烁1 设计内容介绍汇编语言是用指令的助记符、符号地址、标号等书写程序的语言,实际上是机器语言的一种符号表示,主要特点是可以使用助记符来表示机器指令的操作码和操作数,可以用标号和符号来代替地址、常量和变量。

汇编语言是能够利用计算机所有硬件特性进而直接控制硬件的唯一语言。

汇编语言的使用范围很广,文字显示只是其中很简单的一项。

本次课程设计采用DOS和BIOS功能调用,采用25×80的彩色图像显示方式。

先运用绘图软件生成文字图片文件,再用ASCII Art Studio软件将编辑好的图片文件转换为ASCII字符画,并设定ASCII码的颜色值。

ASCII码对应字符的位置由行数与列数的二维坐标确定。

其中行向上则减,向下则增;列向左则减,向右则增。

在程序的数据定义区定义所要输出的文字的位形图,每行数据段定义组成文字的一个点。

其中包含组成文字的字符、颜色、横坐标、纵坐标。

文字的变色是通过同一个字的不同颜色版本去覆盖当前的版本以及清屏、擦除程序实现的。

文字的闪烁则是通过将颜色属性的八位二进制数的最高位置实现的。

通过比较键盘字符输入ESC来判断是否结束程序。

2 方案论证虽然整个大的程序框架很难构思,但是将程序分割成几个功能模块则可以很轻松的得出。

(1)文字显示可以使用坐标纸写点的方法,或者使用ASCII Art Studio 软件将文字的图片转换成ASCII字符画。

用坐标纸定位每个文字点的坐标工作量非常大,而且很容易算错,运用字符画软件则很轻松的提取文字的字符画格式,方便快捷,易于修改。

(2)在检测退出模块中必须先检测键盘是否有输入,否则当程序运行到这的时候将会暂停等待键盘输入之后才会继续运行,无法实现霓虹灯的闪烁功能。

3 程序原理分析3.1 程序中的字体属性定义本程序采用的是彩色字符显示,在显示彩色文本时,属性字节能够选择前景和背景的颜色。

每个字符可以选择16种颜色中的一种,背景色有8种颜色可以选择。

图3-1是16色文本方式显示的属性字节。

表3-1列出了16色字符方式颜色的组合。

图3-1 16色方式下的属性字节表3-1 16种颜色的组合3.2程序中用到的BIOS内的中断功能(1)02H号功能调用功能:用文本坐标下设置光标位置入口参数:AH=02HBH=显示页码DH=行(Y坐标)DL=列(X坐标)出口参数:无功能:读光标处的字符及其属性入口参数:AH=08HBH=显示页码出口参数:AH=属性AL=字符(3)09H号功能调用功能:在当前光标处按指定属性显示字符入口参数:AH=09HAL=字符BH=显示页码BL=属性(文本模式)或颜色(图形模式) CX=重复输出字符的次数出口参数:无(4)0FH号功能调用功能:读取显示器模式入口参数:AH=0FH出口参数:AH=屏幕字符的列数AL=显示模式BH=页码3.3程序中用到的DOS功能调用(1)01H号功能调用功能:从键盘输入一个字符输入参数:无输出参数:AL=ASCII码功能:检查标准输入设备上是否有字符可读,该输入操作可被重定向输入参数:AH=0BH输出参数:AL=00H——无字符可读;FFH——有字符可读(3)4CH号功能调用功能:返回操作系统4CH调用:MOV AH,4CHINT 21H4 主要模块与程序设计4.1 程序流程图4.1.1 主程序流程图主程序流程图如下:图4-1 主程序流程图4.1.2 子程序流程图本程序显示的文字为英文字母,字母都用不同颜色的版本先写一次,然后竖形条纹扫过,条纹扫过时字母被覆盖,条纹扫过后开始显示颜色变化后的字母,然后条纹再扫过,一直这样循环。

因此,子程序有文字显示子程序、竖形条纹显示子程序、擦除子程序,对应的流程图分别如图4-2、4-3、4-4所示。

文字显示子程序流程图如图4-2所示。

图4-2 文字显示子程序流程图竖形条纹显示子程序流程图如图4-3所示。

图4-3 竖形条纹显示子程序流程图擦除子程序流程图如图4-4所示。

图4-4 擦除子程序流程图4.2 文字显示模块如何使用ASCII码显示文字是这次课程设计的关键之处,为了达到霓虹灯的效果,我采用各种字符组合来组成文字的形状,为了达到更美观的效果,在这里,借助一个字符画转换软件,名字为ASCII Art Studio,该软件是用来创建ASCII字符画的软件,可以像使用画笔一样创建 ASCII 字符画。

转换完成的文字效果如图4-5所示。

图4-5 转换为字符画的文字对应显示屏幕上的每个字符,在存储器中又连续的两个字节表示,一个字节保存ASCII码,另一个字节保存字符的属性。

在屏幕上处理字母、数字以及一些字符图形称为文本方式。

在文本方式下,属性字节对单色显示和彩色显示都是有效的。

在彩色显示器里,如 CGA、EGA、VGA 等,常用一个字节 ( 8 个位 ) 来表示文字颜色和背景颜色,通常以第 0~3 位表示文字本身颜色;第 4~6 位表示背景颜色,背景颜色只有上表左栏的 8 种而已;第 7 个位,表示是否闪烁,0 表示不闪烁,1 表示闪烁。

每个字符由四种属性组成,第一项为字符种类,如61h代表字符“a”,第二项为字符的颜色,如Oah代表绿色,第三项为字符相对于前一个字符的行坐标,第四项为该字符对于上一个字符的列坐标,这样只要定义了第一个字符在屏幕中的位置,那么就能将整个文字显示出来。

例如: A db 147db 'q',04h,0,8db 'N',04h,0,1db 'y',04h,1,-2这段程序是字母A的位形图程序的一部分。

其中'q'为A的第一个点转换为ASCII码的值,在屏幕上会显示q;04h为其颜色属性,且为红色不闪烁;(0,8)为这个点的坐标,第一个为行坐标,第二个为列坐标。

这个点也是字母A组成点的基准坐标,其余点的设置与此点类似。

,向上则行自减1,向下则行自增1,向左则列自减1,向右则列自增1。

每写出一个点后,该点的坐标变回基准坐标(0,0)。

本程序中写点是按照从左到右、从上到下的顺序写的,直至写完所有的点。

显示字母的的过程如下面程序段所示,其中前三句是将字母位型图的地址送给寄存器,dh和dl分别表示字母的起始的第一个点在屏幕上的行列的坐标,call指令用于子程序调用,分别调用move_shape1和 Amust_2子程序,进行读点和写点。

lea di,Amov dh,3mov dl,4call move_shape1call Amust_2在move_shape1子程序中,char_cntl是指字符,pointer1表示颜色,line_on1为行坐标,col_on1为列坐标。

写点的程序在子程序Amust_2,Amust_21中类似,程序段如下:mov cx,char_cnt1mov di,pointer1mov dh,line_on1mov dl,col_on1Aplot_next0:add dh,[di+2]add dl,[di+3]mov ah,2int 10hmov al,[di]mov bl,[di+1]push cxmov cx,1mov ah,09int 10hpop cxadd di,4应当说明的是,程序中 cx寄存器入栈又出栈。

入栈是为了保存cx中的数值,将寄存器cx空出来,作为计数用,随即出栈的目的是重新将已经保存的cx 中的值保存到 cx中,作为循环次数用。

程序中到 int 10h为止都是写点的程序。

add di,4是为写下一个点做准备,直至写完。

4.3 颜色变化模块颜色变化功能实际上就是将文字用其他颜色重新写一遍,因此可实现文字颜色变化,本程序用的是重新定义数据段的方法,将每个字符重新定义,还有一种方法是使用函数,将每个字符代表字符颜色的部分同时加减一个数,便可实现变色功能。

4.4 竖形条纹显示模块数据段中竖形条纹只定义了6个点,为了能够有足够的宽度将汉字覆盖,因此要将db 40h,0ah,1,0与db 02ah,0ceh,-1,0两个点重复写19次,形成够宽的条纹。

主程序中Acount0先定义为了19,写完19个“@”后,Acount0重新赋值19,再将02ah对应的字符“*”写19次,构成完整的竖形条纹。

模块的核心算法程序如下:cmp al,40hje Aexitx0cmp al,02ahje Aexitx0jmp Aexitx1Aexitx0: dec Acount0jne Aplot_nextmov Acount0,194.5 竖形条纹移动与清屏模块在每次写完竖形条纹以后,由dec col_on1实现起始点列坐标的的自减1,从而实现竖形条纹的从右向左移动。

模块的核心程序如下:add dh,[di+2]add dl,[di+3]cmp dl,2je Aleftmov ah,2int 10hmov ah,8int 10hcmp al,40hje Aexitx2cmp al,02ahje Aexitx2jmp Aexitx3Aexitx2: dec Acount0jne Aexitx3mov Acount0,19Aexitx3: cmp Acount1,1je Aexit0mov al,' 'mov bl,03hjmp Aexit7Aexit0: mov al,' 'mov bl,0Aexit7: push cxmov cx,1mov ah,9int 10hpop cxcmp Acount0,19jne Aerase_nextadd di,4loop Aerase_nextdec col_on1屏幕的擦除是通过竖形条纹与“空格”的比较,相同则不变,不同则将次字符改为“空格”实现的。

相关文档
最新文档