汇编网首页登录博客注册
aweravatar的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
好友圈
文章收藏
友情链接

[2010-01-14 16:46] 推荐博文 扫雷

我写得扫雷程序,用了子程序嵌套,呵呵,很爽!说明一下玩法,SXY,YXY,QXY,END分别代表踩雷,挖雷,取消挖雷和结束游戏,XY表示横纵坐标


STACK SEGMENT STACK
DB 10H DUP (0)
STACK ENDS
DATA SEGMENT
MESSAGE DB "YOU ARE BOMED !! $"
MESSAGE1 DB "GAME OVER !! $"
MESSAGE3 DB "THE REMAIN BOME IS : $"
MESSAGE4 DB "WOULD YOU LIKE TO START AGAIN? (Y\N) $"
XX0 DB 0,0,0,0,0,0,0
XX1 DB 0,0,0,0,0,1,0
XX2 DB 0,1,0,0,0,1,0
XX3 DB 0,1,0,0,0,1,0
XX4 DB 0,1,0,0,0,1,0
XX5 DB 0,1,0,0,0,1,0
XX6 DB 0,0,0,0,0,0,0
ADDR1 DW XX0,XX1,XX2,XX3,XX4,XX5,XX6
XXX0 DB 0,0,0,0,0,0,0
XXX1 DB 0,0,0,0,0,0,0
XXX2 DB 0,0,0,0,0,0,0
XXX3 DB 0,0,0,0,0,0,0
XXX4 DB 0,0,0,0,0,0,0
XXX5 DB 0,0,0,0,0,0,0
XXX6 DB 0,0,0,0,0,0,0
ADDR2 DW XXX0,XXX1,XXX2,XXX3,XXX4,XXX5,XXX6
XY DB 05H
DB ?
DB 05H DUP (?)
D1 DB 0 
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
STA:
MOV AX,STACK
MOV SS,AX
MOV AX,DATA
MOV DS,AX
START1:
CALL XIANSHI
MOV CX,31H
MOV DI,OFFSET XXX0
MOV SI,OFFSET XX0
LP5:
MOV AL,[SI]
MOV BYTE PTR [DI],AL
INC SI
INC DI
LOOP LP5
START:
MOV DX,OFFSET XY
MOV AH,0AH
INT 21H
MOV DL,0DH
MOV AH,02H
INT 21H
MOV DL,0AH
MOV AH,02H
INT 21H
CMP BYTE PTR XY[2],"Y"
JNE  NEXT13

MOV AL,XY[4]
MOV SI,12*160
S1:
ADD SI,160
DEC AL
CMP AL,30H
JNE S1

MOV AL,XY[3]
MOV AH,00H
SUB AL,30H
ADD AL,AL
MOV BX,AX
MOV BYTE PTR ES:[SI+40*2+BX],"Y"

XOR BX,BX
MOV BL,BYTE PTR XY[3]
SUB BL,30H
MOV CL,BYTE PTR XY[4]
SUB CL,30H

MOV SI,OFFSET ADDR2
MOV CH,00H
SHL CX,01H
ADD SI,CX
MOV DI,[SI]
MOV BYTE PTR [DI+BX],00H

JMP START
NEXT13:
CMP BYTE PTR XY [2],"Q"
JNE NEXT14
MOV AL,XY[4]
MOV SI,12*160
S2:
ADD SI,160
DEC AL
CMP AL,30H
JNE S2
MOV AL,XY[3]
MOV AH,00H
SUB AL,30H
ADD AL,AL
MOV BX,AX
MOV BYTE PTR ES:[SI+40*2+BX],30H

XOR BX,BX
MOV BL,BYTE PTR XY[3]
SUB BL,30H
MOV CL,BYTE PTR XY[4]
SUB CL,30H
PUSH CX
MOV SI,OFFSET ADDR1
MOV CH,00H
SHL CX,01H
ADD SI,CX
MOV DI,[SI]
MOV AL,BYTE PTR [DI+BX]
POP CX
MOV SI,OFFSET ADDR2
MOV CH,00H
SHL CX,01H
ADD SI,CX
MOV DI,[SI]
MOV BYTE PTR [DI+BX],AL


JMP START


NEXT14:
CMP BYTE PTR XY[2],'S'
JE NEXT9
JMP NEXT10
NEXT9:
XOR BX,BX
MOV BL,BYTE PTR XY[3]
SUB BL,30H
MOV CL,BYTE PTR XY[4]
SUB CL,30H
MOV SI,OFFSET ADDR1
PUSH SI
PUSH CX
MOV CH,00H
SHL CX,01H
ADD SI,CX
MOV DI,[SI]
CMP BYTE PTR [DI+BX],01H
JNE NEXT11    
JMP NEXT12
NEXT11:
POP CX
POP SI
DEC BX
DEC CL
MOV CH,00H
SHL CX,1
ADD SI,CX
MOV DH,00H
MOV CX,03H
LP1:
PUSH CX
MOV CX,03H
MOV DI,[SI]
LP:
CMP BYTE PTR [DI+BX],01H
JNE NEXT
INC DH
NEXT:
INC DI
LOOP LP
POP CX
INC SI
INC SI
LOOP LP1
ADD DH,30H
MOV BYTE PTR D1[0],DH
JMP END3
XIANSHI PROC NEAR
MOV AX,0B800H
MOV ES,AX
XOR BX,BX
MOV AH,30H
MOV CX,06H
LP2:
MOV BYTE PTR ES:[160*12+40*2+BX],AH
INC AH
ADD BX,02H
LOOP LP2
MOV DX,05H
MOV AH,31H
MOV SI,160*13
LP7:
XOR BX,BX
CALL WRITE
INC AH
ADD SI,160
DEC DX
JNE LP7 
JMP END2
WRITE PROC NEAR
MOV CX,06H
LP3:
CMP CX,06H
JNE NEXT7
MOV BYTE PTR ES:[SI+40*2+BX],AH
JMP N3
NEXT7:
MOV BYTE PTR ES:[SI+40*2+BX],30H
N3:ADD BX,02H
LOOP LP3
RET
WRITE ENDP
END2:
RET
XIANSHI ENDP
END3:
MOV AL,XY[4]
MOV SI,12*160
S:
ADD SI,160
DEC AL
CMP AL,30H
JNE S
MOV AL,XY[3]
MOV AH,00H
SUB AL,30H
ADD AL,AL
MOV BX,AX
MOV DL,D1[0]
MOV BYTE PTR ES:[SI+40*2+BX],DL
JMP START
NEXT12:
MOV DX,OFFSET MESSAGE
MOV AH,09H
INT 21H
NEXT10:
XOR DX,DX
MOV SI,OFFSET XXX0
MOV CX,31H
LP6:
CMP BYTE PTR [SI],01H
JNE NEXT15
INC DH
NEXT15:
INC SI
LOOP LP6
PUSH DX 
MOV DX,OFFSET MESSAGE3
MOV AH,09H
INT 21H
POP DX
ADD DH,30H
MOV DL,DH
MOV AH,02H
INT 21H
MOV DL,0AH
MOV AH,02H
INT 21H
MOV DL,0DH
MOV AH,02H
INT 21H
MOV DX,OFFSET MESSAGE4
MOV AH,09H
INT 21H
MOV AH,01H
INT 21H
CMP AL,"Y"
JNE NEXT20
MOV DL,0AH
MOV AH,02H
INT 21H
MOV DL,0DH
MOV AH,02H
INT 21H 
JMP START1
NEXT20: 
MOV DX,OFFSET MESSAGE1
MOV AH,09H
INT 21H 
MOV AH,4CH
INT 21H
CODE ENDS
END STA
评论次数(16)  |  浏览次数(1529)  |  类型(汇编作业) |  收藏此文  | 

[  perryyang   发表于  2010-01-27 14:46  ]

老兄也是牛人呀,不过我生成了EXE文件后,并不能玩哦,本人不是想玩,是想通过操作和分析一下源码。因为本人还不算入门的。

[  aweravatar   发表于  2010-01-27 22:53  ]

??,不会啊,我用MASM,很好用的,不过没关系,过几天,我会出打蜜蜂,俄罗斯方块,同时要更新一下这个扫雷,界面不怎么有好,我现在会位映像动画了
  扫雷主要是那两张表的应用,我用的还不算精,真正的应该在在程序内部,也就是春算法的完成扫描,我是在外围加了一圈零实现的,老师说我这不是最好的

[  liguangjin0616   发表于  2010-01-30 16:00  ]

朋友,我也用汇编勉强编了个俄罗斯方块,虽然很粗糙,但基本的随机出方块,加分和升级功能都有。你的俄罗斯方块什么时候出来啊?我们可以交流一下编程心得啊!

[  qiangzi   发表于  2010-02-01 17:41  ]

我来试试

[  260267131   发表于  2010-02-02 18:18  ]

佩服

[  masm_link   发表于  2010-04-28 16:19  ]

给个注释不知道可不可以

[  09211029   发表于  2010-05-04 13:37  ]

你们简直是牛人!小弟佩服

[  09211029   发表于  2010-05-04 13:38  ]

哪一天我也编过游戏出来,哈哈

[  ruixiang   发表于  2010-05-18 17:30  ]

牛人,可以注释吗?佩服

[  yoyou   发表于  2010-05-29 21:41  ]

拜读!!

[  游客   发表于  2010-06-14 20:06  ]

各位大哥,你们都太牛了吧!小弟学了一年的计算机,现在感觉什么也编不出来,哎,就只能编个课设之类的东西!

[  游客   发表于  2010-06-14 20:07  ]

各位大哥,你们都太牛了吧!小弟学了一年的计算机,现在感觉什么也编不出来,哎,就只能编个课设之类的东西!

[  litie12580   发表于  2010-06-19 18:06  ]

什么时候才能练到这么厉害啊

[  游客   发表于  2010-06-30 12:21  ]

都是牛人啊!

[  游客   发表于  2010-07-18 22:27  ]

这两天编了个贪吃蛇和俄罗斯方块,有兴趣的一起研究下,QQ:624759860

[  masmaster   发表于  2010-07-18 22:32  ]

牛肉·呀

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码