⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 well1.asm

📁 这是一个汇编编写得拼图小游戏 带有源码 这可是我一天得劳动果实
💻 ASM
📖 第 1 页 / 共 4 页
字号:
              INT       21H         ;输入一个字符

              CMP       AL,'c'
              JNZ       PD

              LEA       SI,FILE_1
              CALL      FAR PTR WRITEFILE       ;qing top 10
              JMP       GETCHAR1

         PD:  CMP       AL,'n'
              JZ        L1

              CMP       AL,'q'
              JZ        QUIT1


              CMP       AL,'s'
              JNZ       NEXT01
;bianghuan   shang
              CMP       CX,0
              JZ        GETCHAR1
              XCHG      AX,[DI]
              XCHG      AX,[DI-6]
              XCHG      AX,[DI]
              SUB       DI,6
              SUB       CX,1
              ADD       DX,1
              JMP       SHUCHU1
     NEXT01:  CMP       AL,'d'
              JNZ       NEXT11
;bianhuan zuo
              CMP       BX,0
              JZ        GETCHAR1
              XCHG      AX,[DI]
              XCHG      AX,[DI-2]
              XCHG      AX,[DI]
              SUB       DI,2
              SUB       BX,1
              ADD       DX,1
              JMP       SHUCHU1
        ;SHU:  JMP       SHUCHU
     NEXT11:  CMP       AL,'a'
              JNZ       NEXT21
;bianhuan you
              CMP       BX,2
              JZ        GETCHAR1
              XCHG      AX,[DI]
              XCHG      AX,[DI+2]
              XCHG      AX,[DI]
              ADD       DI,2
              ADD       BX,1
              ADD       DX,1
              JMP       SHUCHU1
        ;Q01:  JMP       QUIT1
     NEXT21:  CMP       AL,'w'
              JNE       GETCHAR1
 ;bianhuan xia
              CMP       CX,2
              JZ        GETCHAR1
              XCHG      AX,[DI]
              XCHG      AX,[DI+6]
              XCHG      AX,[DI]
              ADD       DI,6
              ADD       CX,1
              ADD       DX,1
              JMP       SHUCHU1

      QUIT1:
              POPJCQ

              RET
              ENDP


       CODE1  ENDS









;**************************************************************************
; code 2,子程序game2
;****************************************************************************
       CODE2  SEGMENT
              ASSUME    CS:CODE2,DS:DATA
       GAME2  PROC      FAR

              PUSHJCQ


              MOV       SI,OFFSET FILE_2
              CALL      FAR PTR DISPHEROS
              DISP_STRING_TEXT          NEWG,2,60,11,0DH
              DISP_STRING_TEXT          LEFT,3,60,RIGHT-LEFT,0DH
              DISP_STRING_TEXT          RIGHT,4,60,UP-RIGHT,0DH
              DISP_STRING_TEXT          UP,5,60,DOWN-UP,0DH
              DISP_STRING_TEXT          DOWN,6,60,TOPTEN-DOWN,0DH
              DISP_STRING_TEXT          CLEAR,7,60,15,0DH
              DISP_STRING_TEXT          EXI,8,60,NEWG-EXI,0DH
              DISP_STRING_TEXT          TOPTEN,10,60,6,04H
              DISP_STRING_TEXT          NA_STEP,11,60,NUMBERS1-NA_STEP,04H
              DISP_STRING_TEXT          XING,0,3,74,05H
              DISP_STRING_TEXT          XING,24,3,74,05H
              DISP_STRING_TEXT          GAMETWO,2,3,10,30H
              DISP_STRING_TEXT          YOU,9,56,20,0DH

              LEA       DI,SHU
              PLAY_ALLNUM       DI,1,55

   NEWGAME2:  LEA       DI,NUMBERS2 ; LEA       DI,NUMBERS2
              MOV       CX,32
      NEXT2:  MOV       BYTE PTR [DI],0
              INC       DI
              LOOP      NEXT2

              DISP_STRING_TEXT          LOAD,12,20,10,07H
              SUIJI2    N8
              SUIJI2    N1
              SUIJI2    N2
              SUIJI2    N7
              SUIJI2    N3
              SUIJI2    N4
              SUIJI2    N5
              SUIJI2    N6
              SUIJI2    N91
              SUIJI2    N10
              SUIJI2    N14
              SUIJI2    N12
              SUIJI2    N15
              SUIJI2    N13
              SUIJI2    N11

              LEA       AX,N9
              LEA       DI,NUMBERS2
              MOV       [DI+30],AX  ;设置出始的longge位置
              MOV       BX,3
              MOV       CX,3        ;设置空格的出始位置
              MOV       DX,0        ;记录移动的次数

              ADD       DI,30       ;设置di的出始位置

              DISP_STRING_TEXT          KO,12,20,10,07H
    SHUCHU2:  LEA       SI,NUMBERS2 ;输出16个数字
              PUSH      DI
              PUSH      DX
              PLAY_ALLNUM       [SI],3,14
              PLAY_ALLNUM       [SI+2],3,22
              PLAY_ALLNUM       [SI+4],3,30
              PLAY_ALLNUM       [SI+6],3,38
              PLAY_ALLNUM       [SI+8],8,14
              PLAY_ALLNUM       [SI+10],8,22
              PLAY_ALLNUM       [SI+12],8,30
              PLAY_ALLNUM       [SI+14],8,38
              PLAY_ALLNUM       [SI+16],13,14
              PLAY_ALLNUM       [SI+18],13,22
              PLAY_ALLNUM       [SI+20],13,30
              PLAY_ALLNUM       [SI+22],13,38
              PLAY_ALLNUM       [SI+24],18,14
              PLAY_ALLNUM       [SI+26],18,22
              PLAY_ALLNUM       [SI+28],18,30
              PLAY_ALLNUM       [SI+30],18,38           ;输出完毕
              POP       DX
              POP       DI


   PANDUAN2:  CALL      FAR PTR DISP_DX
              DISP_STRING_TEXT          STEP,1,45,8,0DH         ;输出DX

              MOV       AL,0
              CALL      FAR PTR B_PANDUAN2
              CMP       AL,1

              JNZ       GETCHAR2

              DISP_STRING_TEXT          SEC,22,3,KONG-SEC,01H
              DISP_STRING_TEXT          PRESS,22,20,LOAD-PRESS,01H


              PUSH      SI
              MOV       SI,OFFSET FILE_2
              CALL      FAR PTR FILE0
              POP       SI
              ;DISP_STRING_TEXT          KONG,22,3,45,00H

          N:  JMP       NEWGAME2

   GETCHAR2:

              MOV       AH,07H
              INT       21H         ;输入一个字符

              CMP       AL,'c'
              JNZ       ZHUAN
              LEA       SI,FILE_2
              CALL      FAR PTR WRITEFILE
              JMP       GETCHAR2

      ZHUAN:  CMP       AL,'n'
              JZ        N

              CMP       AL,'q'
              JZ        Q02

              CMP       AL,'s'
              JNZ       NEXT02
;bianghuan   shang
              CMP       CX,0
              JZ        GETCHAR2
              XCHG      AX,[DI]
              XCHG      AX,[DI-8]
              XCHG      AX,[DI]
              SUB       DI,8
              SUB       CX,1
              ADD       DX,1
              JMP       SHUCHU2
     NEXT02:  CMP       AL,'d'
              JNZ       NEXT12
;bianhuan zuo
              CMP       BX,0
              JZ        GETCHAR2
              XCHG      AX,[DI]
              XCHG      AX,[DI-2]
              XCHG      AX,[DI]
              SUB       DI,2
              SUB       BX,1
              ADD       DX,1
              JMP       SHUCHU2
        ;SHU:  JMP       SHUCHU
     NEXT12:  CMP       AL,'a'
              JNZ       NEXT22
;bianhuan you
              CMP       BX,3
              JZ        GETCHAR2
              XCHG      AX,[DI]
              XCHG      AX,[DI+2]
              XCHG      AX,[DI]
              ADD       DI,2
              ADD       BX,1
              ADD       DX,1
              JMP       SHUCHU2
        Q02:  JMP       QUIT2
     NEXT22:  CMP       AL,'w'
              JNE       GETCHAR2
 ;bianhuan xia
              CMP       CX,3
              JZ        GETCHAR2
              XCHG      AX,[DI]
              XCHG      AX,[DI+8]
              XCHG      AX,[DI]
              ADD       DI,8
              ADD       CX,1
              ADD       DX,1
              JMP       SHUCHU2

      QUIT2:
              POPJCQ

              RET
              ENDP


       CODE2  ENDS



;*************************************************************************
;file
;*************************************************************************

       CODE4  SEGMENT
              ASSUME    CS:CODE4,DS:DATA

       FILE0  PROC      FAR
              PUSHJCQ


             ; CALL      GETRATE
              MOV       AH,1
              AND       CH,0EFH
              INT       10H         ;显示光标

              MOV       BH,0
              MOV       BL,07H
              INT       10H         ;

              PLACECURSOR       22,45

              MOV       DX,OFFSET FNAME
              MOV       AH,0AH
              INT       21H
              ;CLEARSCREENH      22,3,22,54

              DISP_STRING_TEXT          KONG,22,3,54,07H

              CALL      FAR PTR GETNAME
              CALL      FAR PTR COHEROS
              CALL      FAR PTR DISPHEROS

              MOV       CX,10
              LEA       SI,HNAME
        HNA:  MOV       BYTE PTR [SI],' '
              INC       SI
              LOOP      HNA

              POPJCQ
              RET
       FILE0  ENDP
       CODE4  ENDS
  ;********************************************************************8
;qing top 10
;***********************************************************************



       CODE5  SEGMENT
              ASSUME    CS:CODE5,DS:DATA
   WRITEFILE  PROC      FAR
              PUSHJCQ
              MOV       DX,SI
              MOV       AL,02H
              MOV       AH,3DH
              INT       21H
              PUSH      AX

              POP       BX
              PUSH      BX
              MOV       CX,160
              LEA       DX,FILE_DA
              MOV       AH,40H
              INT       21H         ;xie file

              POP       BX
              MOV       AH,3EH
              INT       21H         ;guanbi  file

              CALL      FAR PTR DISPHEROS

              POPJCQ
              RET
   WRITEFILE  ENDP
       CODE5  ENDS





;******************************************************************************
;zichengxu    qingping  panduan yanshi   disp string code
;******************************************************************************
       CODE3  SEGMENT
              ASSUME    CS:CODE3,DS:DATA


     GETNAME  PROC      FAR
              PUSH      SI
              PUSH      DI
              PUSH      CX
              PUSH      DX
              PUSH      AX


              MOV       SI,OFFSET FNAME+2
              MOV       DI,OFFSET HNAME
              MOV       CX,0
              MOV       CL,FNAME+1
     NEXTNA:
              ;MOVSB
              ;CLD
              XCHG      AL,[SI]
              XCHG      AL,[DI]
              XCHG      AL,[SI]
              INC       SI
              INC       DI
              LOOP      NEXTNA

              ;MOV       DX,OFFSET HNAME
              ;MOV       AH,09H
              ;INT       21H

              POP       AX
              POP       DX
              POP       CX
              POP       DI
              POP       SI
              RET
     GETNAME  ENDP

      ;-----------------------------------------------------------
      ;name :correctheros
      ;-----------------------------------------------------------
     COHEROS  PROC      FAR
              PUSHJCQ
              ;CMP       AX,1
              ;JNZ       H2
              ;MOV       DX,OFFSET FILE_1        ;打开文件,读写方式
              ;JMP       H3
         ;H2:  MOV       DX,OFFSET FILE_2
              MOV       DX,SI
         H3:  MOV       AL,02H
              MOV       AH,3DH
              INT       21H

              MOV       SI,AX       ;读文件到缓冲区rbuffer
              MOV       BX,AX
              MOV       CX,160
              MOV       DX,OFFSET RBUFFER
              MOV       AH,3FH
              INT       21H

              PUSH      SI
              PUSH      BX
              MOV       BH,STEP+5
              MOV       AH,STEP+6
              MOV       AL,STEP+7
              MOV       CX,10
              LEA       SI,RBUFFER+13

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -