重庆it培训机构 > 汇编语言程序设计:[12]打字练习动画交互

汇编语言程序设计:[12]打字练习动画交互

简介


汇编语言(Assembly Language)是面向机器的程序设计语言。在汇编语言中,用助记符(Memoni)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址,如此就增强了程序的可读性并且降低了编写难度,象这样符号化的程序设计语言就是汇编语言,因此亦称为符号语言。使用汇编语言编写的程序,机器不能直接识别,还要由汇编程序或者叫汇编语言编译器转换成机器指令。汇编程序将符号化的操作代码组装成处理器可以识别的机器指令,这个组装的过程称为组合或者汇编。因此,有时候人们也把汇编语言称为组合语言。

工具/原料


Assembly Language Masm汇编编译器

方法/步骤


1打开masm汇编编译程序,新建一个masm源文件脚本。 SEGMENT ;此处输入数据段代码 ENDSSTACKS SEGMENT ;此处输入堆栈段代码STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:,SS:STACKSSTART: MOV AX, MOV DS,AX ;此处输入代码段代码 MOV AH,4CH INT 21HCODES ENDS END START

2在正文中输入我们的程序代码,并将文件命名为testword.asmInit_game macro op1,op2,op3,op4,op5,op6 mov cx,00h mov dh,op1 mov dl,op2op6:mov ah,02h mov bh,00h int 10h push cx mov ah,0ah mov al,op3 mov bh,00h mov cx,01h int 10h pop cx inc cx inc op4 cmp cx,op5 jne op6 endmclear_screen macro op1,op2,op3,op4 ;清屏宏定义 mov ah,06h mov al,00h mov bh,07h mov ch,op1 mov cl,op2 mov dh,op3 mov dl,op4 int 10h mov ah,02h mov bh,00h mov dh,00h mov dl,00h int 10hendmmenu macro op1,op2,op3 ;菜单显示宏定义 mov ah,02h mov bh,00h mov dh,op1 mov dl,op2 int 10h mov ah,09h lea dx,op3 int 21hendmdata segment ZK db "xiaobo welcome you to play $" no db "*****Designed by 1wangxiaobo@163.com!*****",0dh,0ah," ^Henan University of Economics and Law^'date:2014/4/24$"meg db "press Enter key to continue.......$"meg1 db "when a letter is dropping,please hit it!$"meg2 db "press space key to pause!$"meg3 db "press ESC key to return main interface!$"meg4 db "press letter 'E' to exit!$"speed dw 600dletters db "jwmilzoeucgpravskntxhdyqfb" db "iytpkwnxlsvxrmofzhgaebudjq" db "nwimzoexrphysfqtvdcgljukda"letters_bak db "jwmilzoeucgpravskntxhdyqfb" db "iytpkwnxlsvxrmofzhgaebudjq" db "nwimzoexrphysfqtvdcgljukda"letter_counter db 0 life_flag db 78 dup(0)position_flag db 78 dup(0) present_position db 1 data endsstack segment para stack 'stack' db 64 dup(0)stack endscode segment main proc far assume cs:code,ds:data,ss:stack start: mov ax,data mov ds,ax mov letter_counter,00h mov present_position,1 lea si,position_flag mov ah,00h mov cx,00hinit_postion_flag: mov [si],ah inc si inc cx cmp cx,78d jne init_postion_flag lea di,letters lea si,letters_bak mov cx,00hinit_letters: mov ah,[si] mov [di],ah inc si inc di inc cx cmp cx,78d jne init_letters mov ah,00h lea si,life_flag mov cx,00hinit_life_flag: mov [si],ah inc si inc cx cmp cx,78d jne init_life_flag mov cx,00h mov ah,01h or ch,00010000b int 10hclear_screen 00d,00d,24d,79d Init_game 00d,00d,0ah,dl,80d,nextsign1 Init_game 24d,00d,0ah,dl,80d,nextsign2 Init_game 00d,00d,0ah,dh,25d,nextsign3 Init_game 00d,79d,0ah,dh,25d,nextsign4 menu 05d,15d,ZK ;菜单信息的宏调用 menu 07h,15d,no menu 09d,15d,meg menu 11d,15d,meg1 menu 13d,15d,meg2 menu 15d,15d,meg3 menu 17d,15d,meg4 put: mov ah,02h ;设置光标位置 mov bh,00h mov dh,22d mov dl,33d int 10h mov ah,01h ;从键盘输入任意字符 int 21h cmp al,0dh je speed3 cmp al,45h je exitexit: mov ah,4ch int 21h speed3: mov ax,speed+12 mov speed,ax jmp begin begin: clear_screen 01d,01d,23d,78d ;清屏宏调用 clear_screen 01d,01d,23d,78d Init_game 23d,01d,01h,dl,78d,nextsign5 mov ah,02h mov bh,00h mov dh,01h mov dl,01h int 10h mov cx,00h lea si,lettersnextletter: mov ah,02h ;显示字母 mov dl,[si] int 21h inc si inc cx cmp cx,78d je nextcycle jmp nextletterfrom_front: sub present_position,78d jmp gobackto_sifind_zero: cmp letter_counter,78d je recycle cmp present_position,78d je from_one mov ah,00hnextsi: add present_position,01h inc si cmp [si],ah je gobackto_di cmp present_position,78d je from_one jmp nextsifrom_one:mov present_position,01h jmp gobackto_sirecycle:mov letter_counter,00h mov present_position,01d lea si,position_flag mov cx,00h mov ah,00hclearsi: mov [si],ah inc cx cmp cx,78d je nextcycle inc si jmp clearsinextcycle: lea di,letters lea si,position_flag add present_position,31d cmp present_position,78 ja from_frontgobackto_si: add si,word ptr present_position dec si mov ah,[si] cmp ah,01h je find_zerogobackto_di: mov ah,01h mov [si],ah add di,word ptr present_position dec di mov dl,present_position mov ah,02h mov bh,00h mov dh,01h int 10h mov cx,00hnextrow: push cx mov cx,00hout_cycle: ; 延迟 push cx mov cx,00hin_cycle: add cx,01h cmp cx,1000 jne in_cycle push dx mov ah,06h ;从键盘输入字符 mov dl,0ffh int 21h pop dx jz pass cmp al,1bh ;如果键入ESC,则返回主菜单 je to_start1 cmp al," " ;如果键入SPACE,则游戏暂停 je pause cmp al,[di] ;输入字母正确!则字母消失 je disappearpass: pop cx inc cx cmp cx,speed je print jmp out_cyclepause: push dx ;暂停处理 mov ah,06h mov dl,0ffh int 21h pop dx cmp al," " jne pause jmp passto_start1: ;返回主菜单 jmp startprint: mov ah,0ah ;在当前光标位置写空格 mov al," " mov bh,00h mov cx,01h int 10h inc dh mov ah,02h ;改变光标位置 mov bh,00h int 10h mov ah,0ah ;在当前光标位置写字母 mov al,[di] mov bh,00h mov cx,01h int 10h pop cx inc cx cmp cx,21d je print_next_letter jmp nextrow ;下一行disappear: ;击中字母后输出空格 pop cx pop cx mov ah,0ah mov al," " mov bh,00h mov cx,01h int 10h jmp hit print_next_letter: lea si,life_flag add si,word ptr present_position dec si mov ah,0ah mov al," " mov bh,00h mov cx,01h int 10h inc dh mov ah,02h mov bh,00h int 10h mov ah,0ah mov al," " mov bh,00h mov cx,01h int 10h mov ah,1 mov [si],ah hit: mov ah,02h mov bh,00h mov dh,01h mov dl,present_position int 10h mov al,[di] ; 出现下一个新字母的数法 add al,7 cmp al,7ah ja convey_letter mov ah,0ah mov bh,00h mov cx,01h int 10h mov [di],al add letter_counter,01h jmp nextcycle convey_letter: sub al,7ah add al,61h mov ah,0ah mov bh,00h mov cx,01h int 10h mov [di],al add letter_counter,01h jmp nextcycle clear_screen 01,01,23,78 mov ah,02h mov bh,00h mov dh,11d mov dl,20d int 10h inc dh inc dh mov ah,02h mov bh,00h int 10hnotkey: mov ah,07h int 21h cmp al,0dh je to_start cmp al,1bh je over jmp notkeyto_start: clear_screen 00,00,24,79 jmp startover: clear_screen 01,01,23,78 mov ah,02h mov bh,00h mov dh,11d mov dl,15h int 10h mov ah,02h mov bh,00h mov dh,13d mov dl,15h int 10h mov ah,07h int 21h mov ah,07h int 21h clear_screen 00,00,24,79 mov ax,4c00h int 21hmain endpcode endsend start

3运行我们编辑的文件◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙ xiaobo welcome you to play ◙ *****Designed by 1wangxiaobo@163.com!***** ^Henan University of Economics and Law^'date:2014/4/24 press Enter key to continue....... ◙ when a letter is dropping,please hit it! ◙ press space key to pause! ◙ press ESC key to return main interface! ◙ press letter 'E' to exit! ◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙运行可执行程序testword.exe,出现菜单主界面,按回车键出现由26个字母组成的乱序行,这时其中任一字母落下,在键盘上敲入该字母,如果输入正确,字母消失;按ESC键返回主界面;按空格见暂停;按‘E’退出。

点击显示全文

  • 怎样培训口才

    好的口才不仅能够清晰的表达观点、展示自我,更是一种非常具有竞争力的能力,那么应该如何培训自己的口才呢?练习胆量。说话时一定要铿锵有力,不能胆怯...

    发布时间:2016-12-15 17:57:19
    138683
  • 【计算机的分类】计算机的特点

    根据计算机的规模和处理能力,国际上通常把计算机分为6大类,为大型主机、小巨型计算机、小型计算机</...

    发布时间:2014-08-20 21:31:33
    952073
  • 如何培训员工

    员工培训是员工了解企业文化、职能背景、工作范围的第一步。通过培训,员工才能更好地了解自己的工作范围、工作模式,才能在今后的工...

    发布时间:2015-07-20 15:22:10
    299858
  • 计算机基础培训

    •了解计算机软件应用•了解计算机网络安全•了解公司电脑使用规范•了解计算机基本组成•了解计算机</...

    发布时间:2015-09-06 09:18:36
    230579
  • 什么是TTT培训?

    TTT就是专门为培训企业各部门主管、内部培训师开设的经典课程。天下伐谋可以▲ 让您在培训师的领域里做得更职...

    发布时间:2015-06-09 17:44:56
    203994
  • 计算机的组装

    许多对计算机有一定了解的人在计算机的选购上会选择组装机。组装机相对于品牌机性价比更高,但是需要自己动手组装硬件,今天就来说说...

    发布时间:2017-08-31 16:24:03
    299019
  • 什么是计算机病毒

    计算机病毒式指编制或在计算机程序中插入的可疑破会计算机功能或毁坏数据、影响计算机使用并能...

    发布时间:2014-09-07 12:52:36
    307049
  • 怎么给老老师培训计算机

    当今世界已经进入信息化时代,但是学校很多老教师还跟不上时代的潮流,对于使用电脑,那都是天书。学校又组织对他们进行培训,对于培训</em...

    发布时间:2016-11-28 15:29:55
    342820
  • 【计算机的分类】计算机的特点

    根据计算机的规模和处理能力,国际上通常把计算机分为6大类,为大型主机、小巨型计算机、小型计算机</...

  • 什么是TTT培训?

    TTT就是专门为培训企业各部门主管、内部培训师开设的经典课程。天下伐谋可以▲ 让您在培训师的领域里做得更职...

  • 怎样培训口才

    好的口才不仅能够清晰的表达观点、展示自我,更是一种非常具有竞争力的能力,那么应该如何培训自己的口才呢?练习胆量。说话时一定要铿锵有力,不能胆怯...

  • 大学里应不应该报名参加校外计算机培训班?

    在这个考证热的时代,在这个信息爆棚的时代,在计算机横行的时代,计算机证书就成了必备装备,虽然能力比证书更重要但证书却是一种认...

  • 如何培训员工

    员工培训是员工了解企业文化、职能背景、工作范围的第一步。通过培训,员工才能更好地了解自己的工作范围、工作模式,才能在今后的工...

今日热点信息
  • 教育培训机构如何提高续班率?

        教育培训机构工作的一个重心就是招生问题。而对于已经招过来的的学生,续班问题却又成了最为重要的问题。道理并不复杂,学生...

    发布时间:2017-09-05 17:01:22
    894168
  • 怎样选择一家好的教育培训机构

    就当前形势看来,大学毕业生逐年增加,导致就业形势愈来愈严峻,不少应届毕业生和往届生都选择了报考公务员、事业单位、医疗卫生系统和教师,竞争力不可谓不强。与此同时,...

    发布时间:2016-07-28 18:01:53
    542520
  • 哪种培训机构比较靠谱?

    不少才毕业的同学在找工作时往往因为实操技能不足而受到用人单位的嫌弃,通过职业培训可以快速提升自己的实操基础以达到用人单位的需求。但是现在市面上...

    发布时间:2017-08-15 18:39:50
    371413
  • 去教育培训机构面试该注意些什么?

    教育培训机构是育人教人的,在这样的部门工作,除了专业对口外,在很多细节方面也要特别注重。因为每一个一细节都代表着教育...

    发布时间:2017-08-22 11:32:34
    202530
  • 如何选择合适的培训机构

    培训机构向朋友咨询,朋友往往可以保证信息的真实性,特别是一些已经参加相关培训的人,听他们说一些注意事项,对自己的选择帮助也会很大的。毕竟我们生...

    发布时间:2015-10-21 17:50:01
    143948
  • 怎样取舍雅思培训机构

    现在,市场上琳琅满目、形形色色的雅思培训机构, 如何选择成为了让不少想要靠培训班提高成绩的考生的一大难题。该怎样取舍雅思<e...

    发布时间:2012-05-12 17:30:21
    547420
精彩推荐
  • 如何零厨艺巧做辣酱肉末茄子如何零厨艺巧做辣酱肉末茄子

    如果你也是一个做菜不知道该放多少盐,总担心自己不会调味的人,那就跟我一起做这道零厨艺基础就可以轻松搞定的辣酱肉末茄子。肉馅 300g茄子 约4...发布时间:2016-08-07 18:58:40120124

  • 职场中参加技能培训考试前需要做好哪些准备?职场中参加技能培训考试前需要做好哪些准备?

    在培训过程中一定要好好的记笔记,对于老师课上讲解的内容就是我们的重中之重。如果在听课过程中遇到问题了,可以与你的小伙伴交流一下,这样不仅能够保...发布时间:2015-03-19 09:21:06210965

  • 亲子厨艺DIY:彩色水饺亲子厨艺DIY:彩色水饺

     ↑4岁零3天的dudu包的饺子:超大个饺子、小扁鱼饺子,还有一个肚子上被切割的烂饺子没摆上去。呵呵 说起亲子厨艺,这个包饺子的命题比红薯豆沙...发布时间:2013-04-25 19:05:59182673

  • 如何让自己厨艺精湛?如何让自己厨艺精湛?

    要想自己厨艺精湛,不光要有一定的烹饪理论知识,还要有丰富的实践经验;更要有一颗热爱烹饪的心;甚至要吃苦耐劳......如何让自己厨艺<...发布时间:2017-05-04 16:59:56122521

  • 零厨艺美食卤白鸭零厨艺美食卤白鸭

        对于厨艺不佳的人来说,食物越简单美味越好,卤味的东西就是最好做了,卤过之后余下的卤汁可以冻在冰箱,下次再加少许的香料和调味料就可以了。...发布时间:2013-11-29 12:15:20189532

  • 家常厨艺——肉炒萝卜丝家常厨艺——肉炒萝卜丝

           胡萝卜分为红萝卜和黄萝卜两种,萝卜含有多种维生素,如维生素A、维生素B1、铁、钙等人体所需的营养万分。也就是人们常说的胡萝卜素。萝卜在所有蔬菜中还...发布时间:2016-07-04 22:56:16101164

  • 出国前孩子要学会的厨艺出国前孩子要学会的厨艺

    来个厨艺速成,让孩子自力更生,时不时犒赏一下自己的中国胃是非常有必要的。电饭锅煮腊味饭自从有了电饭煲,煮饭变成了一件简单的事情。在外求学,做饭...发布时间:2014-12-04 11:29:20318214

  • 旅游纪念之厨艺旅游纪念之厨艺

    出外旅游一趟,遇见以前的朋友,开了家饭馆,生意还不错。 教了我蛮多平时不怎么注意的知识,也属于“收获”吧。做准备工作时,无论是把肉切成块或片,都要切的仔细一点,...发布时间:2011-08-10 17:14:34171142

手机版 | 欢迎来到重庆it培训机构
RSS订阅