【课程设计】8086汇编实现打字小游戏

大家好我是冈坂日川。最近临近期末,很多计算机系的学生肯定有课程设计,包括汇编啊,java啊,python啊这些,我今天给大家分享一个比较完善的汇编程序,是从 GitHub 上 转载并修改的代码,小细节,乱码问题我都解决了,你只需要复制黏贴,就可以执行了!同时,代码可以用于学习但切记不可抄袭做作业!!!
转载 GitHub ASMTypingGame

- 项目简介 / 设计思路
- 代码片
- 执行结果视图

一、项目简介

ASMTypingGame

简述

这是一个用x86 MASM写的打字游戏,是我计算机组成原理与汇编语言课程的课程设计。

实现功能

老师给的要求如下:

  1. 游戏开始后,从屏幕的顶部不断生成字符往下掉,值随机,位置随机。
  2. 按下对应按键后,屏幕上对应的字符高亮显示
  3. 按下按键后,蜂鸣器发声
  4. 统计分数

我在老师的要求上做了一定的扩展,把程序写成了类似DOS窗口游戏的东西:

  1. 首先有做了初始界面,游戏界面,设置界面和积分界面等界面,并提供跳转的接口。
  2. 按下按键后,蜂鸣器发出有声调的声音,组合起来就是一首曲子,在设置界面提供修>改的接口。
  3. 提供字符生成速度和下落速度的修改,提供字符的配色选择。

不足与改进

这个程序还有很多可以修改的地方,比如界面可以做的更精美,音调可以调得更准等。

一、代码

CODE1 SEGMENT
    ASSUME CS:CODE1,DS:DATA1,SS:STACKS,ES:EXS


MAIN	PROC	FAR
        MOV 	AX,DATA1
        MOV 	DS,AX
        MOV		AX,EXS
        MOV 	ES,AX 				
        ;S:BP
INITIAL:
        CALL 	INIT 				
        CMP 	flag,0 				      
        JE 		NEWGAME
        CMP 	flag,2 				     
        JE 		END_MAIN
        CALL 	SETTING 			        
        JMP 	INITIAL
NEWGAME:
        CALL 	INIT_GAME			
        CALL	GAME				   
        JMP 	INITIAL
END_MAIN:
        MOV 	AH,4CH
        INT 	21H
MAIN	ENDP
;**********************************************************

;*********************************************************
PUSH_REG	MACRO
        PUSH    AX
        PUSH    BX
        PUSH    CX
        PUSH    DX
        PUSH    SI
        PUSH 	DI
        PUSHF
ENDM
;**********************************************************

;**********************************************************
POP_REG 	MACRO
        POPF
        POP 	DI
        POP     SI
        POP     DX
        POP     CX
        POP     BX
        POP     AX
ENDM
;**********************************************************

;*******************************************************
WRITE 	MACRO	PAGE,ROW,COL,COLOR,CHAR
        PUSH_REG
        MOV		BH,PAGE 			        
        MOV		DH,ROW 				        
        MOV		DL,COL 				       
        MOV		AH,02H				
        INT 	10H
        MOV		AL,CHAR 			
        MOV		BL,COLOR 			
        MOV		CX,1 				
        MOV		AH,09H				   
        INT 	10H
        POP_REG
ENDM
;**********************************************************


;**********************************************************
MV_CUR 	MACRO	PAGE,ROW,COL
        PUSH_REG
        MOV		BH,PAGE 			    
        MOV		DH,ROW 				     
        MOV		DL,COL 				       
        MOV		AH,02H				
        INT 	10H
        POP_REG
ENDM
;**********************************************************


;**********************************************************
MODULUS	MACRO 	NUM1,NUM2
        PUSH_REG
        MOV 	AX,NUM1
        MOV 	BX,NUM2
        ADD 	AX,BX
        MOV 	DX,0
        DIV		BX
        MOV 	NUM1,DX 			
        POP_REG
ENDM
;**********************************************************

;*********************************************************
RING	MACRO	WAIT
        PUSH_REG
GET_FREQUENCE:
        LEA 	DI,music_key
        MOV 	AX,56
        MUL 	music
        ADD 	DI,AX
        ADD 	DI,music_ptr
        MOV 	AL,[DI]
        DEC 	AL
        SAL 	AL,1
        XOR 	AH,AH
        LEA		SI,music_freq
        ADD 	SI,AX
        MOV 	DI,[SI]
        INC 	music_ptr
        MODULUS music_ptr,56
SOUND:
        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
        MOV 	BX,WAIT
WAIT1:
        MOV 	CX,2800
DELAY:
        LOOP 	DELAY
        DEC 	BX
        JNZ 	WAIT1
        MOV 	AL,AH
        OUT 	61H,AL
RING_END:
        POP_REG
ENDM
;**********************************************************

;
;Print String
;**********************************************************
P_STR	MACRO 	PAGE,ROW,COL,STR,LEN,COLOR
        MOV 	BP,STR 				
        MOV 	AH,13H				      
        MOV		BH,PAGE				
        MOV 	DH,ROW 				       
        MOV 	DL,COL				      
        MOV 	CX,LEN	 			
        MOV 	AL,1				
        MOV 	BL,COLOR 			       
        INT 	10H 				;CALL BIOS
ENDM
;**********************************************************



;**********************************************************
FIND	MACRO	CHAR
        LOCAL 	LOOP1,LOOP2,NEXT1,NEXT2,FIND_END
        PUSH_REG

        add 	CHAR,'A'
        sub 	CHAR,'a'			
        mov 	aim,CHAR 			

       
        MOV		CH,24
LOOP1:
        MOV		CL,79
LOOP2:
        MOV 	BH,2				      
        MOV		DH,CH 				        
        MOV		DL,CL 				        
        MOV		AH,02H				
        INT 	10H
        MOV		BH,2				      
        MOV 	AH,08H				       
        INT 	10H
        CMP		AH,spec_color		
        JE 		NEXT2
        CMP 	AL,aim
        JNE		NEXT2

        WRITE 	2,CH,CL,spec_color,aim 	
        INC		hit 				

        RING	100					
        JMP 	FIND_END
NEXT2:
        DEC 	CL
        CMP 	CL,0
        JGE 	LOOP2
NEXT1:
        DEC 	CH
        CMP		CH,0
        JGE 	LOOP1
FIND_END:
        POP_REG
ENDM
;**********************************************************


;**********************************************************
INIT	PROC	NEAR
        PUSH_REG
SET:
        MOV 	AH,05H				  
        MOV 	AL,0				
        INT 	10H 				;CALL BIOS

        MOV 	flag,0
        LEA 	AX,init_msg 		
        P_STR 	0,7,0,AX,603,base_color

        
        LEA 	AX,msg1
        P_STR 	0,18,0,AX,65,spec_color

        LEA 	AX,msg2
        P_STR 	0,19,0,AX,65,base_color

        LEA 	AX,msg3
        P_STR 	0,20,0,AX,65,base_color

CHOOSE:
        MOV 	AH,00H
        INT 	16H
        CMP 	AL,0DH
        JE 		SET_END
        CMP 	AL,'w'
        JE 		UP
        CMP 	AL,'s'
        JE 		DOWN
        JMP 	CHOOSE
UP:
        DEC 	flag
        JMP 	NEXT
DOWN:
        INC 	flag
NEXT:        
		LEA 	AX,msg1
        P_STR 	0,18,0,AX,65,base_color
        LEA 	AX,msg2
        P_STR 	0,19,0,AX,65,base_color
        LEA 	AX,msg3
        P_STR 	0,20,0,AX,65,base_color

        MODULUS flag,3 				;flag=(flag+3)%3

         
        CMP 	flag,0
        JE 		P_NEWGAME
        CMP 	flag,1
        JE 		P_SET
        ;P_EXIT
        LEA 	AX,msg3
        P_STR 	0,20,0,AX,65,spec_color
        JMP 	CHOOSE
P_NEWGAME:
        LEA 	AX,msg1
        P_STR 	0,18,0,AX,65,spec_color
        JMP 	CHOOSE
P_SET:
        LEA 	AX,msg2
        P_STR 	0,19,0,AX,65,spec_color
        JMP 	CHOOSE
SET_END:
        POP_REG
        RET
INIT 	ENDP
;**********************************************************


;**********************************************************
SETTING PROC  	NEAR
        PUSH_REG
SETINIT:
        MOV 	AH,05H				        
        MOV 	AL,1				
        INT 	10H 				;CALL BIOS

        LEA 	AX,set_msg 			
        P_STR 	1,7,0,AX,603,base_color

        MOV 	BX,10

        MOV 	DX,0 				
        MOV 	AX,roll_gap
        DIV 	BX
        DEC 	AX
        MOV 	roll_gap,AX

        MOV 	DX,0 				
        MOV 	AX,char_gap
        DIV 	BX
        DEC 	AX
        MOV 	char_gap,AX

        MOV 	BX,char_gap
        ADD 	BL,'0' 				;int 2 char
        WRITE   1,9,44,spec_color,BL

        MOV 	BX,roll_gap
        ADD 	BL,'0' 				;int 2 char
        WRITE   1,10,44,base_color,BL

        LEA 	BX,music_name
        MOV 	AX,music
        MOV 	CX,25
        MUL 	CX
        ADD 	BX,AX
        P_STR 	1,11,38,BX,25,base_color

        LEA 	BX,color_name
        MOV 	AX,color
        MOV 	CX,25
        MUL 	CX
        ADD 	BX,AX
        P_STR 	1,12,38,BX,25,base_color

        MOV 	flag,0
CHOOSE:
        MOV 	AH,00H 				       
        INT 	16H
        CMP 	AL,0DH 				;enter?
        JE 		SET_END

        CMP 	AL,'w'
        JE 		UP
        CMP 	AL,'s'
        JE 		DOWN
        CMP 	AL,'a'
        JE 		DECREASE
        CMP 	AL,'d'
        JE 		INCREASE
UP:
        DEC 	flag
        MODULUS flag,4				;flag=(flag+3)%3
        JMP 	NEXT
DOWN:
        INC 	flag
        MODULUS flag,4				;flag=(flag+3)%3
        JMP		NEXT
INCREASE:
         CMP 	flag,0
         JE 		INC_CHAR
         CMP 	flag,1
         JE 		INC_ROLL
         CMP 	flag,3
         JE 		INC_COLOR
         INC		music
         MODULUS music,5 			
         JMP		NEXT
INC_CHAR:
        INC 	char_gap
        MODULUS char_gap,9 			
        JMP		NEXT
INC_ROLL:
        INC 	roll_gap
        MODULUS roll_gap,9 			
        JMP 	NEXT
INC_COLOR:
        INC 	color
        MODULUS color,5
        JMP 	NEXT
DECREASE:
         CMP 	flag,0
         JE 		DEC_CHAR
         CMP 	flag,1
         JE 		DEC_ROLL
         CMP 	flag,3
         JE 		DEC_COLOR
         DEC 	music
         MODULUS music,5 			
         JMP		NEXT
DEC_CHAR:
        DEC 	char_gap
        MODULUS char_gap,9 			
        JMP		NEXT
DEC_ROLL:
        DEC 	roll_gap
        MODULUS roll_gap,9 			
        JMP 	NEXT
DEC_COLOR:
        DEC 	color
        MODULUS color,5
        JMP 	NEXT
NEXT:
        LEA 	DI,color_num
        MOV 	AX,color
        SAL 	AX,1
        ADD 	DI,AX
        MOV 	BX,[DI]
        MOV 	spec_color,BH
        MOV 	base_color,BL


        
        LEA 	AX,set_msg 			
        P_STR 	1,7,0,AX,603,base_color

        MOV 	BX,char_gap
        ADD 	BL,'0' 			;int 2 char
        WRITE   1,9,44,base_color,BL

        MOV 	BX,roll_gap
        ADD 	BL,'0' 			;int 2 char
        WRITE   1,10,44,base_color,BL

        LEA 	BX,music_name
        MOV 	AX,music
        MOV 	CX,25
        MUL 	CX
        ADD 	BX,AX
        P_STR 	1,11,38,BX,25,base_color

        LEA 	BX,color_name
        MOV 	AX,color
        MOV 	CX,25
        MUL 	CX
        ADD 	BX,AX
        P_STR 	1,12,38,BX,25,base_color

              
        CMP 	flag,0
        JE 		P_CHAR
        CMP 	flag,1
        JE 		P_ROLL
        CMP 	flag,3
        JE 		P_COLOR
        ;P_MSC:
        LEA 	BX,music_name
        MOV 	AX,music
        MOV 	CX,25
        MUL 	CX
        ADD 	BX,AX
        P_STR 	1,11,38,BX,25,spec_color
        JMP		CHOOSE
P_CHAR:
        MOV 	BX,char_gap
        ADD 	BL,'0' 			;int 2 char
        WRITE   1,9,44,spec_color,BL
        JMP 	CHOOSE
P_ROLL:
        MOV 	BX,roll_gap
        ADD 	BL,'0' 			;int 2 char
        WRITE   1,10,44,spec_color,BL
        JMP 	CHOOSE
P_COLOR:
        LEA 	BX,color_name
        MOV 	AX,color
        MOV 	CX,25
        MUL 	CX
        ADD 	BX,AX
        P_STR 	1,12,38,BX,25,spec_color
        JMP		CHOOSE
SET_END:
        
        MOV 	BX,10 			     
        MOV 	AX,roll_gap
        INC 	AX
        MUL 	BX
        MOV 	roll_gap,AX

        MOV 	AX,char_gap
        INC 	AX
        MUL 	BX
        MOV 	char_gap,AX

        POP_REG
        RET
SETTING ENDP
;**********************************************************

;**********************************************************
INIT_GAME	PROC	NEAR
        PUSH_REG
SET:
        MOV 	AH,05H				        
        MOV 	AL,2				
        INT 	10H 				;CALL BIOS

        MOV 	music_ptr,0

        MOV		AH,07H				
        MOV		AL,0				
        MOV		BH,base_color
        MOV		CH,0				      
        MOV		CL,0				     
        MOV		DH,24				      
        MOV		DL,79				       
        INT 	10H					;CALL BIOS

        MOV		AH,2CH
        INT 	21H
        AND		DH,DH 				
        MOV		roll_last,DX		
        MOV		char_last,DX		
        MOV 	sum,0				
        MOV 	hit,0				

        MOV 	AH,0CH
        MOV 	AL,00H				
        INT		21H					

INIT_END:
        POP_REG
        RET
INIT_GAME	ENDP
;**********************************************************


;**********************************************************
GAME	PROC	FAR
        PUSH_REG
        MOV		CX,10
GAMING:
        CALL	ROLL_DOWN			
        CALL	NEW_CHAR			

        CALL	LISTEN				
        JMP		GAMING
GAME_END:
        POP_REG
        RET
GAME	ENDP
;**********************************************************


;**********************************************************
ROLL_DOWN	PROC	NEAR
            PUSH_REG
GET_GAP:
            MOV		AH,2CH
            INT 	21H
            AND		DH,DH
            SUB		DX,roll_last
            CMP		DX,0
            JGE 	JUDGE
            ADD		DX,100		
JUDGE:								            
CMP		DX,roll_gap
            JB		ROLL_END
DO_ROLL:
            MOV		AH,07H			
            MOV		AL,1			
            MOV		BH,base_color
            MOV		CH,0			           
            MOV		CL,0			           
            MOV		DH,24			           
            MOV		DL,79			           
            INT 	10H				;CALL BIOS

            MOV		AH,2CH
            INT 	21H
            AND		DH,DH
            MOV		roll_last,DX 	
ROLL_END:
            POP_REG
            RET
ROLL_DOWN	ENDP
;**********************************************************


;**********************************************************
NEW_CHAR	PROC	NEAR
            PUSH_REG

GET_GAP:
            MOV		AH,2CH
            INT 	21H
            AND		DH,DH 			;get current time
            SUB		DX,char_last
            CMP		DX,0
            JGE 	JUDGE
            ADD		DX,100			
JUDGE:								        
			CMP		DX,char_gap
            JB		CHAR_END
DO_NEWCHAR:
            MOV		LEFT,1
            MOV 	RIGHT,81
            CALL	RAND 			
            MOV		AX,RANDOM
            DEC		AX
            MOV		LEFT,1
            MOV		RIGHT,26		
            CALL	RAND
            MOV		CX,RANDOM
            DEC		CX
            ADD		CX,'A' 			

            WRITE	2,0,AL,base_color,CL 	;

            INC 	sum 			;

            MOV		AH,2CH
            INT 	21H
            AND		DH,DH 			;get current time
            MOV		char_last,DX 	;
CHAR_END:
            POP_REG
            RET
NEW_CHAR	ENDP
;**********************************************************

;**********************************************************
LISTEN	PROC	NEAR
        PUSH_REG
GET_STATUS:
        MOV		AH,01H				
        INT 	16H
        JZ  	LISTEN_END			
        MOV 	AH,07H				
        INT 	21H					

        CMP 	AL,1BH				;Esc?
        JE 		DO_PAUSE 			
        CMP 	AL,'a'				;a-z?
        JB		NEXT_STATUS
        CMP 	AL,'z'
        JG 		NEXT_STATUS
        FIND	AL
        JMP 	GET_STATUS 			;other
DO_PAUSE:
        CALL 	PAUSING
NEXT_STATUS:
        JMP 	GET_STATUS
LISTEN_END:
        POP_REG
        RET
LISTEN	ENDP
;**********************************************************


;**********************************************************
PAUSING	PROC	NEAR
        PUSH_REG

        MOV 	AH,05H				    
        MOV 	AL,3				
        INT 	10H 				;CALL BIOS

        LEA 	AX,pause_msg 		
        P_STR 	3,7,0,AX,603,base_color

        MOV		BX,sum 				     
        MV_CUR 	3,9,30 				
        CALL 	PRINT

        MOV		BX,hit 				
        MV_CUR 	3,9,46
        CALL 	PRINT

        MV_CUR 	3,10,39				     
        MOV 	AX,hit 				    
        MOV		BX,100
        MUL		BX
        MOV 	BX,sum
        CMP 	BX,0
        JE 		P3					
        DIV 	BX
        MOV 	BX,AX
P3:
        CALL 	PRINT

        MV_CUR 	3,16,0

        MOV 	AH,00H
        INT 	16H
        CMP 	AL,1BH 				
        JNE  	CONTINUE 			
EXIT:
        CALL 	MAIN 				
CONTINUE:
        MOV 	AH,05H				       
        MOV 	AL,2				
        INT 	10H 				;CALL BIOS

        POP_REG
        RET
PAUSING ENDP
;**********************************************************

;*********************************************************
RAND	PROC	NEAR
        PUSH_REG

GET_RAND:
        MOV 	AX, 233   			
        MOV 	DX, 41H 			       
        OUT 	DX, AX  			      
        IN 		AL, DX   			
        MUL		SEED 				
SET_RAND:
        MOV		BX,LEFT
        MOV		CX,RIGHT
        SUB 	CX,BX 				
        INC		CX
        DIV		CX					
        ADD		DX,BX 				
        MOV		RANDOM,DX

        MOV		SEED,DX				
RAND_END:
        POP_REG
        RET
rand	ENDP
;**********************************************************

;**********************************************************
PRINT	PROC	NEAR
        PUSH_REG

        MOV		AX,BX
        MOV		BX,10
        MOV		CX,0
        CMP		AX,0				
        JNE 	LOOP1
        PUSH 	AX
        INC 	CX
        JMP 	LOOP2
LOOP1:
        CMP		AX,0				        
        JE		LOOP2
        MOV		DX,0
        DIV		BX
        PUSH 	DX
        INC		CX
        JMP		LOOP1
LOOP2:
        POP 	DX 					    
        ADD		DL,30H				;int 2 char
        MOV 	AH,0EH 				        
        MOV 	AL,DL 				
        MOV 	BL,base_color 		
        INT 	10H 				;CALL BIOS
        LOOP 	LOOP2
PRINT_END:
        MOV		DL,0AH
        INT		21H
        MOV		DL,0DH
        INT		21H

        POP_REG
        RET
PRINT	ENDP
;**********************************************************
CODE1 ENDS
;----------------------------------------------------------

;----------------------------------------------------------
STACKS SEGMENT
    stk		db		1000	dup(?)
STACKS ENDS
;----------------------------------------------------------


;----------------------------------------------------------
DATA1 SEGMENT
    seed		dw		?			   
    random		dw		?			  
    left		dw		?			    
    right		dw		?			
    char_gap	dw		90			
    roll_gap	dw 		90			
    char_last	dw 		?			
    roll_last	dw 		?			
    sum			dw 		0			 
    hit			dw 		0			

    aim 		db 		?			
    flag 		dw 		? 			
                                    

    music 		dw 		0 			

    music_freq 	dw 		262
                dw		294
                dw		330
                dw		349
                dw		392
                dw		440
                dw		494 		

    music_key 	db 		1,1,5,5,6,6,5,4,4,3,3,2,2,1,1,1,5,5,6,6,5,4,4,3,3
                db		2,2,1,1,1,5,5,6,6,5,4,4,3,3,2,2,1,1,1,5,5,6,6,5,1,1,1,1,1,1,1 			               
                db 		3,1,6,5,6,6,1,6,6,6,3,1,2,5,3,2,5,6,1,6,2,3,1,6,5
                db 		3,1,6,5,6,3,1,6,6,5,6,1,6,2,3,1,6,5,3,1,6,5,6,3,1,6,6,1,1,1,1 			
                db 		1,3,3,2,1,3,2,1,3,3,2,1,1,1,1,6,1,2,3,3,3,0,5,6,1
                db 		1,1,6,1,2,3,2,3,5,5,6,1,1,6,1,2,3,2,3,2,2,1,2,1,1,1,1,1,1,1,1 			              
                db		5,3,2,2,1,1,1,1,1,1,1,6,5,5,6,6,6,6,1,2,3,5,5,5,5
                db		1,1,2,2,2,1,1,7,1,1,1,1,6,5,5,6,6,6,6,1,1,2,3,5,5,5,5,3,2,2,2 			             
                db 		1,3,3,2,1,3,2,1,3,3,2,1,1,1,1,6,1,2,3,3,3,0,5,6,1
                db		3,3,2,3,2,1,1,1,2,2,1,1,5,5,6,5,6,5,7,6,6,5,6,1,3,2,1,1,1,1,1	 		

    music_ptr 	dw 		?

      color 		dw 		0 			
      base_color 	db 		07H 		
      spec_color 	db 		04H 		
      
      color_num 	dw 		0407H 		                 
      dw 		0402H		                 
      dw 		0207H		                 
      dw 		8407H		                
      dw 		0704H		
      DATA1 ENDS
;----------------------------------------------------------

;----------------------------------------------------------
EXS	SEGMENT
    
    pause_msg	db 		'                *************************************************',0ah,0dh
                db 		'                *                                               *',0ah,0dh
                db 		'                *         sum:          score:                  *',0ah,0dh
                db 		'                *         your rate is    %                     *',0ah,0dh
                db 		'                *                                               *',0ah,0dh
                db 		'                *         press esc to exit                     *',0ah,0dh
                db 		'                *         or other key to continue              *',0ah,0dh
                db 		'                *                                               *',0ah,0dh
                db 		'                *************************************************',0ah,0dh
    
    init_msg	db 		'                *************************************************',0ah,0dh
                db 		'                *                                               *',0ah,0dh
                db 		'                *         A little word game                    *',0ah,0dh
                db 		'                *                                               *',0ah,0dh
                db 		'                *         Produced by _Backl1ght                *',0ah,0dh
                db 		'                *                                               *',0ah,0dh
                db 		'                *         press w,s and enter to choose         *',0ah,0dh
                db 		'                *                                               *',0ah,0dh
                db 		'                *************************************************',0ah,0dh

    msg1		db		'                          New Game                               ',0ah,0dh
    msg2		db		'                          Settings                               ',0ah,0dh
    msg3		db 		'                          Exit                                   ',0ah,0dh

    set_msg		db 		'                *************************************************',0ah,0dh
                db 		'                *                                               *',0ah,0dh
                db 		'                *         new char speed :                      *',0ah,0dh
                db 		'                *         roll down speed:                      *',0ah,0dh
                db 		'                *         game music :                          *',0ah,0dh
                db 		'                *         game color :                          *',0ah,0dh
                db 		'                *         press wsad and enter to choose        *',0ah,0dh
                db 		'                *                                               *',0ah,0dh
                db 		'                *************************************************',0ah,0dh

    music_name 	db 		'little star              '
                db 		'hong yan                 '
                db 		'xiao qing ge             '
                db 		'lightest star            '
                db 		'ai pin cai hui ying      '

    color_name 	db 		'white(red)               '
                db 		'green(red)               '
                db 		'white(green)             '
                db 		'white(s_red)             '
                db 		'red(white)               '
EXS	ENDS
;----------------------------------------------------------
    END

三、执行结果视图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、总结

  • 代码可以用于学习,切记不可抄袭做作业之类的!
  • 祝大家学习愉快!

猜你喜欢

转载自blog.csdn.net/weixin_43648017/article/details/106891541