汇编语言写的贪吃蛇小游戏源代码_第1页
汇编语言写的贪吃蛇小游戏源代码_第2页
汇编语言写的贪吃蛇小游戏源代码_第3页
汇编语言写的贪吃蛇小游戏源代码_第4页
汇编语言写的贪吃蛇小游戏源代码_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

DATASEGMENTdw0,0snkdb1blkdb32fooddb3tal1db4tal2db2adrsdb5lendb?pstdb?addrsdw?frowdb?fcoldb?hwrtdb?gmovdb'gameoverpressrtorestartpressqtoquit$'score1db'score:$'score2db?score0db1zerodb48writerdb'Developer:Geniusdot$'emaildb':geniusdotgmail.$'msg1db'Thewaytoplaythegame:$'waydb'presswtoup,pressstodown,pressatoleft,pressdtoright$'msgdb'Pressanykey(excepta,s,d,w)tostart$'DATAENDSSTACKSEGMENTstackdb200dup(0)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKstart:movax,datamovds,axmovax,0moves,axmovfrow,10movfcol,6movdh,10movdl,26movah,2movbh,0int10hmovah,9leadx,msg1int21hmovdh,11movdl,7movah,2movbh,0int10hmovah,9leadx,wayint21hmovdh,12movdl,20movah,2movbh,0int10hmovah,9leadx,msgint21hmovah,0int16hmovah,6moval,0movch,0movcl,0movdh,24movdl,79movbh,10int10hmovdh,0movdl,0movah,2movbh,0int10hmovah,9leadx,score1int21hmovdl,15movah,2movbh,0int10hmovah,9leadx,writerint21hmovah,9leadx,emailint21hmovscore2,48pushes:[9*4];将原int9入口地址保存popds:[0]pushes:[9*4+2]popds:[2]movwordptres:[9*4],offsetint9;更改中断向量表moves:[9*4+2],csjmpaawritemacrorow,col,cnt;宏定义用于向当前光标处输出字符pushbxpushcxpushdxmovdh,rowmovdl,colmovah,2movbh,0int10hmovah,9movbl,11movcx,1leadi,cnt;50moval,[di]int10hpopdxpopcxpopbxendmreadhmacrorow,col;宏定义用于读出当前光标处字符pushdxpushaxpushbxmovdh,rowmovdl,colmovah,2movbh,0int10hmovah,08hint10hmovpst,alpopbxpopaxpopdxendmwnearmacro;宏定义只用在readcg宏中当readcg的所有判断都不成立调用此宏localwnext1localwnext2localwnext3localwnext4pushdxdecdhreadhdh,dlcmppst,1jnewnext1writedh,dl,tal2jmpwnext4wnext1:incdhdecdlreadhdh,dlcmppst,1jnewnext2writedh,dl,tal2jmpwnext4wnext2:incdhincdlreadhdh,dlcmppst,1jnewnext3writedh,dl,tal2jmpwnext4wnext3:decdhincdlreadhdh,dlcmppst,1jnewnext4writedh,dl,tal2wnext4:popdxendmreadcgmacrorow,col;宏定义用于改变判断出来的字符localtnup,tnup1,tnup2,tnlf,tnlf1,tnlf2,tndn,tndn1,tndn2,tnrt,tnrt1,tnrt2,gooutpushbxpushaxpushdxwritedh,dl,tal1decrowreadhdh,dlcmppst,4jnetnup1jmptnup2tnup1:jmpnearptrtnuptnup2:writedh,dl,blkincdhincdhreadhdh,dlcmppst,1jnetnupwritedh,dl,tal2jmpnearptrgoouttnup:popdxpushdxdeccolreadhdh,dlcmppst,4jnetnlf1jmptnlf2tnlf1:jmpnearptrtnlftnlf2:writedh,dl,blkincdlincdlreadhdh,dlcmppst,1jnetnlfwritedh,dl,tal2jmpnearptrgoouttnlf:popdxpushdxincrowreadhdh,dlcmppst,4jnetndn1jmptndn2tndn1:jmpnearptrtndntndn2:writedh,dl,blkdecdhdecdhreadhdh,dlcmppst,1jnetndnwritedh,dl,tal2jmpnearptrgoouttndn:popdxpushdxinccolreadhdh,dlcmppst,4jnetnrt1jmptnrt2tnrt1:jmpnearptrtnrttnrt2:writedh,dl,blkdecdldecdlreadhdh,dlcmppst,1jnetnrtwritedh,dl,tal2jmpnearptrgoouttnrt:popdxpushdxwneargoout:popdxpopaxpopbxendmaddone:;此标号功能是将蛇身增加一pushdxincscore2movdh,1movdl,0movcx,23cmpad1:pushcxmovcx,79cmpad2:readhdh,dlcmppst,2jnenextad3jmpnextad4nextad3:jmpnearptrnextadnextad4:writedh,dl,snkdecdhreadhdh,dlcmppst,4jnenatupwritedh,dl,tal2decdhwritedh,dl,tal1jmpoutonatup:incdhdecdlreadhdh,dlcmppst,4jnenatlfwritedh,dl,tal2decdlwritedh,dl,tal1jmpoutonatlf:incdhincdlreadhdh,dlcmppst,4jnenatdnwritedh,dl,tal2incdhwritedh,dl,tal1jmpoutonatdn:decdhincdlreadhdh,dlcmppst,4jnenatrtwritedh,dl,tal2incdlwritedh,dl,tal1natrt:outo:popcxjmpnearptrendadnextad:incdljmpnextad2chgad2:jmpnearptrcmpad2nextad2:loopchgad2subdl,79incdhpopcxjmpnextad1chgad1:jmpnearptrcmpad1nextad1:loopchgad1endad:popdxjmpnearptrcrtfaa:;从这开始产生最原始的蛇movaddrs,offsetturnrightmovdh,10movdl,1movcx,3writedh,dl,tal1incdlwritedh,dl,tal2wrt:incdlwritedh,dl,snkloopwrtmovlen,6movax,0jmpwrt1ovflw:;当蛇碰壁或自身转到此游戏结束movah,6moval,0movch,0movcl,0movdh,24movdl,79movbh,7int10hmovdh,17movdl,17movah,2movbh,0int10hmovah,9leadx,gmovint21hmovax,0;恢复int9中断moves,axpushds:[0]popes:[9*4]pushds:[2]popes:[9*4+2]stop:movah,0int16hcmpal,'r'jeaa1jmpaa2aa1:jmpnearptrstartaa2:cmpal,'q'jnestopjmpnearptrexitwrt1:;此处蛇行走过程的无限循环calldlypushdxincdhcmpdh,25jeovflwincdlcmpdl,80jeovflwpopdxpushdxdecdhcmpdh,0jeovflwdecdlcmpdl,-1jeovflwpopdxpushdxleaax,turnrightcmpaddrs,axjnetonxt2incdlreadhdh,dlcmppst,1jetonxt1cmppst,2jetonxt1cmppst,4jetonxt1jmptonxt2tonxt1:jmpovflwtonxt2:popdxpushdxleaax,turnupcmpaddrs,axjnetonxt4decdhreadhdh,dlcmppst,1jetonxt3cmppst,2jetonxt3cmppst,4jetonxt3jmptonxt4tonxt3:jmpovflwtonxt4:popdxpushdxleaax,turndowncmpaddrs,axjnetonxt6incdhreadhdh,dlcmppst,1jetonxt5cmppst,2jetonxt5cmppst,4jetonxt5jmptonxt6tonxt5:jmpovflwtonxt6:popdxpushdxleaax,turnbackcmpaddrs,axjnetonxt8decdlreadhdh,dlcmppst,1jetonxt7cmppst,2jetonxt7cmppst,4jetonxt7jmptonxt8tonxt7:jmpovflwtonxt8:popdxjmpnextacrtf1:jmpnearptraddonecrtf:callrand1callrand2incfrowmovah,frowmoval,fcolpushdxmovdh,1movdl,0pushcxmovcx,23check1:pushcxmovcx,79check2:readhdh,dlcmppst,1jenextncmppst,2jenextncmppst,4jenextnjmpnextnnnextn:cmpax,dxjecrtfnextnn:incdlloopcheck2incdhsubdl,79popcxloopcheck1popcxpopdxwritefrow,fcol,foodnexta:movah,frowmoval,fcolcmpax,dxjecrtf12jmpcrtf13crtf12:jmpnearptrcrtf1crtf13:pushdxcmpscore2,58jlnormalmovscore2,49incscore0normal:movdh,0movdl,8writedh,dl,score2adddl,score0writedh,dl,zeropopdxcmpadrs,17jejmp1cmpadrs,145jejmp1cmpadrs,31jejmp2cmpadrs,159jejmp2cmpadrs,32jejmp3cmpadrs,160jejmp3cmpadrs,30jejmp4cmpadrs,158jejmp4jmpaddrsjmp1:leaax,turndowncmpax,addrsjejmp2movaddrs,offsetturnupjmpnearptrturnupjmp2:leaax,turnupcmpax,addrsjejmp1movaddrs,offsetturndownjmpnearptrturndownjmp3:leaax,turnbackcmpax,addrsjejmp4movaddrs,offsetturnrightjmpnearptrturnrightjmp4:leaax,turnrightcmpax,addrsjejmp3movaddrs,offsetturnbackjmpnearptrturnbackturnright:;此处实现蛇向左走pushdxmovdh,1movdl,0movcx,23cmpr1:pushcxmovcx,79cmpr2:readhdh,dlcmppst,2jenextr4jmpnearptrnextrnextr4:readcgdh,dlpopcxjmpnearptrendrnextr:incdljmpnextr2chgr2:jmpnearptrcmpr2nextr2:loopchgr2subdl,79incdhpopcxjmpnextr1chgr1:jmpnearptrcmpr1nextr1:loopchgr1endr:popdxincdlwritedh,dl,snkjmpnearptrwrt1turnup:;此处实现蛇向上走pushdxmovdh,1movdl,0movcx,23cmpu1:pushcxmovcx,79cmpu2:readhdh,dlcmppst,2jnenextu3jmpnextu4nextu3:jmpnearptrnextunextu4:readcgdh,dlpopcxjmpnearptrendunextu:incdljmpnextu2chgu2:jmpnearptrcmpu2nextu2:loopchgu2subdl,79incdhpopcxjmpnextu1chgu1:jmpnearptrcmpu1nextu1:loopchgu1endu:popdxdecdhwritedh,dl,snkjmpnearptrwrt1turndown:;此处实现蛇向下走pushdxmovdh,1movdl,0movcx,23cmpd1:pushcxmovcx,79cmpd2:readhdh,dlcmppst,2jnenextd3jmpnextd4nextd3:jmpnearptrnextdnextd4:readcgdh,dlpopcxjmpnearptrenddnextd:incdljmpnextd2chgd2:jmpnearptrcmpd2nextd2:loopchgd2subdl,79incdhpopcxjmpnextd1chgd1:jmpnearptrcmpd1nextd1:loopchgd1endd:popdxincdhwritedh,dl,snkjmpnearptrwrt1turnback:;此处实现蛇向右走pushdxmovdh,1movdl,0movcx,23cmpb1:pushcxmovcx,79cmpb2:readhdh,dlcmppst,2jnenextb3jmpnextb4nextb3:jmpnearptrnextbnextb4:readcgdh,dlpopcxjmpnearptrendbnextb:incdljmpnextb2chgb2:jmpnearptrcmpb2nextb2:loopchgb2subdl,79incdhpopcxjmpnextb1chgb1:jmpnearptrcmpb1nextb1:loopchgb1endb:popdxdecdlwritedh,dl,snkjmpnearptrwrt1exit:movax,0;恢复int9中断moves,axpushds:[0]popes:[9*4]pushds:[2]popes:[9*4+2]movah,4chint21hint9

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论