汇编语言程序设计

这是16打字可以运行的游戏代码~

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

主端

代码结束

结束开始