用汇编语言实现闪烁文字

合集下载

用Javascript制作跳动的文字

用Javascript制作跳动的文字

用Javascript制作跳动的文字冯永曜黄山村夫一段文字,每个字都在不停地变换着颜色,不停地改变大小且不停地变换位置,像一个个活泼可爱的小精灵。

若是在网页上放上具有这种效果的一段文字,会使整个页面充满生气。

当然,用动画做这种效果是不成问题的,但用Javascript来做要瘦小的多。

下图是抓取的跳动文字瞬间图:图1制作方法:1、先插入一个1*n表格,这里的n就是要跳动的文字数,把表格的高度定义为70px,实际上表格高度的设定原则是要大于最大的跳动文字。

否则在文字跳动时,整个页面都在抖动。

然后把文字写入表格中,每个单元格写一个字,由于要在程序中对每个字的属性进行操作,所以还要用<span>标记把字括起来,并给它取一个名字(在本例中是a1、a2、a3......a6),没有名字,程序无法操作。

本例的文字部分代码如下:<table width="90%" height="60" border="0" ><tr ><td><span id="a1">赛</span></td><td><span id="a2">迪</span></td><td><span id="a3">互</span></td><td><span id="a4">动</span></td><td><span id="a5">学</span></td><td><span id="a6">校</span></td></tr></table>2、在<head>与</head>之间插入下面这段程序。

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

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

课程设计题目模拟“霓虹灯”汇编语言程序设计学院专业班级姓名指导教师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的彩色图像显示方式。

汇编语言霓虹灯字符显示

汇编语言霓虹灯字符显示
信息工程学院 《汇编语言程序设计》课程设计
设 计 题 目:
年 级 专 业:

长:
小 组 成 员:
指 导 教 师:
完 成 日 期:
霓虹灯的字符显示
霓虹灯的字符显示
【摘 要】: 五光十色的霓虹灯对于我们并不陌生,但却从不知道是如何被设计和应用的,通过
本学期学习的汇编语言,我组在本次课程设计中便尝试设计模拟霓虹灯显示,所以,设 计内容是采用本学期所学的 8086 汇编语言设计一个运行于计算机的“霓虹灯”的模拟 显示程序。霓虹灯的主题为英文单词“HELLO”,在白色单词的基础上,红色不断的在每 个英文字母上循环闪烁。并且,键盘数字键“1”和“2”均可控制不同的闪烁方式,按 键“ESC”可控制退出程序运行。这就要求了该霓虹灯能够动态的进行变化,最后,按 键“esc”退出,以免程序一直运行导致电脑死机。该霓虹灯模拟显示程序主要是进行 程序的循环、子程序的调用,来完成这一动态变化效果。
3.2
调用各程序流程图.....................................................................................- 5 -
图 3-2 为部分个程序调用流程图.....................................................................................- 6 4 算法中涉及的知识点...................................................................................................- 7 5 设计用的计算机环境...................................................................................................- 8 6 运行效果图...................................................................................................................- 9 7 源代码.........................................................................................................................- 10 结论...................................................................................................................................- 13 参 考 文 献.....................................................................................................................- 14 致 谢...........................................................................................................................- 15 -

css3实现文字闪烁效果的三种方式示例代码

css3实现文字闪烁效果的三种方式示例代码

css3实现⽂字闪烁效果的三种⽅式⽰例代码1.通过改变透明度来实现⽂字的渐变闪烁,效果图:<!DOCTYPE html><html><head></head><title>⽂字闪烁</title><body><div class="blink">星星之⽕可以燎原</div></body><style>.myclass{letter-spacing:5px;/*字间距*/color: red;font-weight:bold;font-size:46px;}/* 定义keyframe动画,命名为blink */@keyframes blink{0%{opacity: 1;}100%{opacity: 0;}}/* 添加兼容性前缀 */@-webkit-keyframes blink {0% { opacity: 1; }100% { opacity: 0; }}@-moz-keyframes blink {0% { opacity: 1; }100% { opacity: 0; }}@-ms-keyframes blink {0% {opacity: 1; }100% { opacity: 0;}}@-o-keyframes blink {0% { opacity: 1; }100% { opacity: 0; }}/* 定义blink类*/.blink{color: red;font-size:46px;animation: blink 1s linear infinite;/* 其它浏览器兼容性前缀 */-webkit-animation: blink 1s linear infinite;-moz-animation: blink 1s linear infinite;-ms-animation: blink 1s linear infinite;-o-animation: blink 1s linear infinite;}<style></html>如果不需要渐变闪烁效果,我们可以在keyframe动画中定义50%,50.1%的opacity的值。

简单的STM32汇编程序—闪烁LED

简单的STM32汇编程序—闪烁LED

简单的STM32汇编程序—闪烁LED要移植操作系统,汇编是道不得不跨过去的坎。

所以承接上篇的思路,我准备⽤汇编写⼀个简单的闪烁LED灯的程式。

以此练习汇编,为操作系统做准备。

第⼀步,还是和上篇⼀样,建⽴⼀个空的⽂件夹。

第⼆步,因为是要⽤汇编来写程式,所以不需要启动代码,这⾥选择否。

第三步,建⽴⼀个.s⽂件,并把⽂件添加到⼯程中。

第四步,在LED.s⽂件中添加如下代码。

LED0 EQU 0x422101a0RCC_APB2ENR EQU 0x40021018GPIOA_CRH EQU 0x40010804Stack_Size EQU 0x00000400AREA STACK, NOINIT, READWRITE, ALIGN=3Stack_Mem SPACE Stack_Size__initial_spAREA RESET, DATA, READONLY__Vectors DCD __initial_sp ; Top of StackDCD Reset_Handler ; Reset HandlerAREA |.text|, CODE, READONLYTHUMBREQUIRE8PRESERVE8ENTRYReset_HandlerBL LED_InitMainLoop BL LED_ONBL DelayBL LED_OFFBL DelayB MainLoopLED_InitPUSH {R0,R1, LR}LDR R0,=RCC_APB2ENRORR R0,R0,#0x04LDR R1,=RCC_APB2ENRSTR R0,[R1]LDR R0,=GPIOA_CRHBIC R0,R0,#0x0FLDR R1,=GPIOA_CRHSTR R0,[R1]LDR R0,=GPIOA_CRHORR R0,R0,#0x03LDR R1,=GPIOA_CRHSTR R0,[R1]MOV R0,#1LDR R1,=LED0STR R0,[R1]POP {R0,R1,PC}LED_ONPUSH {R0,R1, LR}MOV R0,#0LDR R1,=LED0STR R0,[R1]POP {R0,R1,PC}LED_OFFPUSH {R0,R1, LR}MOV R0,#1LDR R1,=LED0STR R0,[R1]POP {R0,R1,PC}DelayPUSH {R0,R1, LR}MOVS R0,#0MOVS R1,#0MOVS R2,#0DelayLoop0ADDS R0,R0,#1CMP R0,#330BCC DelayLoop0MOVS R0,#0ADDS R1,R1,#1CMP R1,#330BCC DelayLoop0MOVS R0,#0MOVS R1,#0ADDS R2,R2,#1CMP R2,#15BCC DelayLoop0POP {R0,R1,PC}; NOPEND///////////////////////////////////////////////////////代码的简单讲解1,预定义LED0 EQU 0x422101a0 ;PA8的Bit-Bond地址。

VB实现文字“闪入”显示的特殊效果

VB实现文字“闪入”显示的特殊效果

对于编程爱好者来说,开发软件过程中⽂字显⽰处理是⼀项很重要的内容,它的显⽰效果的好坏,对程序的界⾯效果有很⼤的影响,如果⽂字显⽰时能够打破陈规,有所创新,使⽤⼀些别致的⽅式,可以给⽤户⽿⽬⼀新的感觉,从⽽增加程序的亲和⼒。

针对Visual Basic编程,笔者给出了⽂字"闪⼊"显⽰这⼀特殊显⽰效果的实现⽅法,希望能够对读者朋友们开阔思路有所帮助。

⼀、实现原理及相关函数介绍 所谓⽂字的"闪⼊",指的是将所要显⽰的⽂字分成两部分,每部分的字符分别从程序界⾯的两端进⼊,并最终显⽰出来。

它实现的原理是:对于⼀个待显⽰的字符串,各个字符间⼈为的确定⼀个最初的间隔距离,在显⽰过程中,对称显⽰并逐渐缩⼩这个距离直⾄达到系统默认的字符间距,从⽽实现字符串从界⾯⼆侧"闪⼊"的效果。

具体在编程实现中,⼀是需要使⽤SetTextCharacterExtra函数在待显⽰的字符串的每个字符中加⼊间隔距离。

⼆是在程序中加⼊定时器,每次定时器触发后,⽤DrawTextEx显⽰⼀个字符。

三是在使⽤DrawTextEx函数时设置显⽰的格式为DT_CENTER,并且设置该函数的DRAWTEXTPARAMS结构参数时,将其iLeftMargin、iRightMargin成员的值设为"0"。

程序实现过程中,需要声明、使⽤下列三个API函数,它们分别是: 1、SetTextCharacterExtraDeclare Function SetTextCharacterExtra Lib "gdi32" Alias "SetTextCharacterExtraA" (ByVal hdc As Long, ByVal nCharExtra As Long) As Long 说明:该函数⽤于在描绘⽂本时,指定字符串内各字符间插⼊的额外间距。

51单片机驱动16×16LED点阵显示动画汉字汇编程序

51单片机驱动16×16LED点阵显示动画汉字汇编程序

51单片机驱动16×16LED点阵显示动画汉字汇编程序电路图就不贴出来了16×16LED点阵的典型接法。

这里提供一个完整的AT89S51单片机驱动驱动led点阵显示具有动画效果的汉字的汇编程序列子.ORG 0000HST: MOV A,#0FFH ;初始化MOV P1,AMOV P2,AMOV P3,AMOV P0,ACLR AMOV R0,#50H ;显示缓存清0MOV R1,#20H ;控制清0的次数ST0: MOV @R0,AINC R0DJNZ R1,ST0;正文显示CHINESE: MOV DPTR,#TAB1 ;查表指针指向TAB1LCALL HZ;结束动画SCREE:MOV DPTR,#TAB2;查表指针指向TAB2ACALL DDMOV DPTR,#TAB3;查表指针指向TAB3ACALL DDMOV DPTR,#TAB4;查表指针指向TAB4ACALL DDLJMP CHINESE;显示8幅画面子程序,SCREE专用,用字模软件字要倒置(表必须深256字节)DD: MOV B,#00HMOV R0,#08H ;显示8幅画面AJMP CCCC0: MOV A,BADD A,#20H ;指向下一幅画面MOV B,ACC: MOV R7,#08H ;画面停留时间MOV R3,BMOV 37H,R0LCALL ENTERDIS00: LCALL DISPLAYDJNZ R7,DIS00MOV R0,37HDJNZ R0,CC0RET;汉字上移子程序,可显示8个汉字,(表必须深256字节)HZ: MOV R3,#00H ;查表偏移量MOV R5,#81H ;查表128次MOVBACK: MOV R4,#10H ;使显示完一个汉字MOVBACK0: MOV R7,#02H ;一桢画面显示时间MOV R0,#6DH ;低8位R0指向显示缓存倒数第3个字节,以备与最后1个字节交换MOV R1,#6CH ;高8位R1指向显示缓存倒数第4个字节,以备与倒数第2个字节交换MOV R2,#10H ;内存后移的次数DJNZ R5,MOVBACK1RET ;显示完该表,返回MOVBACK1: MOV A,@R0 ;低8位被后移的内存单元数据暂存入AINC R0 ;后移两字节INC R0MOV @R0,A ;放入要移的低8位数据MOV A,R0 ;R0指向下一个要后移的内存单元SUBB A,#04HMOV R0,AMOV A,@R1 ;高8位被后移的内存单元数据暂存入A INC R1 ;后移两字节INC R1MOV @R1,A ;放入要移高8位的数据MOV A,R1 ;R1指向下一个要后移的内存单元SUBB A,#04HMOV R1,A ;R1指向下一个要后移的内存单元DJNZ R2,MOVBACK1 ;显示缓存数据依次后移MOV A,R3 ;从表TAB1读入要移进50H,51H的数据MOVC A,@A+DPTR;先给50H读数据MOV 50H,AMOV A,R3 ;指向下一字节INC AMOV R3,AMOVC A,@A+DPTR;再给51H读数据MOV 51H,AMOV A,R3 ;指向下一字节INC AMOV R3,AMOV 30H,R3 ;保护数据MOV 31H,R4MOV 32H,R5DISMOV: LCALL DISPLAY ;显示当前数据DJNZ R7,DISMOVMOV R3,30HMOV R4,31HMOV R5,32HDJNZ R4,MOVBACK0MOV 30H,R3 ;保护数据MOV 32H,R5MOV R7,#24H ;显示当前数据延时DISMOV0: LCALL DISPLAYDJNZ R7,DISMOV0MOV R3,30HMOV R5,32HLJMP MOVBACK;放进一幅显示数据到显示缓存子程序,要先设好指针DPTR和R 3,影响R1,R2,R3ENTER: MOV R1,#50H ;从50H单元起把表存入MOV R2,#20H ;查表次数MOV A,R3CLLOOP_: MOVC A,@A+DPTR ;查表MOV @R1,A ;将表放进5X,6X单元INC R1 ;R1指向下一个地址空间MOV A,R3 ;查表指针后移INC AMOV R3,A ;将指针修改结果存入R3DJNZ R2,CLLOOP_;没查完转CLLOOP_RET;15MS,显示子程序,一桢32个字节,影响A,R0,R1,R3,R4,R5,R6;;单片机网提供汉字取模工具,可显示任意汉字DISPLAY: MOV A,#0FFHMOV P0,AMOV P1,AMOV P2,AMOV P3,ASETB CMOV R6,#7FH ;赋扫描字初值,左移后初值为0FEH MOV R5,#00H ;列扫描低8位控制MOV R0,#50H ;行的高8(p1)位要显示的数据起始地址MOV R1,#10H ;扫描次数DISLOOP: MOV A,@R0 ;从内存读数据MOV P2,#0FFH ;装入数据时不显示任何东西MOV P3,#0FFHCPL A ;数据取反以适合显示MOV P1,A ;送入行的高8(p1)位要显示的数据INC R0 ;修改R0指向低8位要显示的数据MOV A,@R0 ;读低8位要显示的数据CPL A ;数据取反以适合显示MOV P0,A ;送入行的低8(p0)位要显示的数据INC R0 ;R0指向下一个高8(p0)位要显示的数据LCALL NEXT ;调用列扫描程序LCALL DELAY1MS ;显示延时DJNZ R1,DISLOOP;一桢显示完返回MOV P3,#0FFH ;全灭RET;列扫描子程序DISLOOP专用NEXT: JNC NEXT1 ;C=0转扫描高8(p3)位行MOV A,R6 ;修改扫描字RL AMOV R6,AINC R5CJNE R5,#09H,NEXT0 ;R6=#0FEH时C=0AJMP NEXT1BACK: RETNEXT0: MOV P2,R6 ;扫描低8(p2)位行AJMP BACKNEXT1: MOV P2,#0FFHMOV P3,R6 ;扫描高8(p3)位行MOV A,R6 ;修改扫描字RL AMOV R6,AAJMP BACK;延时1MS子程序DELAY1MS: MOV R3,#10D0: MOV R4,#50D1: DJNZ R4,D1DJNZ R3,D0RETTAB1:DB 01FH,0F8H,001H,000H,07FH,0FEH,041H,004H,01DH,070 H,001H,000H,01DH,070H,000H,000HDB 01FH,0F0H,011H,010H,01FH,0F0H,011H,010H,01FH,0F2 H,001H,002H,001H,002H,000H,0FEH;電DB 000H,000H,03FH,0F0H,000H,020H,000H,040H,000H,080 H,001H,000H,001H,000H,001H,004HDB 0FFH,0FEH,001H,000H,001H,000H,001H,000H,001H,000 H,001H,000H,005H,000H,002H,000H;子DB 008H,000H,008H,0FCH,07EH,084H,008H,084H,0FFH,094 H,041H,088H,022H,080H,014H,0FEHDB 07EH,0A4H,008H,0A4H,008H,098H,0FFH,098H,008H,0A4 H,008H,0A6H,008H,0C4H,008H,080H;報DB 000H,000H,000H,010H,03FH,0F8H,000H,000H,000H,000 H,000H,000H,000H,000H,000H,000HDB 000H,000H,000H,000H,000H,000H,000H,004H,07FH,0FE H,000H,000H,000H,000H,000H,000H;二DB 01FH,0F8H,001H,000H,07FH,0FEH,041H,004H,01DH,070 H,001H,000H,01DH,070H,002H,080HDB 004H,060H,01AH,01EH,0E1H,008H,01FH,0E0H,000H,040 H,002H,080H,001H,000H,001H,000H;零DB 01FH,0F8H,001H,000H,07FH,0FEH,041H,004H,01DH,070 H,001H,000H,01DH,070H,002H,080HDB 004H,060H,01AH,01EH,0E1H,008H,01FH,0E0H,000H,040 H,002H,080H,001H,000H,001H,000H;零DB 004H,000H,003H,000H,001H,080H,001H,000H,0FFH,0FE H,000H,000H,000H,000H,004H,080HDB 006H,040H,004H,020H,008H,010H,008H,018H,010H,00C H,020H,00CH,040H,008H,000H,000H;六DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000 H,000H,000H,000H,000H,000H,000HDB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000 H,000H,000H,000H,000H,000H,000H;(空);结束动画;-- 水纹 -- ** 宋体, 12 **; 当前所选字体下一个汉字对应的点阵为: 宽度x高度=128x16, 调整后为: 128x16TAB2:DB 000H,000H,000H,000H,000H,000H,000H,000H,000 H,000H,000H,000H,000H,000H,001H,080HDB 001H,080H,000H,000H,000H,000H,000H,000H,000H,000 H,000H,000H,000H,000H,000H,000HDB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000 H,000H,000H,001H,080H,003H,0C0HDB 003H,0C0H,001H,080H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000HDB 000H,000H,000H,000H,000H,000H,000H,000H,001H,080 H,002H,040H,004H,020H,008H,010HDB 008H,010H,004H,020H,002H,040H,001H,080H,000H,000 H,000H,000H,000H,000H,000H,000HDB 000H,000H,001H,0C0H,006H,030H,008H,008H,008H,008 H,010H,004H,020H,002H,020H,002HDB 020H,002H,010H,004H,008H,008H,008H,008H,006H,030 H,001H,0C0H,000H,000H,000H,000HDB 003H,0C0H,00CH,030H,010H,008H,010H,008H,060H,006 H,040H,002H,080H,001H,080H,001HDB 080H,001H,080H,001H,040H,002H,060H,006H,010H,008 H,010H,008H,00CH,030H,003H,0C0HDB 000H,000H,038H,01CH,046H,062H,081H,081H,080H,001 H,040H,002H,040H,002H,020H,004HDB 020H,004H,040H,002H,040H,002H,080H,001H,081H,081 H,046H,062H,038H,01CH,000H,000HDB 0C0H,003H,0A0H,005H,058H,01EH,024H,024H,024H,024 H,01EH,078H,005H,0A0H,002H,040HDB 002H,040H,005H,0A0H,01AH,078H,024H,024H,024H,024 H,058H,01AH,0A0H,005H,0C0H,003HDB 000H,000H,0C0H,003H,0B0H,00DH,088H,011H,044H,022 H,025H,0A4H,012H,048H,00DH,0B0HDB 00DH,0B0H,012H,048H,025H,0A4H,044H,022H,088H,011 H,0B0H,00DH,0C0H,003H,000H,000H;--福-- ** 宋体, 12 **; 当前所选字体下一个汉字对应的点阵为: 宽度x高度=16x16, 调整后为: 16x16TAB3:DB 0AAH,055H,055H,0AAH,0AAH,055H,055H,0AAH,0A AH,055H,055H,0AAH,0AAH,055H,055H,0AAHDB 055H,0AAH,0AAH,055H,055H,0AAH,0AAH,055H,055H,0 AAH,0AAH,055H,055H,0AAH,0AAH,055HDB 0AAH,055H,055H,0AAH,0AAH,055H,055H,0AAH,0AAH,0 55H,054H,02AH,0A8H,015H,050H,00AHDB 050H,00AH,0A8H,015H,054H,02AH,0AAH,055H,055H,0A AH,0AAH,055H,055H,0AAH,0AAH,055HDB 0AAH,055H,054H,02AH,0A8H,015H,050H,00AH,0A0H,00 5H,040H,002H,080H,001H,000H,000HDB 000H,000H,080H,001H,040H,002H,0A0H,005H,050H,00A H,0A8H,015H,054H,02AH,0AAH,055HDB 0A0H,005H,040H,002H,091H,0F9H,000H,000H,074H,0F0 H,019H,008H,031H,008H,058H,0F0HDB 014H,000H,011H,0F8H,012H,044H,013H,0FCH,012H,044 H,091H,0F9H,040H,002H,0A0H,005HDB 020H,000H,013H,0FEH,010H,000H,0FDH,0FCH,005H,004 H,009H,004H,011H,0FCH,030H,000HDB 05BH,0FEH,096H,022H,012H,022H,013H,0FEH,012H,022 H,012H,022H,013H,0FEH,012H,002HDB 000H,004H,07FH,0C8H,000H,008H,03FH,0BFH,020H,0A0 H,020H,090H,03FH,088H,000H,00CHDB 07FH,0DAH,044H,069H,044H,048H,07FH,0C8H,044H,048 H,044H,048H,07FH,0C8H,040H,048HDB 010H,040H,010H,080H,091H,000H,073H,0FFH,014H,080 H,018H,040H,040H,0FFH,05EH,092HDB 052H,092H,052H,092H,052H,0FEH,052H,092H,052H,092 H,05EH,092H,040H,0FFH,000H,000HDB 012H,002H,013H,0FEH,012H,022H,012H,022H,013H,0FE H,012H,022H,096H,022H,05BH,0FEHDB 030H,000H,011H,0FCH,009H,004H,005H,004H,0FDH,0FC H,010H,000H,013H,0FEH,020H,000HTAB4:DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH, 0F8H,0FFH,0F8H,0FFH,0C0H,0FFH,0C0HDB 0FEH,000H,0FEH,000H,0F0H,000H,0F0H,007H,0B0H,002 H,0C8H,002H,048H,006H,030H,002H;STEP1DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0F8H, 0FFH,0F8H,0FFH,0C0H,0FFH,0C0HDB 0FEH,000H,0FEH,000H,0F6H,000H,0F9H,007H,089H,002 H,086H,001H,000H,005H,000H,002H;STEP2DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0F8H, 0FFH,0F8H,0FFH,0C0H,0FFH,0C0HDB 0FEH,0C0H,0FFH,020H,0F1H,020H,0F0H,0C7H,080H,001 H,080H,007H,000H,001H,000H,007H;STEP3DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0F8H, 0FFH,0F8H,0FFH,0D8H,0FFH,0E4HDB 0FEH,024H,0FEH,018H,0F0H,000H,0F0H,001H,080H,001 H,080H,007H,000H,005H,000H,005H;STEP4DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FBH, 0FFH,0FCH,0FFH,0C4H,0FFH,0C3HDB 0FEH,000H,0FEH,000H,0F0H,000H,0F0H,007H,080H,001 H,080H,007H,000H,004H,000H,007H;STEP5DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH, 000H,000H,000H,000H,000H,000HDB 000H,000H,000H,000H,000H,000H,0FFH,0FFH,0FFH,0FFH, 0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB 000H,000H,0F4H,058H,084H,0D4H,085H,052H,0F5H,052 H,085H,052H,086H,054H,0F4H,058HDB 000H,000H,022H,05EH,022H,050H,022H,050H,023H,0DE H,022H,050H,022H,050H,0FAH,05EHEND。

汇编语言小霓虹灯代码

汇编语言小霓虹灯代码

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。

at89c51led闪烁实验汇编语言

at89c51led闪烁实验汇编语言

at89c51led闪烁实验汇编语言1. 简介at89c51是一种经典的单片机芯片,被广泛应用于各种嵌入式系统中。

其中,led闪烁实验是单片机入门的必备实验之一,通过这个实验可以初步了解单片机的基本工作原理和汇编语言的编程方法。

2. 实验原理在at89c51单片机中,led是一种常用的输出设备,可以通过控制引脚的高低电平来实现闪烁效果。

通过学习汇编语言的编程方法,我们可以编写程序控制led引脚的状态,从而实现led的闪烁操作。

3. 实验步骤第一步:搭建硬件实验评台,将at89c51单片机与led灯连接。

第二步:编写汇编语言程序,通过设置端口的高低电平来实现led的闪烁效果。

第三步:将编写好的程序下载到at89c51单片机中,进行调试和验证。

4. 实验代码下面是一个简单的at89c51led闪烁实验的汇编语言程序:```assemblyorg 0h ; 程序从位置区域0开始执行mov P1, #0FFh ; 设置P1端口为输出loop:mov P1, #00h ; 将P1端口输出低电平acall delay ; 调用延时程序mov P1, #0FFh ; 将P1端口输出高电平acall delay ; 调用延时程序sjmp loop ; 无条件跳转至loop标号处delay:mov R1, #0Ah ; 设置延时计数值delay1:mov R2, #0FFh ; 设置内部计数值delay2:djnz R2, delay2 ; 内部计数减1djnz R1, delay1 ; 延时计数减1ret ; 返回end ; 程序结束```在这个程序中,我们首先设置P1端口为输出,并在一个循环中不断地将P1端口输出高低电平,通过调用延时程序来实现led的闪烁效果。

5. 实验总结通过这个实验,我们初步了解了at89c51单片机的基本工作原理和汇编语言的编程方法。

在以后的学习中,我们可以通过不断地深入实践和学习,掌握更多单片机和汇编语言的知识,从而实现更加复杂的功能和应用。

pic汇编程序范例

pic汇编程序范例

pic汇编程序范例pic汇编程序是一种用于编写和运行在PIC微控制器上的汇编语言程序。

下面将介绍一个简单的pic汇编程序范例,以帮助读者更好地理解和掌握该编程语言。

标题:使用pic汇编编写一个LED闪烁程序引言:本文将介绍如何使用pic汇编语言编写一个简单的LED闪烁程序。

通过这个例子,读者将学习如何初始化IO端口、设置延时、控制IO端口输出等基本操作。

第一部分:准备工作在开始编写程序之前,我们需要准备一些硬件和软件环境。

首先,我们需要一块搭载PIC微控制器的开发板,例如PIC16F877A。

其次,我们需要一个pic汇编器,例如MPLAB X IDE,用于编写、汇编和调试程序。

第二部分:程序设计下面是一个简单的LED闪烁程序的pic汇编代码:```LIST p=16F877A ; 指定使用的PIC微控制器型号INCLUDE <p16F877A.INC> ; 引入PIC微控制器的寄存器定义文件ORG 0x0000 ; 程序入口地址; 初始化端口BSF STATUS, RP0 ; 切换到Bank1MOVLW b'00000000' ; 设置TRISA寄存器为输出模式 MOVWF TRISABCF STATUS, RP0 ; 切换到Bank0; 主循环LOOP:BSF PORTA, 0 ; 将RA0置高,点亮LEDCALL DELAY ; 调用延时函数BCF PORTA, 0 ; 将RA0清零,熄灭LEDCALL DELAY ; 调用延时函数GOTO LOOP ; 无限循环; 延时函数DELAY:MOVLW D'100' ; 设置延时时间,可根据实际需要调整 MOVWF COUNTDELAY_LOOP:DECFSZ COUNT, F ; 将COUNT减1,并检查是否为零GOTO DELAY_LOOP ; 若不为零,则继续循环RETURNEND```第三部分:程序解析在上述程序中,我们首先使用了`BSF`和`BCF`指令来设置和清零端口A的第0位,用于控制LED的亮灭。

《VB编程实现文字闪烁》教案

《VB编程实现文字闪烁》教案

《VB编程实现文字闪烁》教案授课课题:VB编程实现文字闪烁授课时间:授课地点:授课班级:授课人:教学目的:一、认知目标1、理解文字闪烁程序的设计思想和设计方法2、理解Selectcase语句构造多分支程序的方法和实现的技巧3、理解RGB()函数和RND()函数配合,动态随机生成颜色的方法二、技能目标1、熟练使用VB中的Label控件构造程序界面2、熟练使用格式工具对控件进行排列设置3、熟练使用编程工具对程序代码进行编写和简单的调试三、情感目标1、培养学生的自学能力、自主创意、分析解决问题的能力2、培养学生的团队合作精神,互相协作完成任务的能力教学重点:1、熟练使用VB中的Label控件构造程序界面2、理解文字闪烁程序的设计思想和设计方法3、理解Selectcase语句构造多分支程序的方法和实现的技巧教学难点:1、理解文字闪烁程序的设计思想和设计方法2、理解Selectcase语句构造多分支程序的方法和实现的技巧教学方法:直观演示法、案例教学法、分层教学法和兴趣激励法教学用具:VB开发工具、VB程序案例、多媒体演示系统学情分析:高二的学生上课纪律较好,比较能够配合教师进行教学;通过大半学期的VB学习,对项目教学法也已经比较熟悉;但大部分学生由于基础知识和学习方法的限制,学习还比较死板,学习方法还只停留在教师教学生学的层面上;学生也不太主动通过摸索、调试自己解决问题。

所以本课准备先讲后练,步步引导,并协调好学生自主学习和教师辅助学习的关系,提高学生的主观能动性。

教学过程:【引入】演示原来讲解过的文字变色的例子和今天要讲解的文字闪烁的例子;提问学生:这两个案例有什么不同。

可以调节闪烁的时间,让学生仔细观察。

【预测】学生通过观察大部分都能过发现两个实例的区别。

(5分钟)【演示】开始新课,教师先演示Label控件排列文字的方法。

【预测】学生可能有疑问,为什么8个汉字要用8个Label控件呢,这个问题教师主动提出来,学生可以思考以后马上解答,也可以设计完程序以后解答。

单片机闪烁灯流水灯汇编代码大全

单片机闪烁灯流水灯汇编代码大全

单片机闪烁灯流水灯汇编代码大全1、单片机AT89C51的P2 口接8个发光二极管,让这8 个发光二极管显示闪烁功能,即八灯亮2S,熄灭3S,如此循环。

参考程序:ORG 0000Hstart: MOV P1,#0HCALL delayMOV P1,#0FFHCALL delayCALL delayLJMP startdelay:MOV R7,#200d2: MOV R6,#250d1: DJNZ R6,d1DJNZ R7,d2RETEND;200*250 次*2*1us=1000ms=1s个发光二极管能够双灯左移之后再双灯右移,形成霹雳灯的效果,如此循环 5 次后全灭,延时0.5S 灯右移,形成霹雳灯的效果,如此循环5 次后全灭。

延时0.5S。

参考程序1:ORG 0000HMOV A,#11111100Bstart:MOV P1,ACALL delayRL ARL AINC R0CJNE R0,#4,startMOV R0,#00Hs:RR ARR AMOV P1,ACALL delayINC R0CJNE R0,#4,sMOV R0,#00HLJMP startdelay: MOV R5,#100 k1: MOV R6,#250k2: MOV R7,#250k3: DJNZ R7,k3DJNZ R6,k2DJNZ R5,k1RETEND参考程序2:ORG 0000HMOV R0,#5start:MOV P2,#11111100B CALL delay0_5s MOV P2,#11110011B CALL delay0_5s MOV P2,#11001111B MOV P2,#00111111BMOV P2,#00111111BMOV P2,#11001111B CALL delay0_5s MOV P2,#11110011B CALL delay0_5s MOV P2,#11111100B CALL delay0_5s DJNZ R0,start MOV P2,#0FFH SJMP $delay0_5s:MOV R7,#20d3: MOV R6,#200 d2: MOV R5,#250 d1: NOPNOPDJNZ R5,d1DJNZ R6,d2DJNZ R7,d3RETEND3、单片机AT89C51的P2 口接8个发光二极管,让这8 个发光二极管先交互闪烁 5 次,然后双灯左移之后再双灯右移,如此循环,形成流水灯的效果,延时0.5S。

16 16点阵LED循环显示汉字汇编语言设计

16 16点阵LED循环显示汉字汇编语言设计

LED16X16点阵显示课程设计报告学院信息工程学院专业通信工程班级0801学生姓名指导老师二0一0年十二月一、设计目的本次课程设计目的剖析试验箱,利用微机接口芯片8255,并行控制LED点阵显示;其次就是掌握8088微机系统与LED点阵显示模块之间接口电路设计及编程,了解LED点阵显示的基本原理和如何来实现汉字的的循环左移显示。

二、设计内容利用598H试验系统扩展接口CZ7座,在控制板MC1上以并行通信的方式控制LED点阵显示。

要求自建字库,编制程序实现点阵循环左移显示汉字,并要求通过protues仿真软件画出电路图,运行程序。

三、硬件电路设计整个电路由8088CPU,两片8255,1个74ls373,1个74LS138,1个16×16的LED,5个7407。

该电路可静态显示1个16*16位的汉字,也可循环显示。

1、8255Intel8255A是一种通用的可编程序并行I/O接口芯片,又称“可编程外设接口芯片”,是为Intel8080/8085系列微处理据设计的,也可用于其它系列的微机系统。

可由程序来改变其功能,通用性强、使用灵活。

通过8255A,CPU可直接同外设相连接,是应用最广的并行I/O接口芯片。

其中含3个独立的8位并行输入/输出端口,各端口均具有数据的控制和锁存能力。

可通过编程设置各端口的工作方式和数据传送方向(入/出/双向)。

2、138译码器译码器是组合逻辑电路的一个重要的器件,74LS138的输出是低电平有效,故实现逻辑功能时,输出端不可接或门及或非门,74LS138与前面不同,其有使能端,故使能端必须加以处理,否则无法实现需要的逻辑功能。

发光二极管点亮只须使其正向导通即可,根据LED的公共极是阳极还是阴极分为两类译码器,即针对共阳极的低电平有效的译码器;针对共阴极LED的高电平输出有效的译码器。

3、373锁存器74LS373是低功耗肖特基TTL8D锁存器,内有8个相同的D型(三态同相)锁存器,由两个控制端(11脚G或EN;1脚OUT、CONT、OE)控制。

单片机汇编程序代码(闪烁灯、流水灯、蜂鸣器、点阵)

单片机汇编程序代码(闪烁灯、流水灯、蜂鸣器、点阵)
db 2bh,20h,30h,10h,39h,10h,26h,10h,2bh,10h,2bh,20h,2bh,40h,40h,20h
db 20h,10h,20h,10h,2bh,10h,26h,30h,30h,80h,18h,20h,18h,20h,26h,20h
db 20h,20h,20h,40h,26h,20h,2bh,20h,30h,20h,30h,20h,1ch,20h,20h,20h
;TP0: DB 00H,3CH,42H,42H,42H,42H,3CH,00H ;圆形
;TP2: DB 07Fh,0BFh,0DFh,0EFh,0F7h,0FBh,0FDh,0FEh
END
MOV 20H,#00H ;中断计数器清0
MOV B,#00H ;表序号清0
MUSIC1:
NOP
CLR A
MOVC A,@A+DPTR ;查表取代码
JZ END0 ;是00H,则结束
CJNE A,#0FFH,MUSIC5
LJMP MUSIC3
MUSIC5:
NOP
MOV R6,A
db 20h,80h,1ch,20h,1ch,20h,1ch,20h,30h,20h,30h,60h,39h,10h,30h,10h
db 20h,20h,2bh,10h,26h,10h,2bh,10h,26h,10h,26h,10h,2bh,10h,2bh,80h
db 18h,20h,18h,20h,26h,20h,20h,20h,20h,60h,26h,10h,2bh,20h,30h,20h
一、闪烁灯
ORG 0000H
AJMP MAIN
ORG 0030H

实现闪烁字幕效果的方法

实现闪烁字幕效果的方法

实现闪烁字幕效果的方法Adobe Premiere Pro是一款功能强大的视频编辑软件,可以帮助用户轻松地制作专业水准的视频作品。

在视频编辑过程中,添加字幕是非常常见的操作。

而为字幕添加闪烁效果,能够吸引观众的注意力,增强视频的表现力。

下面将介绍实现闪烁字幕效果的方法。

步骤一:导入视频素材和字幕文件首先,我们需要将要编辑的视频素材和字幕文件导入到Adobe Premiere Pro软件中。

点击菜单栏中的“文件”选项,选择“导入”并选择相应的视频素材和字幕文件,将它们导入到软件的资源库中。

步骤二:创建一个新的字幕轨道在编辑界面中,我们可以看到软件的时间轴面板。

为了实现闪烁字幕效果,我们需要在时间轴上创建一个新的字幕轨道。

鼠标右键点击时间轴上的空白位置,选择“新建字幕轨道”。

这样就创建了一个新的字幕轨道。

步骤三:添加字幕并设置效果在新建的字幕轨道上,我们可以开始添加字幕。

选择左侧的“字幕工具”面板,点击“创建新的字幕”按钮。

在弹出的对话框中,选择合适的字幕样式和位置,然后点击“确定”按钮。

接下来,我们需要设置字幕的闪烁效果。

在时间轴上选中字幕轨道上的字幕文件,然后在右侧的“控制”面板中找到“效果控制”选项。

点击“效果控制”面板上的“Opacity”选项,将其展开。

在“Opacity”选项下方的“Toggle animation”框中点击,开启透明度动画。

然后,将时间轴光标移动到想要开始闪烁的位置,点击“Opacity”下方的时钟按钮,创建一个关键帧。

在时间轴上移动到想要结束闪烁的位置,然后在“Opacity”数值旁边的输入框中输入“0”。

这样就会在时间轴上自动创建一个透明度为0的关键帧。

这个过程会使字幕闪烁起来。

步骤四:调整闪烁效果的频率为了使字幕闪烁的频率更加逼真,我们可以进一步调整闪烁效果的频率。

选中字幕轨道上的字幕文件,在“控制”面板的“效果控制”选项中找到“Opacity”选项。

在“Opacity”选项下方的“Toggle animation”框中点击,开启透明度动画。

用汇编语言实现闪烁文字

用汇编语言实现闪烁文字

1.设计任务用汇编语言实现闪烁文字的效果2.原理2.1题目功能分析〔1〕屏幕提示输入字符串;〔2〕输入完成后,字符动画显示颜色变化;〔3〕单击“Q〞或“q〞键退出程序。

2.2算法说明〔1〕屏幕提示输入字符串主要运用中断INT 21H的0A H功能;〔2〕颜色变化那么通过INT 10H的09H功能循环调用实现;〔3〕退出功能通过将输入‘Q’和‘q’与其ASCII比拟,跳转到退出程序;而退出程序主要通过INT 21H的4C H功能实现。

2.3.流程图N图1字符串闪烁流程图3.程序说明3.1提示输入字符串显示功能实现屏幕提示输入字符串主要运用中断INT 21H的0A H功能,输入后回车那么完成字符串在特定位置的显示。

lea dx,bufmov ah,0ahint 21hmov bx,2 ;mov di,0B1:mov al,buf[bx]cmpal,13 ;是否是回车?je AG1mov buff1[di],alinc bxinc dijmp B1AG1:mov ah,0mov al,2int 10h;OTHER:mov cx,0ffffh;AG:mov dh,7 ;hangmov dl,35 ;liemov ah,2mov bh,0 ;int 10h ;lea dx,buff1mov ah,9int 21h ;mov dh,7mov dl,35mov ah,2mov bh,0int 10h ;lea dx,buff2mov ah,9int 21h;sub cx,1 ;jnz AG ;3.2颜色变化功能实现颜色变化功能实现相当于对字符串属性定义,表现出颜色差异,然后循环调用并插入延时。

以下程序效果是三种颜色闪烁,其中aaa1表示白色,aaa2表示黑色,aaa3表示绿色,aaa4表示红色,aaa5表示紫色。

往复调用彩色和黑色,在各种颜色变换之间插入黑色即可实现彩色连续闪烁的效果。

具体程序如下:shanshuo: ;call aaa1 ;whitecall delay1call aaa2;blackcall delay1call aaa3 ;whitecall delay1call aaa2;blackcall delay1call aaa4 ;whitecall delay1call aaa2;blackcall delay1call aaa5 ;whitecall delay1call aaa2;blackcall delay1MOV AH,08h;Q,q键退出INT 21Hcmp AL,'Q'je exitcmp AL,'q'je exitjmp shanshuo3.3退出功能实现退出功能通过将输入‘Q’和‘q’与其ASCII比拟,跳转到退出程序;mov ah,08h;q键退出int 21Hcmp AL,'Q'je exitcmp AL,'q'je exitexit: mov ah,4chint 21h3.4完整程序data segmentbuff1 db ' $'buff2 db ' $'buf db 100 dup('$')buff3 db 'please input a string !',13,10,'$'buff4 db 'Press Q or q to exit!',13,10,'$'data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axlea dx,buff3;显示提示信息mov ah,09hint 21hlea dx,buff4;显示提示信息mov ah,09hint 21hlea dx,bufmov ah,0ahint 21hmov bx,2 ;多字符输入,回车完毕,有效内容自第三个始。

STM32 汇编语言,LED闪烁实验

STM32 汇编语言,LED闪烁实验

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;LED闪烁实验;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;LED1闪烁频率1Hz,LED2闪烁频率2Hz,LED3闪烁频率4Hz;;; ;;基于状态转换图,S1->S6六种状态;;;;;2011-5-3 by 追梦;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;BIT5 EQU 0X00000020BIT8 EQU 0X00000100BIT9 EQU 0X00000200BIT10 EQU 0X00000400LED1 EQU BIT8 ;LED1--PD.8LED2 EQU BIT9 ;LED2--PD.9LED3 EQU BIT10 ;LED3--PD.10GPIOD EQU 0X40011400 ;GPIOD 地址GPIOD_CRL EQU 0X40011400 ;低配置寄存器GPIOD_CRH EQU 0X40011404 ;高配置寄存器GPIOD_ODR EQU 0X4001140C ;输出,偏移地址0Ch GPIOD_BSRR EQU 0X40011410 ;低置位,高清除偏移地址10h GPIOD_BRR EQU 0X40011414 ;清除,偏移地址14h IOPDEN EQU BIT5 ;GPIOD使能位RCC_APB2ENR EQU 0X40021018STACK_TOP EQU 0X20002000AREA RESET,CODE,READONL YDCD STACK_TOP ;MSP主堆栈指针DCD START ;复位,PC初始值ENTRY ;指示开始执行STARTLDR R1,=RCC_APB2ENRLDR R0,[R1] ;读LDR R2,=IOPDENORR R0,R2 ;改STR R0,[R1] ;写,使能GPIOD时钟;LED1--PD.8 推挽输出,50MHz;LED2--PD.9 推挽输出,50MHz;LED3--PD.10 推挽输出,50MHzMOV R0,#0x333LDR R1,=GPIOD_CRH ;PD.8\9\10均在高寄存器STR R0,[R1]LDR R1,=GPIOD_ODRLDR R2,=0x00000F00MOV R3,#1LOOPSTR R2,[R1]MOV R0,#125BL DELAY_NMSEOR R2,#LED3 ;翻转LED3ADD R3,#1 ;计数加1CMP R3,#1BEQ STA TE1CMP R3,#3BEQ STA TE2CMP R3,#5BEQ STA TE3CMP R3,#7BEQ STA TE4CMP R3,#8BEQ STA TE5B GOONSTA TE1 ;状态1EOR R2,#LED1EOR R2,#LED2B GOONSTA TE2 ;状态2EOR R2,#LED2B GOONSTA TE3 ;状态3EOR R2,#LED1EOR R2,#LED2B GOONSTA TE4 ;状态4EOR R2,#LED2B GOONSTA TE5 ;状态5MOV R3,#0GOONB LOOP ;继续循环;延时R0(us),误差0.5us;延时超过100us时,误差0.5/R0小于0.5% DELAY_NUSSUB R0,#1NOPNOPNOPCMP R0,#0BNE DELAY_NUS ;跳时3个周期BX LR ;3个周期;延时R0(ms),误差((R0-1)*4+12)/8us;延时较长时,误差小于0.1%DELAY_NMSPUSH {R1} ;2个周期DELAY_NMSLOOPSUB R0,#1MOV R1,#1000DELAY_ONEUSSUB R1,#1NOPNOPNOPCMP R1,#0BNE DELAY_ONEUSCMP R0,#0BNE DELAY_NMSLOOPPOP {R1}BX LRNOPEND。

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

1.设计任务用汇编语言实现闪烁文字的效果2.原理2.1题目功能分析(1)屏幕提示输入字符串;(2)输入完成后,字符动画显示颜色变化;(3)单击“Q”或“q”键退出程序。

2.2算法说明(1)屏幕提示输入字符串主要运用中断INT 21H的0A H功能;(2)颜色变化则通过INT 10H的09H功能循环调用实现;(3)退出功能通过将输入‘Q’和‘q’与其ASCII比较,跳转到退出程序;而退出程序主要通过INT 21H的4C H功能实现。

2.3.流程图开始获取字符设置字符串颜色设置起始位置是否输出?输出字符串N N次数已到?延迟Y结束图1字符串闪烁流程图3.程序说明3.1提示输入字符串显示功能实现屏幕提示输入字符串主要运用中断INT 21H的0A H功能,输入后回车则完成字符串在特定位置的显示。

lea dx,bufmov ah,0ahint 21hmov bx,2 ;mov di,0B1:mov al,buf[bx]cmp al,13 ;是否是回车?je AG1mov buff1[di],alinc bxinc dijmp B1AG1:mov ah,0mov al,2int 10h;OTHER:mov cx,0ffffh;AG:mov dh,7 ;hangmov dl,35 ;liemov ah,2mov bh,0 ;int 10h ;lea dx,buff1mov ah,9int 21h ;mov dh,7mov dl,35mov ah,2mov bh,0int 10h ;lea dx,buff2mov ah,9int 21h;sub cx,1 ;jnz AG ;3.2颜色变化功能实现颜色变化功能实现相当于对字符串属性定义,表现出颜色差别,然后循环调用并插入延时。

以下程序效果是三种颜色闪烁,其中aaa1表示白色,aaa2表示黑色,aaa3表示绿色,aaa4表示红色,aaa5表示紫色。

往复调用彩色和黑色,在各种颜色变换之间插入黑色即可实现彩色间断闪烁的效果。

具体程序如下:shanshuo: ;call aaa1 ;whitecall delay1call aaa2;blackcall delay1call aaa3 ;whitecall delay1call aaa2;blackcall delay1call aaa4 ;whitecall delay1call aaa2;blackcall delay1call aaa5 ;whitecall delay1call aaa2;blackcall delay1MOV AH,08h;Q,q键退出INT 21Hcmp AL,'Q'je exitcmp AL,'q'je exitjmp shanshuo3.3退出功能实现退出功能通过将输入‘Q’和‘q’与其ASCII比较,跳转到退出程序;mov ah,08h;q键退出int 21Hcmp AL,'Q'je exitcmp AL,'q'je exitexit: mov ah,4chint 21h3.4完整程序data segmentbuff1 db ' $'buff2 db ' $'buf db 100 dup('$')buff3 db 'please input a string !',13,10,'$'buff4 db 'Press Q or q to exit!',13,10,'$'data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axlea dx,buff3;显示提示信息mov ah,09hint 21hlea dx,buff4;显示提示信息mov ah,09hint 21hlea dx,bufmov ah,0ahint 21hmov bx,2 ;多字符输入,回车结束,有效内容自第三个始。

mov di,0B1:mov al,buf[bx]cmp al,13 ;是否是回车?je AG1mov buff1[di],alinc bxinc dijmp B1AG1:mov ah,0mov al,2int 10h;黑白文本OTHER:mov cx,0ffffh;jmp shansuoshansuo: ;call aaa1 ;whitecall delay1call aaa2;blackcall delay1call aaa3 ;whitecall delay1call aaa2;blackcall delay1call aaa4 ;whitecall delay1call aaa2;blackcall delay1call aaa5 ;whitecall delay1call aaa2;blackcall delay1MOV AH,08h;q键退出INT 21Hcmp AL,'Q'je exitcmp AL,'q'je exitmp shansuoexit: mov ah,4chint 21haaa1 proc near ;whiteMOV SI,OFFSET buff1mov di,0mov dl,20aa1:mov dh,8 ;dh hang dl lie;行列 inc dlmov ah,2int 10h ;置光标位置mov ah,09 ;9号功能inc dimov al,[si]inc simov bh,0 ;显示页mov bl,07h ;colormov cx,01 ;字符重复一次int 10hcmp di,0chjb aa1retaaa1 endpaaa2 proc near ;blackMOV SI,OFFSET buff1mov di,0mov dl,20aa2:mov dh,8 ;dh hang dl lieinc dlmov ah,2int 10h ;置光标位置mov ah,09 ;9号功能inc dimov al,[si]inc simov bh,0 ;显示页mov bl,00h ;colormov cx,01 ;字符重复一次int 10hcmp di,0chjb aa2retaaa2 endpaaa3 proc near ;greenMOV SI,OFFSET buff1mov di,0mov dl,20aa3:mov dh,8 ;dh hang dl lieinc dlmov ah,2int 10h ;置光标位置mov ah,09 ;9号功能inc dimov al,[si]inc simov bh,0 ;显示页mov bl,02h ;colormov cx,01 ;字符重复一次int 10hcmp di,0chjb aa3retaaa3 endp ;颜色闪烁aaa4 proc near ;red MOV SI,OFFSET buff1mov di,0mov dl,20aa4:mov dh,8 ;dh hang dl lie inc dlmov ah,2int 10h ;置光标位置mov ah,09 ;9号功能inc dimov al,[si]inc simov bh,0 ;显示页mov bl,0ch ;colormov cx,01 ;字符重复一次int 10hcmp di,0chjb aa4retaaa4 endp ;颜色闪烁aaa5 proc near ;prople MOV SI,OFFSET buff1mov di,0mov dl,20aa5:mov dh,8 ;dh hang dl lie inc dlmov ah,2int 10h ;置光标位置mov ah,09 ;9号功能inc dimov al,[si]inc simov bh,0 ;显示页mov bl,0dh ;colormov cx,01 ;字符重复一次int 10hcmp di,0chjb aa5retaaa5 endp ;颜色闪烁delay1 proc nearpush cxpush bxmov bx,1fffhwait4: mov cx,0ffffhwait5: loop wait5dec bxjnz wait4pop bxpop cxretdelay1 endpdelay2 proc nearpush cxpush bxmov bx,0ffhwait2: mov cx,0ffffhwait3: loop wait3dec bxjnz wait2pop bxpop cxretdelay2 endp ;字符串向右移动结束end:code endsend start4.程序运行结果4.1提示并输入字符串,按回车结束输入完没有按回车4.2彩色闪烁测试输入完成后,文字会按照“红-黑-紫-白-黑-绿-黑-红-黑-紫-黑”的顺序变换颜色,实现彩色闪烁。

红色闪烁效果紫色闪烁效果白色闪烁效果绿色闪烁效果黑色闪烁效果5.心得体会微型计算机技术作为我们的主要专业课之一, 虽然在大三开学初我对这门课并没有什么兴趣, 觉得那些程序枯燥乏味,对我们实际生活没什么用,但在这次课程设计后我改变了对这门课的想法。

虽然只有短短的一个星期,但在这一个星期里收获颇多,通过做闪烁文字的课题,我更加深入的了解了这一个学期所学的微机技术这门课。

巩固了课本上的知识同时也学会了很多课本上没有的。

理论与实际相结合,将书本上的东西运用到实际生活当中,真正的做到了融会贯通。

记得在一个星期前刚拿到这个课题的时候,感觉很难,毕竟是第一次接触这个设计,对汇编语言不熟悉,掌握的知识完全不能把这个课程设计做好,因此,在开始的几天都是上网找一些相关的知识,学一些相关的函数和功能,比如汇编语音对颜色的设置,以及颜色的切换。

等等,平时在书本里学的都是一条条的指令,并没有真正做到理解,这次做课程设计通过老师和同学的帮助,真正理解了每条指令的含义,同时也知道了只有平时多看程序,多动手调试,才能真正学好这门课。

通过这次课程设计使我对汇编语言有了更加深入的学习,通过几天的设计,我掌握了DOIS和BOIS各个功能调用的同时,还对子程序有了更深的理解。

通过这次设计我还对计算机产生了浓厚的兴趣,在学到知识的同时也开阔了我的视野,真是收益匪浅。

我也认识到了汇编语言的精妙,认识了它的重要性,汇编作为一种低级语言,与计算机硬件紧密相关,他能解决很多高级语言不能解决的问题,所以掌握汇编语言的设计是非常重要的!6.参考文献[1] 彭虎等编著.微机原理与接口技术(第二版).北京:电子工业出版社,2008[2] 沈美明,温东禅.IBM-PC汇编语句程序设计(第2版).北京:清华大学出版社,2001[3] 任向明,卢惠林.汇编语言程序设计实用教程.北京:清华大学出版社,2009[4] 马力妮.80x86汇编语言程序设计.北京:机械工业出版社,2004[5] 艾德才.Pentium系列微型计算机原理与接口技术.北京:高等教育出版社,2000。

相关文档
最新文档