日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

8086汇编贪吃蛇(随机食物+速度递增)

發布時間:2024/4/18 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 8086汇编贪吃蛇(随机食物+速度递增) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
基于8086實現的貪吃蛇 [cpp]?view plaincopy
  • assume?cs:code,ds:data??
  • ??
  • data?segment??
  • ????dw?200?dup(0)???;--蛇身坐標??
  • ????dw?0,0,0????????;--存儲原始9號中斷??
  • data?ends??
  • ??
  • stack?segment???
  • ????db?100?dup(0)??
  • stack?ends??
  • ??
  • code?segment??
  • ??
  • start:??
  • ;;-----------------將原始的9號中斷存在data斷的最后,再把9號地址換掉到offset?int9??
  • ????mov?ax,0??
  • ????mov?es,ax??
  • ??
  • ????mov?ax,data??
  • ????mov?ds,ax??
  • ??
  • ????push?es:[9*4]??
  • ????pop?ds:[400]??
  • ??
  • ????push?es:[9*4+2]??
  • ????pop?ds:[402]??
  • ??????
  • ????mov?word?ptr?es:[9*4],offset?int9??
  • ????mov?word?ptr?es:[9*4+2],cs??
  • ??
  • ;;------------------??
  • ????mov?ax,stack??
  • ????mov?ss,ax??
  • ????mov?sp,100??
  • ??
  • ????????mov?ax,0b800h??
  • ????????mov?es,ax??
  • ;;-----------------snake的初始化??
  • ????????mov?bx,0??
  • ??
  • ????????mov?cx,10??
  • s:??????mov?ds:[bx],cx??
  • ????????add?bx,2??
  • ????????loop?s??
  • ????mov?word?ptr?ds:[404],9??
  • ??
  • ????call?putfood??
  • ????mov??bx,0001h??
  • ????mov?cx,60000??
  • s1:??
  • ????call?movnext??
  • ????call?delay??
  • ??
  • ????????loop?s1??
  • ??
  • ;;------------恢復中斷向量,程序結束??
  • end_snake:??
  • ????mov?ax,0??
  • ????mov?es,ax??
  • ??
  • ????push?ds:[400]??
  • ????pop?es:[9*4]??
  • ????push?ds:[402]??
  • ????pop?es:[9*4+2]??
  • ??
  • ????mov?ax,4c00h??
  • ????????int?21h??
  • ;------------------------------壁障=遇到墻壁或者咬到自己就退出??
  • die_or_not:??
  • ????cmp?dl,-1??
  • ????je?die??
  • ??
  • ????cmp?dl,80??
  • ????je?die??
  • ??
  • ????cmp?dh,-1??
  • ????je?die??
  • ??
  • ????cmp?dh,50??
  • ????je?die??
  • ??
  • ????call?putchar??
  • ????cmp?byte?ptr?es:[di],0fh??
  • ????je?die??
  • ??
  • ????jmp?no_die??
  • die:??
  • ????jmp?end_snake??
  • ??
  • no_die:??
  • ????ret??
  • ;------------------------------移動蛇身的??
  • movnext:??
  • ????????push?dx??
  • ????????push?cx??
  • ????????push?ax??
  • ??
  • ????????mov?si,0??
  • ????????mov?dx,ds:[si]??
  • ????mov?ax,dx??
  • cli??
  • ????add?dh,bh??
  • ????add?dl,bl??
  • sti??
  • ????call?die_or_not??
  • ????????mov??ds:[si],dx??
  • ??
  • ????call?putchar??
  • ????cmp?word?ptr?es:[di],0403h??
  • ????mov?word?ptr?es:[di],0A0fh??
  • ????jne?pc_go??
  • ??
  • ????mov?di,ds:[404]??
  • ????add?di,di??
  • ??
  • ????push?ds:[di]??
  • ????pop?ds:[di+2]??
  • ????inc?word?ptr?ds:[404]??
  • ????call?putfood??
  • pc_go:??
  • ??
  • mn1:??????
  • ????add?si,2??
  • ????cmp?word?ptr?ds:[si],0??
  • ????je?mn_ok??
  • ??
  • ????mov?dx,ds:[si]??
  • ????call?putchar??
  • ????mov?word?ptr?es:[di],0??
  • ??
  • ????????mov?dx,ax??
  • ????call?putchar??
  • ????mov?word?ptr?es:[di],0A0fh??
  • ??
  • ????mov?ax,ds:[si]??
  • ????????mov?ds:[si],dx??
  • ????jmp?mn1??
  • ??
  • mn_ok:??pop?ax??
  • ????????pop?cx??
  • ????????pop?dx??
  • ret??
  • ;;----------int9-----------------上48?下50??左4B???右4D??
  • int9:??
  • ????push?ax??
  • ????push?es??
  • ????push?cx??
  • ??
  • ????in?al,60h??
  • ????pushf??
  • ??????
  • ????call?dword?ptr?ds:[400]??
  • ????cmp?bl,0??
  • ????je?zy??
  • ??????
  • sx:??
  • ????cmp?al,48h??
  • ????jne?int9x1??
  • ????mov?bx,0ff00h?????
  • int9x1:??
  • ????cmp?al,50h??
  • ????jne?int9x2??
  • ????mov?bx,0100h??
  • ??
  • int9x2:?jmp?int9ok??
  • ??
  • zy:??
  • ????cmp?al,4bh??
  • ????jne?int9x3??
  • ????mov?bx,00ffh??????
  • int9x3:???
  • ????cmp?al,4Dh??
  • ????jne?int9x4??
  • ????mov?bx,0001h??
  • int9x4:??
  • ??
  • int9ok:??
  • ????pop?cx??
  • ????pop?es??
  • ????pop?ax??
  • ??
  • ????iret??
  • int9_end:nop??
  • ;--------------------------------??
  • putchar:??
  • ????push?dx??
  • ????push?ax??
  • ??
  • ????mov?ax,00a0h??
  • ????mul?dh??
  • ????mov?dh,0??
  • ????add?dl,dl??
  • ????add?ax,dx??
  • ????mov?di,ax??
  • ??
  • ????pop?ax??
  • ????pop?dx??
  • ret??
  • ;---------------------------------??
  • delay:??
  • ????push?cx??
  • ??
  • ????mov?ch,0bh??
  • ??
  • ????cmp?word?ptr?ds:[404],24??
  • ????ja?level4??
  • ????????cmp?word?ptr?ds:[404],20??
  • ????ja?level3??
  • ????cmp?word?ptr?ds:[404],15??
  • ????ja?level2??
  • ????cmp?word?ptr?ds:[404],12??
  • ????ja?level1??
  • ??
  • ????jmp?normal??
  • ??
  • level4:??
  • ????shr?ch,1??
  • ????shr?ch,1??
  • level3:??
  • ????shr?ch,1??
  • ??
  • level2:??
  • ????shr?ch,1??
  • ??
  • level1:?shr?ch,1??
  • ??
  • normal:???
  • ??
  • ????mov?cl,0ffh??
  • ????dn1:??
  • ????push?cx??
  • ????mov?cx,0ffffh???
  • ????dn2:loop?dn2??
  • ??????
  • ????pop?cx???
  • ????loop?dn1??
  • ????pop?cx??
  • ret??
  • ;;-----------------------------------根據時間變化隨機產生食物??
  • ??
  • putfood:??
  • ????????push?ax??
  • ????????push?dx??
  • ????push?cx??
  • ????push?bx??
  • put_again:??
  • ??
  • ????mov?al,0??
  • ????out?70h,al??
  • ????in?al,71h??
  • ??????
  • ????mov?ah,al??
  • ????mov?cl,4??
  • ????shr?ah,cl????;秒數十位在ah??個位在al??
  • ??
  • ????and?al,00001111b??
  • ????push?ax??
  • ??????
  • ????mov?ah,0??
  • ??????
  • ????mov?dh,8??
  • ????mul?dh??
  • ????mov?dl,al??
  • ??????
  • ????pop?ax??
  • ??
  • ????sub?al,al??
  • ????mov?al,ah??
  • ????add?al,dl??
  • ??
  • ????mov?cl,23??
  • ????div?cl??
  • ??
  • ????mov?dh,ah??
  • ;;-------------------防止隨機產生的食物,在蛇身上??
  • ????mov?cx,ds:[404]??
  • ????mov?bx,0??
  • pt1:????cmp?word?ptr?ds:[bx],dx??
  • ????je?put_again??
  • ????add?bx,2??
  • ????loop?pt1??
  • ;;-------------------??
  • ????call?putchar??
  • ????mov?word?ptr?es:[di],0403h??
  • ??
  • pf_end:?pop?bx??
  • ????pop?cx??
  • ????????pop?dx??
  • ????????pop?ax??
  • ret??
  • ??
  • code?ends??
  • end?start?
  • 總結

    以上是生活随笔為你收集整理的8086汇编贪吃蛇(随机食物+速度递增)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。