?? robot.asm
字號:
DSEG SEGMENT
ROBOT DB 7
DB 5CH,8EH,0,0
DB 08H,06H,0,1
DB 2FH,8EH,0,1
DB 0DBH,0AH,1,-1
DB 13H,7,1,0
DB 2,84H,-3,0
DB 9DH,94H,-1,0
COUNT DW 0
POINTER DW 0
LINE DB 0
COLUMN DB 0
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG,ES:DSEG
START:MOV AX,DSEG
MOV DS,AX
MOV ES,AX
MOV AH,0
MOV AL,3
INT 10H
CALL CLEAR
MOV DI,OFFSET ROBOT
MOV DX,0800H
MOV BH,0
CALL MOVES
CALL CLEAR
MOV AX,4C00H
INT 21H
MOVES PROC
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH DI
XOR CH,CH
MOV CL,[DI]
INC DI
MOV COUNT,CX
MOV POINTER,DI
MOV LINE,DH
MOV COLUMN,DL
NEXT: ADD DH,[DI+2]
ADD DL,[DI+3]
CMP DL,80
JB WRITE
POP DI
POP DX
POP CX
POP BX
POP AX
RET
WRITE:MOV AH,2
INT 10H
MOV AL,[DI]
MOV BL,[DI+1]
PUSH CX
MOV AH,9
MOV CX,1
INT 10H
POP CX
ADD DI,4
LOOP NEXT
CALL DELAY
CALL ERASE
JMP NEXT
MOVES ENDP
ERASE PROC
MOV CX,COUNT
MOV DI,POINTER
MOV DH,LINE
MOV DL,COLUMN
L: ADD DH,[DI+2]
MOV AH,3
ADD DL,[DI+3]
INT 10H
MOV AL,[DI]
MOV BL,0
PUSH CX
MOV AH,9
MOV CX,1
INT 10H
POP CX
ADD DI,4
LOOP L
MOV CX,COUNT
MOV DI,POINTER
MOV DH,LINE
INC COLUMN
MOV DL,COLUMN
RET
ERASE ENDP
DELAY PROC
PUSH CX
PUSH DX
MOV DX,10000
GO: MOV CX,5000
REP1: LOOP REP1
DEC DX
JNZ GO
POP DX
POP CX
RET
DELAY ENDP
CLEAR PROC
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV BH,7
MOV AX,0600H
MOV CX,0
MOV DX,184FH
INT 10H
POP DX
POP CX
POP BX
POP AX
RET
CLEAR ENDP
CSEG ENDS
END START
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -