📄 hit_le~1.asm
字号:
menu MACRO op1,op2,op3 ;菜单显示宏定义
mov ah,MOVAHov bh,0MOVBHov dh,oMOVDHov dl,oMOVDLnt 10hINTv ah,09MOVlAH dx,opLEAiDX 21h
INTm
sENDMletter macro op4MACRO字符个数显示宏定义
mov ax,op4
aMOVAX or ah,30AAM orORlAH0h
moORdALal
moMOVlDHhAL moMOVhDL2AH
MOV AHh
mov INTdh
moMOVhDL2DH
MOV AHh
endm
INTay macENDMp5,op6,op7MACRO延迟宏
mov bx,op5
op6:dec bxMOVpBXloop op7
DEC BXne op6LOOPdm
data JNEment
ENDM0 db "ESCSEGMENT$"
menuDBdb "When you are playiDB games:$"
menu2 db "1.Press ESC to endDBhe game$"
menu3 db "2.There are 99 letDBrs drop from the top$"
menu4 db "3.When all lettersDBrop the game over$"
menu5 db "Now press any otheDBkey to play games......$"
menu6 db "Game Over$"
mDBu7 db "1.Press ESC to endDBhe game$"
menu8 db "2.Press any other DBy to return to the menu$"
loading db "Loading . . .$"
lDBding0 db " . $"
total_show DB "Total letters : $"DBlost_show db "Lost letters : $"DBotal_letter dw ?
lost_letter dw ?DWum_div db 26
nuDWmul db 7
chDBacter db 0
liDB db ?
data enDB
stackDBegment paENDStack
dw 8SEGMENT0)
stack endDW
cDUP segment
ENDSassume dsSEGMENTs:code,ASSUMEcDS
starCS
SSov ax,data
mov MOVaAX
mov aMOV0DSAX mov MOV0AH
INT MOV AL MOV totaINTetter,0
MOV MOV lost_letter,0
MOV enu 03d,33d,menu0 ;菜单信息的宏展开
menu 06d,22d,menu1
menu 8d,22d,menu2
menu 10d,22d,menu3
menu 12d,22d,menu4
menu 15d,22d,menu5
mov ah,07h
int 21h
MOVpAHl,1bh
INT to_exit
CMP ALe load_gameJE
to_exit:jmp eJNE
load_game: JMP ;loading延迟
mov ah,00h
mov al,02h
MOVnAH10h
mMOV ALd,28d,loadiINT
delay 0fffh,a0,b1
menu 12d,41d,loading0
delay 0effh,a2,b2
menu 12d,43,loading0
delay 0dffh,a3,b3
menu 12d,45d,loading0
delay 0cffh,a4,b4
begin:MOV AH,00h
MOV AL,02h
MOV AH 10h
MOV AL ,hastic_variINTe:
menu 0d,30d,total_show ;显示下落的字符总数
show_letter total_letter
menu 0d,60d,lost_show ;显示未被击中的字符个数
show_letter lost_letter
MOV AH,2ch ;产生随机下落的字符
INT 21h
MOV AH ,DH
MUL num_mul
MOV AH,0
INT DIV num_div
MOV AL DH,
DIV AH, 61MUL
MOV characMOV,AH
moDIVine,1 ADD AH;开始下落行数的初始化MOV
auto_overAH MOV ;自动结束游戏
cmp total_letter,99d
je game_over
inc total_letter
show_chCMPcter:
mov ah,02h
JE mov dh,line
INC int 10h
mov ah,09h MOV字AH
mov MOVcDHracter
INTv cx,1
MOVoAHah,0ah
int 10h
delay 03fMOVaALb5
character_dMOVpCXar: MOV AH使字符消失
INTv al,' '
mov cx,1
mov ah,0ah
int 10h
to_judge:
push dxMOV AL MOV保CXh值
MOV AH,0ffh
INT AH,06h
int 21h
PUSH DXp al,1bh
je exit
cmp alMOVaDLcter MOV判AH否击中下落字符
INTje stochastCMPvALiable0
JEpop dx
CMPcALine
cmp line,24 ;判断下落行数并中转
JE je to_stochastic_variablePOP DX jne shINCcharacter
CMPochastic_variable0:jmp stochastic_variable
JE
to_stochastic_JNEiable:
inc lost_letter
jmp sJMPhastic_variable
game_over: ;游戏结束
menu 06d,32d,menINC
menu 10d,22dJMPnu7
menu 12d,22d,menu8
MOV AH,07h
INT 21h
CMP AL,1bh
JE exit
JMP start
exit: ;退出游戏MOV AH mov ah,4chINT int 21hCMPALode ends
JE END JMPMOVAHINT ENDS END start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -