使用汇编语言编写一条简单的贪吃蛇的实现

 更新时间:2020年01月18日 11:39:54   作者:小-立子  
这篇文章主要介绍了使用汇编语言编写一条简单的贪吃蛇的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

本文中的汇编语言是基于x86芯片,下面给出代码:

;TITLE  GAME4TH  
PAGE 60,132
STSEG SEGMENT
    DB 64 DUP (0)
STSEG ENDS
;-----------------------------------
DTSEG SEGMENT
DATAH DB  10H,10H,10H,10H,10H,10H,10H,10H,10H
DATAL DB  20H,21H,22H,23H,24H,25H,26H,27H,28H
DTSEG ENDS
CR   EQU 0DH
LF   EQU 0AH
;------------------------------------
CDSEG SEGMENT 
MAIN PROC FAR
   ASSUME CS:CDSEG,DS:DTSEG,SS:STSEG
   MOV AX,DTSEG
   MOV DS,AX
   MOV AX,0600H
   MOV BH,00011110B
   MOV CX,0
   MOV DH,18H
   MOV DL,04FH
   INT 10H
   
FISH: MOV AX,0600H
   MOV BH,00011110B
   MOV CX,0
   MOV DH,18H
   MOV DL,04FH
   INT 10H
   MOV AH,02 
   MOV BH,00   
   MOV SI,OFFSET DATAH
   MOV DI,OFFSET DATAL   
   MOV DH,[SI]
   MOV DL,[DI]
   INT 10H
   MOV AX,0201H
   MOV DL,'+'
   INT 21H
   MOV AH,02 
   MOV BH,00
   MOV DH,[SI]+1
   MOV DL,[DI]+1
   INT 10H 
   MOV AX,0201H
   MOV DL,'#'
   INT 21H
   MOV AH,02 
   MOV BH,00
   MOV DH,[SI]+2
   MOV DL,[DI]+2
   INT 10H 
   MOV AX,0201H
   MOV DL,'#'
   INT 21H
   MOV AH,02 
   MOV BH,00
   MOV DH,[SI]+3
   MOV DL,[DI]+3
   INT 10H 
   MOV AX,0201H
   MOV DL,'#'
   INT 21H
   MOV AH,02 
   MOV BH,00
   MOV DH,[SI]+4
   MOV DL,[DI]+4
   INT 10H 
   MOV AX,0201H
   MOV DL,'#'
   INT 21H
   MOV AH,02 
   MOV BH,00
   MOV DH,[SI]+5
   MOV DL,[DI]+5
   INT 10H 
   MOV AX,0201H
   MOV DL,'#'
   INT 21H
   MOV AH,02 
   MOV BH,00
   MOV DH,[SI]+6
   MOV DL,[DI]+6
   INT 10H 
   MOV AX,0201H
   MOV DL,'#'
   INT 21H
   MOV AH,02 
   MOV BH,00
   MOV DH,[SI]+7
   MOV DL,[DI]+7
   INT 10H 
   MOV AX,0201H
   MOV DL,'#'
   INT 21H
   MOV AH,02 
   MOV BH,00
   MOV DH,[SI]+8
   MOV DL,[DI]+8
   INT 10H 
   MOV AX,0201H
   MOV DL,'>'
   INT 21H           
   
LOOP1:MOV AH,0   ;循环输入
   MOV AL,0
   INT 16H
   CMP AH,72
   JE  UP        
   CMP AH,80
   JE  DOWN  
   CMP AH,77
   JE  RIGHT
   CMP AH,75
   JE  LEFT 
    
UP:  MOV SI,OFFSET DATAH
   MOV DI,OFFSET DATAL   
   MOV DH,[SI]+8
   MOV DL,[DI]+8
   MOV CH,DH
   MOV CL,DL
   DEC DH
   MOV [SI]+8,DH
   MOV [DI]+8,DL 
   JMP BACK      
        
DOWN: MOV SI,OFFSET DATAH
   MOV DI,OFFSET DATAL   
   MOV DH,[SI]+8
   MOV DL,[DI]+8
   MOV CH,DH
   MOV CL,DL
   INC DH
   MOV [SI]+8,DH
   MOV [DI]+8,DL 
   JMP BACK     
 
LEFT: MOV SI,OFFSET DATAH
   MOV DI,OFFSET DATAL   
   MOV DH,[SI]+8
   MOV DL,[DI]+8
   MOV CH,DH
   MOV CL,DL
   DEC DL
   MOV [SI]+8,DH
   MOV [DI]+8,DL 
   JMP BACK     
 
RIGHT:MOV SI,OFFSET DATAH
   MOV DI,OFFSET DATAL   
   MOV DH,[SI]+8
   MOV DL,[DI]+8
   MOV CH,DH
   MOV CL,DL
   INC DL
   MOV [SI]+8,DH
   MOV [DI]+8,DL 
   JMP BACK
      
BACK: MOV DH,[SI]+7
   MOV DL,[DI]+7 
   MOV [SI]+7,CH
   MOV [DI]+7,CL 
   MOV CH,DH
   MOV CL,DL
   MOV DH,[SI]+6
   MOV DL,[DI]+6 
   MOV [SI]+6,CH
   MOV [DI]+6,CL 
   MOV CH,DH
   MOV CL,DL
   MOV DH,[SI]+5
   MOV DL,[DI]+5 
   MOV [SI]+5,CH
   MOV [DI]+5,CL 
   MOV CH,DH
   MOV CL,DL
   MOV DH,[SI]+4
   MOV DL,[DI]+4 
   MOV [SI]+4,CH
   MOV [DI]+4,CL 
   MOV CH,DH
   MOV CL,DL
   MOV DH,[SI]+3
   MOV DL,[DI]+3 
   MOV [SI]+3,CH
   MOV [DI]+3,CL 
   MOV CH,DH
   MOV CL,DL 
   MOV DH,[SI]+2
   MOV DL,[DI]+2 
   MOV [SI]+2,CH
   MOV [DI]+2,CL 
   MOV CH,DH
   MOV CL,DL
   MOV DH,[SI]+1
   MOV DL,[DI]+1 
   MOV [SI]+1,CH
   MOV [DI]+1,CL 
   MOV CH,DH
   MOV CL,DL 
   MOV DH,[SI]
   MOV DL,[DI] 
   MOV [SI],CH
   MOV [DI],CL 
   MOV CH,DH
   MOV CL,DL
   JMP FISH   
   
MAIN ENDP 
CDSEG ENDS    
   END MAIN

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 汇编语言中的函数调用参数传递及全局与局部变量与“基址”

    汇编语言中的函数调用参数传递及全局与局部变量与“基址”

    这篇文章主要介绍了汇编眼中的函数调用参数传递以及全局与局部变量与“基址”,本文通过图文并茂的形式给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • 汇编语言LDR指令和LDR伪指令详解

    汇编语言LDR指令和LDR伪指令详解

    这篇文章主要介绍了汇编语言LDR指令和LDR伪指令详解,伪指令是用来自动拆分代码值的,会把一条语句拆分成多条语句,本文结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-01-01
  • 汇编语言指令大全 X86和X87汇编指令大全(带注释)

    汇编语言指令大全 X86和X87汇编指令大全(带注释)

    汇编指令集太多,如果不用就会忘记,所以将i处理器官方的指令集大全写到博客上,有需要的人可以参考一下
    2021-10-10
  • 汇编语言Debug命令详解教程

    汇编语言Debug命令详解教程

    这篇文章主要为大家介绍了汇编语言Debug命令的教程,文中对Debug的命令进行了全面的讲解有需要的朋友可以借鉴参考共同学习下,希望能够有所帮助
    2021-11-11
  • 汇编语言 输入10个数排序并输出的实现

    汇编语言 输入10个数排序并输出的实现

    这篇文章主要介绍了汇编语言 输入10个数排序并输出的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • 汇编语言中test和cmp有什么区别

    汇编语言中test和cmp有什么区别

    汇编语言(assembly language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。这篇文章主要介绍了汇编语言中test和cmp有什么区别,需要的朋友可以参考下
    2020-01-01
  • 详解如何在Mac上用汇编语言写HelloWorld

    详解如何在Mac上用汇编语言写HelloWorld

    这篇文章主要介绍了详解如何在Mac上用汇编语言写HelloWorld,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • UEFI开发实战用户交互界面基础说明

    UEFI开发实战用户交互界面基础说明

    这篇文章主要为大家介绍了UEFI开发实战用户交互界面的基础说明,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • 汇编语言:x86汇编指令大全及其注意事项

    汇编语言:x86汇编指令大全及其注意事项

    用最精炼的语言,记录汇编语言中所有常用或不常用或极其重要的汇编指令及其注意事项,以方便自己和读者进行查阅,如有错误和不足请在评论区指出
    2021-10-10
  • 汇编语言程序设计之根据输入改变屏幕颜色的代码

    汇编语言程序设计之根据输入改变屏幕颜色的代码

    这篇文章主要介绍了汇编语言中的根据输入改变屏幕颜色的代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03

最新评论