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

📄 autocar.asm

📁 运行环境MASM.程序功能是:小车自动前进!界面简单且易于操作!
💻 ASM
字号:
DISP    MACRO  ADDR
            LEA DX,ADDR
            MOV AH,09H
            INT   21H
            ENDM
INPT    MACRO
            MOV AH,01H
            INT  21H
            ENDM
;********************设置汽车公路的相关数据****************** 
STACK SEGMENT STACK
            DB 256 DUP(?)
TOP     LABEL WORD
STACK ENDS
DATA  SEGMENT 
CAR    DB 5 DUP(20H)    ;汽车图形数据 
           DW     0DBDBH 
           DB      154 DUP(20H) 
           DW     0DBDBH 
           DB      20H 
           DW     0DBDBH 
           DB      20H 
           DW     0DBDBH 
           DB      20H 
           DW     0DBDBH 
           DB      151 DUP(20H),4FH,5 DUP(20H),4FH 
LENCAR  DW 330           ;汽车显示总长度 
ROAD  DW 80 DUP(01616H) ;公路图形数据 
LENROAD DB 80           ;公路显示总长度 
YQZ    DB '                     WELCOME TO PROGRAM OF  YOUNGER!'
           DB  0DH,0AH,'                          PRESS ANY KEY TO BEGIN!$'
ZQY    DB 0DH,0AH,0DH,0AH,0DH,0AH,'                    PRESS ANY KEY TO EXIT!$'
DATA ENDS 
;************************************************************** 


;**************************程序代码区************************** 
CODE   SEGMENT 
ASSUME CS:CODE,DS:DATA ,SS:STACK
START: MOV AX,DATA   ;程序开始 
             MOV DS,AX 
             LEA BP,CAR                  ;将汽车数据传给显示入口 
             MOV ES,AX 
             MOV AX,STACK
             MOV SS,AX
             MOV SP,OFFSET TOP
             DISP   YQZ
             INPT
             MOV CX,69D                 ;69祯画面 
             MOV DH,6D                  ;第6行 
             MOV DL,00H                 ;第0列 
S0:                                             ;动画 
CALL     CARDISPLAY                ;画汽车 
             INC DL                          ;向后移一列 
CALL     DELAY                         ;停留一小段时间 
LOOP    S0                                ;如果没到第69祯,继续画 
EXIT:     DISP   ZQY                  ;返回DOS 
             INPT
             MOV AX,4C00H 
             INT 21H 
;**************************显示汽车子程序********************** 
CARDISPLAY PROC NEAR 
CALL     CLEAR                           ;清屏 
             PUSH DX 
             PUSH CX 
             MOV CX,LENCAR           ;设置显示汽车长度 
             MOV BH,00H                  ;第0页 
             MOV BL,0F9H                 ;白色背景(F) 蓝色前景(9) 
             MOV AX,1301H               ;显示汽车 
             INT 10H  
             POP CX 
             POP DX 
             RET 
CARDISPLAY ENDP 
;************************************************************** 

;***************************清屏子程序************************* 
CLEAR  PROC NEAR 
             PUSH AX                        ;保存寄存器内容 
             PUSH BX 
             PUSH CX 
             PUSH DX 
             PUSH BP 
             PUSH ES 

             MOV AX,0600H              ;AH=06(滚动) AL=00(全屏空白) 
             MOV BH,0F0H               ;黑色背景(0) 白色前景(F) 
             SUB CX,CX                    ;左上角行:列  
             MOV DX,184FH             ;右下角行:列 
             INT 10H 
             MOV DH,11D                ;第11行 
CALL     ROADDISPLAY 
             MOV DH,12D                ;第12行 
CALL     ROADDISPLAY 
             POP ES                         ;恢复寄存器内容 
             POP BP 
             POP DX 
             POP CX 
             POP BX 
             POP AX 
             RET 
CLEAR  ENDP 
;**************************************************************  

;**************************显示子程序2*************************  
ROADDISPLAY PROC NEAR 
             MOV AX,DATA 
             MOV DS,AX 

             LEA BP,ROAD               ;将公路数据传给显示入口 
             MOV ES,AX 

             MOV DL,00H                 ;第0列 
             MOV CH,00H 
             MOV CL,LENROAD        ;设置显示公路长度 
             MOV BH,00H                 ;第0页 
             MOV BL,0F5H                ;白色背景(F) 棕色前景(9) 
             MOV AX,1301H              ;显示公路 
             INT 10H 
             RET  
ROADDISPLAY ENDP 
;************************************************************** 

;***************************延时子程序************************* 
DELAY PROC 
             PUSH CX                       ;保存寄存器内容 
             PUSH DX  
  
             MOV DX,0FFFH 
UP:       XOR CX,CX                    ;延时  
A:          LOOP A 
             DEC DX  
             JNZ UP 
             POP DX                         ;恢复寄存器内容 
             POP CX 
             RET                               ;返回 
DELAY  ENDP 
;************************************************************** 

CODE   ENDS 
             END START                   ;程序结束 
;************************************************************** 

⌨️ 快捷键说明

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