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

📄 no3.txt

📁 汇编语言做的 俄罗斯方块 演示
💻 TXT
📖 第 1 页 / 共 2 页
字号:
;玩俄罗斯方块,从一个窗口的底部开始,当到顶端就结束,显示“game over”
Pushr		macro	x,y,z,w
			Push		x
			Push		y
			Push		z
			Push		w
			Endm

Popr			macro	x,y,z,w
			Pop		w
			Pop		z
			Pop		y
			Pop		x
Endm

Stacks       segment
			Dw  256 dup(?)
Stacks       ends

Data			segment
string          db     'GAME OVER';结束显示字符串
len_string      equ     $-string
Count		dw	0
down_col	db	0
Line		db	0;行
Column		db	0;列
endy            db      0;标志在那行结束
startx          db      0;标志在那行、那列结束
starty          db      0
lowline         db      0;标志落在那行
Data			ends

Codes		segment
			Assume cs:codes,ds:data,es:data,ss:stacks
Start:		        mov		ax,data
			Mov		ds,ax
			Mov		es,ax
			mov	        ah,0
                        mov             al,3
                        int             10h
                        call clear_screen
                        
                        mov down_col,0
                        call window
                        
                        mov dh,1;屏幕属性
                        mov dl,33
                        mov bh,0
                        ;垒俄罗斯方块
                        mov             lowline,22
                        mov             endy,42
                        Call            move;向右移动横条方块,入口参数endy,lowline
                        mov             endy,3
                        mov             startx,4
                        mov             starty,32
                        call            move_l;转动L方块,入口参数endy startx starty
                        call            move1
                        call            move2;移动田方块,入口参数lowline
                        call            move3 ;移动T方块
                        mov             endy,21
                        call            move4;向左移动横条方块
                        mov             endy,7
                        mov             startx,8
                        mov             starty,29
			call            Move_l;转动L方块
                        Call            move1
                        mov             endy,4
                        mov             startx,5
                        mov             starty,40
			call            Move_T;转动T方块
                        Call            moveT
                        
                        mov             lowline,21 
                        mov             endy,21
                        Call            move5;移动锄头状方块
                        add             endy,3
                        call            move5
                        add             endy,3
                        call            move5 
                        call            move6
                        mov             lowline,20
                        call            move7;移动直条方块
                        
                        mov             lowline,18
                        call            move3
                        mov             endy,45
                        call            move10;Z方块
                        call            move8;移动卜方块
                        mov             endy,35
                        mov             lowline,16
                        Call            move;向右移动横条方块
                        
                        mov             endy,26
                        call            move9;与方块                                                
                        mov             endy,39
                        mov             lowline,15                                                
                        mov             endy,35
                        call            move11                         
                        dec             lowline                       
                        call            move7;移动直条方块
                        mov             lowline,13
                        Call            move;向右移动横条方块
                        mov             lowline,12
                        mov             endy,37
                        call            move11                         
                        mov             lowline,10
                        inc             endy
                        call            move11
                        mov             lowline,8
                        inc             endy
                        call            move11                         
                        mov             lowline,7
                        mov             endy,30
                        call            move4;向左移动横条方块
                        mov             lowline,6                       
                        mov             endy,33
                        call            move10;Z方块
                        mov             lowline,2
                        call            move4
                         
                        mov             lowline,1
                        mov             endy,33
                        call            move11
                        call            move12;铺满整个窗口
                        
                        
                        ;显示字符串“game over”             
                        call window
                        call delay
                        mov ah,13h
                        mov dh,11; 读字符串 
                        mov dl,30
                        mov bh,0
                        mov bp,seg string
                        mov es,bp
                        mov bp,offset string 
                        mov cx,len_string
                        mov bl,41h
                        mov al,1
                        int 10h  
                        
                        call delay2
                        
;窗口及下卷
 window    proc
                        mov ah,7
                        mov al,down_col
                        mov bh,14h
                        mov ch,1
                        mov cl,20
                        mov dh,23
                        mov dl,50
                        int 10h
                        ret  
window   endp


Move		proc
			Pushr	ax,bx,cx,dx
			
			Xor		ch,ch
			Mov		line,dh
			Mov		column,dl
Next:                   
                        inc             dl
                        cmp             dl,44
                        jb              do 
                        mov             dl,44
     do:                inc             dh			
                        mov             cx,6
			call            view
			Cmp		dh,lowline
                        Ja		done
                        Call            delay                        
                        Call            Erase
			jmp             next  			
    done:               Popr		ax,bx,cx,dx
			Ret
Move		endp
			
Erase		proc;擦除横条						
			Mov		dh,line
			Mov		dl,column
 			add		dh,1
                        inc             dl
                        mov             cx,7
                        call            view1
                        mov             al,endy
                        cmp             column,al
                        ja              do1            
                        inc             column	
	do1:		mov		dl,column
			inc		line
			mov		dh,line
			ret
erase		endp


Move2		proc
			Pushr	ax,bx,cx,dx
			inc             dh
			Xor		ch,ch
			Mov		line,dh
			Mov		column,dl
 Next2:                  mov cx,3
                        call view
                        inc dh
                        mov cx,3
                        call view                        
                        Call            delay                       
                        Cmp		dh,lowline
                        Ja		done2
                        Call            Erase2
			jmp             next2  			
    done2:              Popr		ax,bx,cx,dx 
			Ret
Move2		endp
			
Erase2		proc			
			Mov		dh,line
			Mov		dl,column 
                        mov cx,4
                        call view1
                        inc dh
                        mov cx,4
                        call view1                        				
			mov		dl,column
			inc		line
			mov		dh,line                        
			ret
erase2		endp

Move_l proc
		
			Pushr	ax,bx,cx,dx
			mov dh,1
                        mov dl,35
                        mov bh,0
			Xor		ch,ch
			Mov		line,dh
			Mov		column,dl
 Next_l:                mov cx,4
                        call view
                        inc dh
                        add dl,3
                        mov cx,1
                        call view                        
                        Call            delay
                        Call            Erase_l
                        Cmp		dh,endy
                        Ja		done_l
                        Call            Erase_l
			jmp             Next_l
    done_l:             Popr		ax,bx,cx,dx 
			Ret
Move_l		endp
			
Erase_l	proc
			Mov		dh,line
			Mov		dl,column
                        mov cx,4
                        call view1
                        inc dh
                        add dl,3
                        mov cx,1
                        call view1	
			dec             column
			mov		dl,column
			inc		line
			mov		dh,line 
			ret
Erase_l		endp
                       

Move1		proc
			Pushr	ax,bx,cx,dx
			mov             dh,startx
                        mov             dl,starty
			Xor		ch,ch
			Mov		line,dh
			Mov		column,dl
 Next1:                  
                        mov cx,1
                        call view
                        inc dh
                        mov cx,1
                        call view 
                        sub dl,2        
                        inc dh                
                        mov cx,3
                        call view
                        Call            delay
                        Cmp		dh,lowline
                        Ja		done1
                        Call            Erase1
			jmp             next1  
    done1:               Popr		ax,bx,cx,dx 

			Ret
Move1	endp
			
Erase1		proc
			
			Mov		dh,line
			Mov		dl,column
                        mov cx,1
                        call view1
                        inc dh
                        mov cx,1
                        call view1                                
                        sub dl,2
                        inc dh 
                        mov cx,3
                        call view1
                            	
			mov		dl,column
                        inc             line
			mov		dh,line  
			ret
erase1		endp



Move3 proc;移动T方块
		
			Pushr	ax,bx,cx,dx
			inc             dh
			Xor		ch,ch
			Mov		line,dh
			Mov		column,dl
 Next3:                 mov cx,2
                        call view
                        inc dh
                        sub dl,2
                        mov cx,6
                        call view
                        Call            delay  
                        Cmp		dh,lowline
                        Ja		done3
                        Call            Erase3
			jmp             next3  
			
    done3:               Popr		ax,bx,cx,dx 

			Ret
Move3		endp
			
Erase3		proc	
			Mov		dh,line
			Mov		dl,column
 
                        mov cx,2
                        call view1
                        sub dl,2
                        inc dh
                        mov cx,6
                        call view1	
			cmp             column,37
                        ja              do3
                        inc             column
do3:			mov		dl,column
			inc		line
			mov		dh,line
                        
			ret
erase3		endp

Move4 proc
		
			Pushr	ax,bx,cx,dx
			inc             dh
			Xor		ch,ch
			Mov		line,dh
			Mov		column,dl
 Next4:                  mov cx,7
                        call view                       
                        Call            delay
                        Cmp		dh,lowline
                        Ja		done4
                        Call            Erase4
			jmp             next4  
			
    done4:              Popr		ax,bx,cx,dx 

			Ret
Move4		endp
			
Erase4		proc
			
			
			Mov		dh,line
			Mov		dl,column
                        mov cx,7
                        call view1
                       	mov             al,endy
                        cmp             column,al
                        jb              do4
                        dec             column
do4:			mov		dl,column
                        inc		line
			mov		dh,line
                        
			ret
erase4		endp


Move_T proc
		
			Pushr	ax,bx,cx,dx
			mov dh,1
                        mov dl,35
                        mov bh,0
			Xor		ch,ch
			Mov		line,dh
			Mov		column,dl
 Next_T:                mov cx,2
                        call view
                        inc dh
                        sub dl,2
                        mov cx,6
                        call view
                        Call            delay
                        Call            Erase_T
                        Cmp		dh,endy
                        Ja		done_T
			jmp             Next_T  
    done_T:             Popr		ax,bx,cx,dx 
			Ret
Move_T		endp
			
Erase_T	proc
	
			Mov		dh,line
			Mov		dl,column
                        mov cx,2
                        call view1
                        inc dh
                        sub dl,2
                        mov cx,6
                        call view1
			inc             column
			mov		dl,column
			inc		line
			mov		dh,line
			ret
Erase_T		endp
                       

MoveT		proc
			Pushr	ax,bx,cx,dx
			mov             dh,startx
                        mov             dl,starty
			Xor		ch,ch
			Mov		line,dh
			Mov		column,dl
 NextT:                  
                        mov cx,6
                        call view
                        add dl,2
                        inc dh
                        mov cx,2
                        call view 
                       
                        Call            delay
                        Cmp		dh,lowline
                        Ja		doneT
                        Call            EraseT

⌨️ 快捷键说明

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