汇编语言程序设计
Init_game宏op1,op2,op3,op4,op5,op6
mov cx,00h
mov dh,op1
mov dl,op2
op6:
mov ah,02h
mov BH 00h
int 10h
推送cx
啊,0ah
电影al,op3
mov BH 00h
mov cx,01h
int 10h
流行cx
inc cx
公司op4
cmp cx,op5
jne op6
endm
clear_screen宏op1,op2,op3,op4
电影啊,06h
mov al,00h
mov bh,07h
mov ch,op1
mov cl,op2
mov dh,op3
mov dl,op4
int 10h
mov ah,02h
mov BH 00h
mov dh,00h
mov dl,00h
int 10h
endm
菜单宏op1,op2,op3
mov ah,02h
mov BH 00h
mov dh,op1
mov dl,op2
int 10h
mov ah,09h
lea dx,op3
int 21h
endm
数据段
临江db“临江造$”
无db "编号:021411$ "
meg db“我们来玩个游戏吧!!加油!!$"
Meg 1 db " * *选择菜单**$ "
meg2 db "请选择游戏速度,ESC退出。$"
meg3 db "1。太慢太容易了,加速!$"
meg4 db "2。慢,每个人都可以处理。$"
meg5 db "3。正常我认为你可以处理!$"
meg6 db "4。快速挑战。注意了!$"
meg7 db "5。太快太难了,试一试?$"
meg8 db "6。最快你疯了吗?$"
meg9 db " *在1-6中选择一个数字,然后按ENTER键开始!*$"
meg10 db "游戏速度选择:$ "
热键db "当你在玩游戏的时候:$ "
热键1 db "ESC返回菜单$ "
热键2 db“暂停游戏的空间$”
热键3 db "按任意键玩游戏......$"
hotkey4 db“你准备好了吗?$"
failmeg db“信已到达底部,你输了!:($"
failmeg0 db "按ENTER键继续......$"
failmeg1 db”游戏结束!$"
failmeg2 db "按ENTER键返回菜单,按ESC键退出!$"
failmeg3 db“拜拜!感谢您的参与!!$"
failmeg4 db "按任意键退出......$"
速度dw 00d,1200d,800d,600d,400d,200d,100d
字母db " jwmilzoeucgpravskntxhdyqfb "
db "iytpkwnxlsvxrmofzhgaebudjq "
db "nwimzoexrphysfqtvdcgljukda "
letters _ bak db " jwmilzoeucpravsktxhdyqfb "
db "iytpkwnxlsvxrmofzhgaebudjq "
db "nwimzoexrphysfqtvdcgljukda "
字母_计数器db 0
life_flag db 78 dup(0)
position_flag db 78 dup(0)
当前位置数据库1
数据结束
堆栈段para stack 'stack '
db 64 dup(0)
堆栈结束
代码段
主进程远
假设cs:代码,ds:数据,ss:堆栈
开始:
移动轴,数据
移动ds,ax
mov字母_计数器,00h
mov present_position,1
lea si,位置_标志
mov ah,00h
mov cx,00h
初始化位置标志:
mov [si],啊
公司si
inc cx
cmp cx,78d
jne初始化位置标志
莉迪,字母
lea si,letters_bak
mov cx,00h
初始字母:
mov ah,[si]
mov [di],啊
公司si
公司di
inc cx
cmp cx,78d
jne初始化_字母
mov ah,00h
lea si,生命旗帜
mov cx,00h
初始化_生命_标志:
mov [si],啊
公司si
inc cx
cmp cx,78d
jne初始化_生命_标志
mov cx,00h
mov ah,01h
或ch,00010000b
int 10h
清除屏幕00d,00d,24d,79d
Init_game 00d,00d,0ah,dl,80d,nextsign1
Init_game 24d,00d,0ah,dl,80d,nextsign2
Init_game 00d,00d,0ah,dh,25d,nextsign3
Init_game 00d,79d,0ah,dh,25d,nextsign4
菜单01d,15d,meg菜单信息的宏展开
菜单01h,61d,临江
菜单03d,20d,meg1
菜单03d,68d,否
菜单05d,15d,meg2
菜单07d,15d,meg3
菜单09d,15d,meg4
菜单11d,15d,meg5
菜单13d、15d、meg6
菜单15d、15d、meg7
菜单17d、15d、meg8
菜单19d、15d、meg9
菜单22d,15d,meg10
输入:mov ah,02h
mov BH 00h
mov dh,22d
mov dl,33d
int 10h
啊,0ah
mov al," "
mov BH 00h
mov cx,01h
int 10h
mov ah,01h
int 21h
重试:cmp al," 1 "
je speed1
化学机械抛光铝,“2”
je速度2
cmp al," 3 "
je速度3
cmp al," 4 "
je速度4
cmp al," 5 "
je速度5
cmp al," 6 "
je速度6
cmp铝,1bh
je to_over0
jmp输入
到_结束0:jmp结束
速度1: mov ah,01h
int 21h
cmp al,0dh
jne其他键
移动轴,速度+2
移动速度,ax
jmp开始
速度2: mov ah,01h
int 21h
cmp al,0dh
jne其他键
移动轴,速度+4
移动速度,ax
jmp开始
速度3: mov ah,01h
int 21h
cmp al,0dh
jne其他键
移动轴,速度+6
移动速度,ax
jmp开始
速度4: mov ah,01h
int 21h
cmp al,0dh
jne其他键
移动速度+8
移动速度,ax
jmp开始
速度5: mov ah,01h
int 21h
cmp al,0dh
jne其他键
速度+10
移动速度,ax
jmp开始
速度6: mov ah,01h
int 21h
cmp al,0dh
jne其他键
mov ax,速度+12
移动速度,ax
jmp开始
other key:;处理重复的代码片段
推斧
mov ah,02h
mov BH 00h
mov dh,22d
mov dl,34d
int 10h
啊,0ah
mov al," "
mov BH 00h
mov cx,01h
int 10h
mov ah,02h
mov BH 00h
mov dh,22d
mov dl,33d
int 10h
爆破筒
mov dx,ax
mov ah,02h
int 21h
jmp重试
开始:
clear_screen 01d,01d,23d,78d
菜单08d,20d,热键
菜单10d,20d,热键1
菜单12d,20d,热键2
菜单14d,20d,热键4
菜单16d,20d,热键3
mov ah 07h
int 21h
clear_screen 01d,01d,23d,78d
Init_game 23d,01d,01h,dl,78d,nextsign5
mov ah,02h光标初始化
mov BH 00h
mov dh,01h
mov dl,01h
int 10h
mov cx,00h
lea si,字母
下一个字母:;初始化屏幕顶部的字母。
mov ah,02h
mov dl,[si]
int 21h
公司si
inc cx
cmp cx,78d
je nextcycle
jmp下一封信
from _ front:;相关循环算法
子当前位置,78d
jmp gobackto_si
find_zero:cmp字母计数器,78d
je回收
cmp当前位置,78d
我来自一中
mov ah,00h
nextsi:添加present_position,01h
公司si
cmp [si],啊
我要回去了
cmp当前位置,78d
我来自一中
jmp nextsi
from_one:mov present_position,01h
jmp gobackto_si
回收:mov letter_counter,00h
mov present_position,01d
lea si,位置_标志
mov cx,00h
mov ah,00h
clearsi: mov [si],啊
inc cx
cmp cx,78d
je nextcycle
公司si
jmp clearsi
下一个周期:
莉迪,字母
lea si,位置_标志
添加present_position,31d
cmp当前位置,78
来自前方的ja
gobackto_si:
添加si,字指针当前位置
十二月四日
mov ah,[si]
cmp ah,01h
我找零
gobackto_di:
mov ah,01h
mov [si],啊
添加di,字指针当前位置
十二月二日
移动dl,当前位置
mov ah,02h字母所在的代码段部分。
mov BH 00h
mov dh,01h
int 10h
mov cx,00h
nextrow:推CX;新的一行
mov cx,00h
out _ cycle:;耽搁
推送cx
mov cx,00h
周期内:
添加cx,01h
cmp cx,50000d
jne in_cycle
推送dx
电影啊,06h
mov dl,0ffh
int 21h
流行dx
jz传球;如果键盘缓冲区部分为空,则跳过。
cmp al,1bh;如果键入ESC,将返回到主菜单。
je to_start1
cmp al," ";如果您键入空格,游戏将暂停。
我停顿了一下
cmp al,[di];正确输入字母!跳!
我消失了
通过:
流行cx
inc cx
cmp cx,速度
je打印
jmp输出周期
暂停:推dx;暂停处理
电影啊,06h
mov dl,0ffh
int 21h
流行dx
cmp al," "
jne暂停
jmp通行证
to _ start 1:;返回主菜单
jmp开始
打印:
啊,0ah
mov al," "
mov BH 00h
mov cx,01h
int 10h
公司dh
mov ah,02h
mov BH 00h
int 10h
啊,0ah
mov al,[di]
mov BH 00h
mov cx,01h
int 10h
流行cx
inc cx
cmp cx,21d
je print_next_letter
jmp nextrow下一行
消失:;打字母后的相关处理
流行cx
流行cx
啊,0ah
mov al," "
mov BH 00h
mov cx,01h
int 10h
jmp命中
打印下一封信:;处理原职位的空缺
lea si,生命旗帜
添加si,字指针当前位置
十二月四日
mov ah,[si]
cmp ah,1
我失败了
啊,0ah
mov al," "
mov BH 00h
mov cx,01h
int 10h
公司dh
mov ah,02h
mov BH 00h
int 10h
啊,0ah
mov al," "
mov BH 00h
mov cx,01h
int 10h
mov ah,1
mov [si],啊
hit: mov ah,02h
mov BH 00h
mov dh,01h
移动dl,当前位置
int 10h
mov al,[di];下一个新字母的号码。
添加al,7
cmp铝,7ah
ja传达_信件
啊,0ah
mov BH 00h
mov cx,01h
int 10h
mov [di],al
添加字母_计数器,01h
jmp下一个周期
传达_信件:
sub al,7ah
添加铝,61h
啊,0ah
mov BH 00h
mov cx,01h
int 10h
mov [di],al
添加字母_计数器,01h
jmp下一个周期
失败:mov ah,0ah游戏失败后的相关处理
mov al," "
mov cx,01h
int 10h
公司dh
mov ah,02h
mov BH 00h
int 10h
啊,0ah
mov al,[di]
mov BH 00h
mov cx,01h
int 10h
mov ah,02h
mov BH 00h
mov dh,12d
mov dl,17d
int 10h
推送dx
mov ah,09h
lea dx,failmeg
int 21h
流行dx
添加dh,2
mov ah,02h
mov BH 00h
int 10h
mov ah,09h
lea dx,故障指示器0
int 21h
回复:mov ah,07h
int 21h
cmp al,0dh
jne re
clear_screen 01,01,23,78
mov ah,02h
mov BH 00h
mov dh,11d
运动dl,20d
int 10h
推送dx
mov ah,09h
lea dx,failmeg1
int 21h
流行dx
公司dh
公司dh
mov ah,02h
mov BH 00h
int 10h
mov ah,09h
lea dx,故障指示器2
int 21h
notkey:
mov ah 07h
int 21h
cmp al,0dh
我要开始了
cmp铝,1bh
我结束了
jmp notkey
开始时间:
清除_屏幕00,00,24,79
jmp开始
over: clear_screen 01,01,23,78
mov ah,02h
mov BH 00h
mov dh,11d
mov dl,15h
int 10h
mov ah,09h
lea dx,故障指示器3
int 21h
mov ah,02h
mov BH 00h
mov DH 13d
mov dl,15h
int 10h
mov ah,09h
lea dx,故障指示器4
int 21h
mov ah 07h
int 21h
mov ah 07h
int 21h
清除_屏幕00,00,24,79
mov ax,4c00h
int 21h
主端
代码结束
结束开始