汇编上下左右小车控制:
汇编代码:
汇编代码:
;显示字符 颜色 个数
WR MACRO CHA,ATR,NUM
MOV AH,2
INT 10H
MOV AL,CHA
MOV CX,NUM
MOV BL,ATR
MOV AH,9
INT 10H
ENDM
CODE SEGMENT
ASSUME CS:CODE
MAIN PROC FAR
CAR:
mov ah,0
mov al,3
INT 10H
LOP1:
MOV SI,0A0AH
LOP2:
MOV DX,SI
WR 0DBH,0ch,5
INC DH
SUB DL,4
WR 0dbH,30h,2
add dl,2
wr 0DBH,0ch,8
add dl,8
wr 001h,30h,2
INC DH
sub dl,7
WR 09H,8EH,1
ADD DL,6
WR 9,8EH,1
; CALL DELAY
JMP CURSER_XY
MOV AH,4CH
INT 21H
JLOP2:
JMP LOP2
CURSER_XY:
MOV AH,07h ;键盘输入无回显
INT 21H
CMP AL,1BH ;esc 退出
JZ OVER
; MOV CH,03H
CMP AL,31H ;输入1 向下移动
JNE N_DOWN
AA1: ; push cx
MOV DX,SI
INC DH
SUB DL,3
WR 0,0,1
MOV DX,SI
INC DH
SUB DL,3
WR 0dbH,30h,1
; pop cx
; dec CH
; CMP CH,0
; loop AA1
MOV DX,SI
CALL CLEAR
MOV DX,SI
INC DH
MOV SI,DX
CMP SI,5050H
JB JLOP2
JMP LOP1
N_DOWN:
CMP AL,32H ;2 向上移动
JNE N_UP
MOV DX,SI
ADD DH,1
ADD DL,6
WR 0,0,1
MOV DX,SI
ADD DH,1
ADD DL,6
WR 0dbH,30h,1
; dec CH
; CMP CH,2
; jnz AA1
MOV DX,SI
CALL CLEAR
MOV DX,SI
DEC DH
MOV SI,DX
CMP SI,5050H
JB JLOP2
JMP LOP1
N_UP:
CMP AL,33H ;3 向左移动
JNE N_LEFT
MOV DX,SI
INC DH
SUB DL,4
WR 0,0,1
MOV DX,SI
INC DH
SUB DL,4
WR 0dbH,30h,1
; dec CH
; CMP CH,2
; jnz AA1
MOV DX,SI
CALL CLEAR
MOV DX,SI
DEC DL
MOV SI,DX
CMP SI,5050H
JB JLOP2
JMP LOP1
N_LEFT:
CMP AL,34H ;4 向右移动
JNE CURSER_XY
MOV DX,SI
ADD DH,1
ADD DL,7
WR 0,0,1
MOV DX,SI
ADD DH,1
ADD DL,7
WR 0dbH,30h,1
; dec CH
; CMP CH,2
; jnz AA1
MOV DX,SI
CALL CLEAR
MOV DX,SI
INC DL
MOV SI,DX
CMP SI,5050H
JB JLOP2
JMP LOP1
OVER:
MOV AH,4CH
INT 21H
MAIN ENDP
CLEAR PROC NEAR
WR 0,0,5
INC DH
SUB DL,4
WR 0,0,2
add dl,2
wr 0,0,8
add dl,8
wr 0,0,2
INC DH
sub dl,7
WR 0,0,1
ADD DL,6
WR 0,0,1
RET
CLEAR ENDP
DELAY PROC NEWR
MOV CX,0FFFFH
LOOP $
MOV CX,0FFFFH
LOOP $
MOV CX,0FFFFH
LOOP $
MOV CX,0FFFFH
LOOP $
MOV CX,0FFFFH
LOOP $
MOV CX,0FFFFH
LOOP $
MOV CX,0FFFFH
LOOP $
RET
DELAY ENDP
CODE ENDS
END MAIN
运行效果: