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

📄 aa.asm

📁 屏幕上方的字母随机出现 第一个方框内的数字表示操作者打字正确的个数(可表示0-999) 第二个方框内的数字表示在某个等级里所出现字母的个数(可表示0-999) 第三个方框内的数字表示在所
💻 ASM
字号:
;屏幕上方的字母随机出现
;第一个方框内的数字表示操作者打字正确的个数(可表示0-999) 
;第二个方框内的数字表示在某个等级里所出现字母的个数(可表示0-999)
;第三个方框内的数字表示在所有等级里所出现字母的总个数(可表示0-999)
;按空格键选择打字等级, 即字母下落的速度快慢,分六个等级,其中第一级最快,第六级最慢        
;按回车键确定进入游戏  
;按ESC键可随时退出,否则,将继续进行  
;按BACK键后退一格重新选择等级  
data segment
buf db 'abcdefghijklmnopqrstuvwxyz','$'
buf0 db 'level:','$'
buf1 db 'level:1-6','$'
buf2 db 'ENTER:into the game!','$'
buf3 db 'ESC:out of the game!','$'
buf4 db 'SPACE:select the level!','$'
buf5 db 'BACK:reselct the game!','$'
xinghao db '*************','$'
l1 dw ?
l0 dw ?
mus_freq dw 330,294,262,294,3 dup(330),-1
mus_time dw 6 dup(25),50
data ends
stack1 segment para stack
db 100h dup(?)
stack1 ends
code segment
assume cs:code,ds:data,ss:stack1
start:mov ax,data
      mov ds,ax
      mov ah,0
      mov al,02h
      int 10h
      mov l0,0
   yz:mov bp,0
      mov l1,0
      mov ah,02h
      mov bh,0
      mov dx,0
   jj:int 10h           ;清屏 
      push dx
      mov ah,02h
      mov dl,0
      int 21h
      pop dx
      inc dl
      cmp dl,80
      jnz jj
      mov dl,0
      inc dh
      cmp dh,25
      jnz jj
      mov ah,02h
      mov dh,6
      mov dl,23
      int 10h
      mov ah,09h
      lea dx,buf2
      int 21h
      mov ah,02h
      mov dh,7
      mov dl,23
      int 10h
      mov ah,09h
      lea dx,buf3
      int 21h
      mov ah,02h
      mov dh,8
      mov dl,23
      int 10h
      mov ah,09h
      lea dx,buf4
      int 21h
      mov ah,02h
      mov dh,9
      mov dl,23
      int 10h
      mov ah,09h
      lea dx,buf5
      int 21h
      mov ah,02h
      mov dh,10
      mov dl,29
      int 10h
      mov ah,09h
      lea dx,buf1
      int 21h  
      mov ah,02h
      mov dh,12
      mov dl,30
      int 10h
      mov ah,09h
      lea dx,buf0
      int 21h
   fh:mov ah,02h
      mov dh,12
      mov dl,36
      int 10h 
      mov ah,01h
      int 21h
      push ax
      mov ah,02h
      mov bh,0
      mov dh,12
      mov dl,38
      int 10h 
      mov dl,0
      int 21h
      int 21h
      int 21h
      pop ax 
      cmp al,0dh       ;按回车键进入游戏
      jz fh
      cmp al,1bh       ;按ESC键退出游戏    
      jnz rf
      jmp re
   rf:and al,000001111b
      cmp al,1
      jz w1
      cmp al,2
      jz w2 
      cmp al,3
      jz w3
      cmp al,4
      jz w4
      cmp al,5
      jz w5
      cmp al,6
      jz w6
      mov ah,02h
      mov dh,12
      mov dl,38
      int 10h 
      mov dl,'?'
      int 21h
      int 21h
      int 21h
      jmp fh 
   w1:jmp k1
   w2:mov al,5
      jmp k1
   w3:mov al,15
      jmp k1
   w4:mov al,30
      jmp k1
   w5:mov al,50
      jmp k1
   w6:mov al,90
      jmp k1 
   k1:mov bl,al
 over:mov ah,02h
      mov bh,0
      mov dh,12
      mov dl,36
      int 10h
      mov ah,01h
      int 21h
      cmp al,08h       ;按BACK键后退一格
      jnz fd
      mov ah,02h
      mov bh,0
      mov dh,12
      mov dl,36
      int 10h
      mov ah,02h
      mov dl,0
      int 21h
      jmp over 
   fd:cmp al,0dh       ;按回车键进入游戏
      jz ov
      cmp al,1bh       ;按ESC键退出游戏   
      jnz over
      jmp re  
   ov:mov ah,02h
      mov bh,0
      mov dh,12
      mov dl,36
      int 10h 
      mov ah,02h
      mov bh,0
      mov dx,0
  jj2:int 10h
      push dx
      mov ah,02h
      mov dl,0 
      int 21h
      pop dx
      inc dl
      cmp dl,80
      jnz jj2
      mov dl,0
      inc dh
      cmp dh,25
      jnz jj2
      mov cx,26
      mov dx,0
   lp:mov ah,02h
      int 10h
      inc dh
      push dx
      mov ah,09h
      mov dx,offset xinghao
      int 21h
      pop dx 
      loop lp 
      mov cx,25
      mov dx,42h
  llp:mov ah,02h
      int 10h
      inc dh
      push dx
      mov ah,09h
      mov dx,offset xinghao
      int 21h
      pop dx
      loop llp 
      mov ah,02h
      mov dx,0404h
  jj0:int 10h
      push dx
      mov ah,02h
      mov dl,0
      int 21h
      pop dx
      inc dl
      cmp dl,9
      jnz jj0
      mov dl,04h
      inc dh
      cmp dh,7
      jnz jj0
      mov dx,0505h
      int 10h
      mov dl,30h
      int 21h
      int 21h
      int 21h
      mov ah,02h
      mov dx,0b04h
  jj3:int 10h
      push dx
      mov ah,02h
      mov dl,0
      int 21h
      pop dx
      inc dl
      cmp dl,9
      jnz jj3
      mov dl,04h
      inc dh
      cmp dh,0eh
      jnz jj3
      mov dx,0c05h
      int 10h
      mov dl,30h
      int 21h
      int 21h
      int 21h
      mov ah,02h
      mov dx,1204h
  jj4:int 10h
      push dx
      mov ah,02h
      mov dl,0
      int 21h
      pop dx
      inc dl
      cmp dl,9
      jnz jj4
      mov dl,04h
      inc dh
      cmp dh,15h
      jnz jj4
      mov ah,02h
      mov bh,0
      mov dx,1305h
      int 10h
      mov dl,30h
      int 21h          ;总的计数   
      mov bh,0
      mov dx,1306h
      int 10h
      mov ax,l0
  sc5:mov bh,10
      div bh
      push ax
      cmp al,10
      jae dv5
      add al,30h 
      mov ah,02h
      mov dl,al
      int 21h
      pop ax
      jmp xs5
  dv5:mov ah,02h
      mov dh,013h
      mov bh,0
      mov dl,07h
      int 10h
      pop ax
      push ax
      mov al,ah
      add al,30h
      mov ah,02h
      mov dl,al
      int 21h
      mov ah,02h
      mov bh,0
      mov dh,013h 
      mov dl,05h
      int 10h
      pop ax
      mov ah,0
      jmp sc5 
  xs5:add ah,30h
      mov al,ah
      mov ah,02h
      mov dl,al
      int 21h
      ;以上为界面程序
   aa:mov dh,buf     ;buf为随机序列
      mov bh,buf+4
      xchg dh,bh
      mov buf,dh
      mov buf+4,bh
      mov dh,buf+1
      mov bh,buf+9
      xchg dh,bh
      mov buf+1,dh
      mov buf+9,bh
      mov dh,buf+7
      mov bh,buf+14
      xchg dh,bh
      mov buf+7,dh
      mov buf+14,bh
      mov dh,buf+12
      mov bh,buf+25
      xchg dh,bh
      mov buf+12,dh
      mov buf+25,bh
      mov dh,buf+8
      mov bh,buf+22
      xchg dh,bh
      mov buf+8,dh
      mov buf+22,bh
      mov dh,buf+2
      mov bh,buf+6
      xchg dh,bh
      mov buf+2,dh
      mov buf+6,bh
      mov dh,buf+13
      mov bh,buf+18
      xchg dh,bh
      mov buf+13,dh
      mov buf+18,bh
      mov dh,buf+16
      mov bh,buf+23
      xchg dh,bh
      mov buf+16,dh
      mov buf+23,bh
      mov dh,buf+15
      mov bh,buf+11
      xchg dh,bh
      mov buf+15,dh
      mov buf+11,bh
      mov dh,buf+5
      mov bh,buf+21
      xchg dh,bh
      mov buf+5,dh
      mov buf+21,bh
      mov dh,buf+10
      mov bh,buf+3
      xchg dh,bh
      mov buf+10,dh
      mov buf+3,bh
      mov dh,buf+17
      mov bh,buf+19
      xchg dh,bh
      mov buf+17,dh
      mov buf+19,bh
      mov dh,buf+20
      mov bh,buf+24
      xchg dh,bh
      mov buf+20,dh
      mov buf+24,bh
      mov di,0
      mov cx,26
      mov ah,02h
      mov bh,0
      mov dx,14
   hh:int 10h          ;写顶行的26个字母  
      inc dl
      inc dl 
      push dx
      mov ah,02h
      mov dl,buf[di]
      int 21h
      inc di
      pop dx 
      loop hh
      mov ah,02h
      mov bh,0
      mov dx,14
      int 10h
      push dx
      mov di,0
  lop:mov ah,02h
      mov dl,buf[di]
      int 21h
      pop dx
      int 10h
      push dx
      mov ah,06h
      mov dl,0ffh
      int 21h
      cmp al,buf[di]
      jnz ww
      jmp rt
   ww:jmp qq
   rt:push si
      push bp
      push di
      push bx
      lea si,mus_freq
      lea bp,mus_time
 freq:mov di,[si]
      cmp di,-1
      jz qs
      mov bx,ds:[bp]
      call soundf
      add si,2
      add bp,2
      jmp freq
   qs:pop bx
      pop di
      pop bp
      pop si
      mov ah,02h          ;计数
      mov dx,0506h
      int 10h
      inc bp
      push bp
      mov ax,bp
   sc:mov bh,10
      div bh
      push ax
      cmp al,10
      jae dv
      add al,30h 
      mov ah,02h
      mov dl,al
      int 21h
      pop ax
      jmp xs 
   dv:mov ah,02h
      mov dh,05h
      mov bh,0
      mov dl,07h
      int 10h
      pop ax
      push ax
      mov al,ah
      add al,30h
      mov ah,02h
      mov dl,al
      int 21h
      mov ah,02h
      mov bh,0
      mov dh,05h 
      mov dl,05h
      int 10h
      pop ax
      mov ah,0
      jmp sc 
   xs:add ah,30h
      mov al,ah
      mov ah,02h
      mov dl,al
      int 21h
      mov ah,02h
      mov bh,0
      mov dx,0c06h
      int 10h
      pop bp
      push cx          ;等级计数 
      mov cx,l1
      inc cx
      mov l1,cx
      mov cx,l0
      inc cx
      mov l0,cx
      pop cx
      mov ax,l1
  sc1:mov bh,10
      div bh
      push ax
      cmp al,10
      jae dv1
      add al,30h 
      mov ah,02h
      mov dl,al
      int 21h
      pop ax
      jmp xs1 
  dv1:mov ah,02h
      mov dh,0ch
      mov bh,0
      mov dl,07h
      int 10h
      pop ax
      push ax
      mov al,ah
      add al,30h
      mov ah,02h
      mov dl,al
      int 21h
      mov ah,02h
      mov bh,0
      mov dh,0ch 
      mov dl,05h
      int 10h
      pop ax
      mov ah,0
      jmp sc1 
  xs1:add ah,30h
      mov al,ah
      mov ah,02h
      mov dl,al
      int 21h
      mov ah,02h         ;总的计数   
      mov bh,0
      mov dx,1306h
      int 10h
      mov ax,l0
  sc3:mov bh,10
      div bh
      push ax
      cmp al,10
      jae dv3
      add al,30h 
      mov ah,02h
      mov dl,al
      int 21h
      pop ax
      jmp xs3 
  dv3:mov ah,02h
      mov dh,013h
      mov bh,0
      mov dl,07h
      int 10h
      pop ax
      push ax
      mov al,ah
      add al,30h
      mov ah,02h
      mov dl,al
      int 21h
      mov ah,02h
      mov bh,0
      mov dh,013h 
      mov dl,05h
      int 10h
      pop ax
      mov ah,0
      jmp sc3 
  xs3:add ah,30h
      mov al,ah
      mov ah,02h
      mov dl,al
      int 21h
      mov ah,02h
      mov bh,0
      pop dx
      int 10h
      push dx 
      mov dl,0
      int 21h
      pop dx
      inc di
      cmp di,25
      ja op
      jmp po
   op:jmp tt
   po:inc dl
      inc dl
      mov dh,0
      int 10h
      push dx
      jmp lop
   qq:cmp al,20h       ;按空格键重来
      jz pq
      cmp al,1bh       ;按ESC键退出    
      jz rr
      jmp rc
   rr:jmp re
   pq:jmp yz
   rc:mov ah,2dh
      mov cx,0
      mov dx,0
      int 21h
      mov ah,2ch
   pp:int 21h        ;控制下落速度
      cmp dl,bl
      jbe pp
      pop dx
      mov ah,02h
      int 10h
      push dx
      mov dl,0
      int 21h 
      pop dx  
      inc dh
      int 10h
      push dx
      cmp dh,25
      ja ee
      jmp lop
   ee:mov ah,02h
      mov bh,0
      mov dx,0c06h
      int 10h
      push cx             ;等级计数 
      mov cx,l1
      inc cx
      mov l1,cx
      mov cx,l0
      inc cx
      mov l0,cx
      pop cx
      mov ax,l1
  sc2:mov bh,10
      div bh
      push ax
      cmp al,10
      jae dv2
      add al,30h 
      mov ah,02h
      mov dl,al
      int 21h
      pop ax
      jmp xs2 
  dv2:mov ah,02h
      mov dh,0ch
      mov bh,0
      mov dl,07h
      int 10h
      pop ax
      push ax
      mov al,ah
      add al,30h
      mov ah,02h
      mov dl,al
      int 21h
      mov ah,02h
      mov bh,0
      mov dh,0ch 
      mov dl,05h
      int 10h
      pop ax
      mov ah,0
      jmp sc2 
  xs2:add ah,30h
      mov al,ah
      mov ah,02h
      mov dl,al
      int 21h
      mov ah,02h        ;总的计数
      mov bh,0
      mov dx,1306h
      int 10h
      mov ax,l0
  sc4:mov bh,10
      div bh
      push ax
      cmp al,10
      jae dv4
      add al,30h 
      mov ah,02h
      mov dl,al
      int 21h
      pop ax
      jmp xs4 
  dv4:mov ah,02h
      mov dh,013h
      mov bh,0
      mov dl,07h
      int 10h
      pop ax
      push ax
      mov al,ah
      add al,30h
      mov ah,02h
      mov dl,al
      int 21h
      mov ah,02h
      mov bh,0
      mov dh,013h 
      mov dl,05h
      int 10h
      pop ax
      mov ah,0
      jmp sc4 
  xs4:add ah,30h
      mov al,ah
      mov ah,02h
      mov dl,al
      int 21h
      pop dx
      mov ah,02h
      mov bh,0
      mov dh,0
      inc dl
      inc dl
      int 10h
      inc di
      cmp di,25
      ja tt 
      push dx
      jmp lop
   tt:mov ah,02h
      mov bh,0
      mov dx,14
      int 10h
      push dx
      mov di,25      ;翻转序列
      mov si,0
      mov cx,13
   kp:mov dh,buf[di]
      mov dl,buf[si]
      xchg dh,dl
      mov buf[di],dh
      mov buf[si],dl
      dec di
      inc si
      loop kp
      jmp aa
   re:mov ah,02h
      mov bh,0
      mov dx,0
  jj1:int 10h           ;清屏 
      push dx
      mov ah,02h
      mov dl,0
      int 21h
      pop dx
      inc dl
      cmp dl,80
      jnz jj1
      mov dl,0
      inc dh
      cmp dh,25
      jnz jj1
      mov dx,0
      int 10h
      mov ah,4ch
      int 21h
soundf proc
      push ax
      push bx
      push cx
      push dx
      push di
      mov al,0b6h
      out 43h,al
      mov dx,12h
      mov ax,348ch
      div di
      out 42h,al
      mov al,ah
      out 42h,al
      in al,61h
      mov ah,al
      or al,3
      out 61h,al
wait1:mov cx,633
      call waitf
delay:loop delay
      dec bx
      jnz wait1
      mov al,ah
      out 61h,al
      pop di
      pop dx
      pop cx
      pop bx
      pop ax
      ret
soundf endp
 waitf proc
       push ax
waitf1:in al,61h
       and al,10h
       cmp al,ah
       jz waitf1
       mov ah,al
       loop waitf1
       pop ax
       ret
waitf endp
code ends
end start





⌨️ 快捷键说明

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