帮忙给我改一改,急要!!!!!!!感谢感谢!!!!!
源程序如下:
DATA SEGMENT
CAR DB 7
DB 52H,7,0,0
DB 0B1H,7,0,1
DB 0DBH,7,0,1
DB 0DBH,7,0,1
DB 4FH,7,1,0
DB 4FH,7,0,-3
DB 2,7,-2,1
CHAR_CNT DW ?
POINTER DW ?
LINE_ON DB ?
COL_ON DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
MAIN PROC FAR
PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DATA ; ;初始化DS
MOV DS,AX
MOV AH,0 ; ;设置300×200彩色图形方式
MOV AL,4
INT 10H
MOV AH,0BH ;;设置背景颜色
MOV BH,0
MOV BL,2
INT 10H
MOV AH,0BH ; ;设置彩色调板
MOV BH,01
MOV BL,00
INT 10H
CALL CLEAR_SCREEN ; ;清屏
LEA DI,CAR ; ;DI指向字符图形表
MOV DH,5 ;;从第5行5列位置开始
MOV DL,5 ; ;显示汽车
CALL MOVE_SHAPE
RET
MAIN ENDP
CLEAR_SCREEN PROC NEAR
PUSH AX ;;保护寄存器
PUSH BX
PUSH CX
PUSH DX
MOV AH,6 ; ;屏幕上卷功能
MOV AL,0
MOV CH,0 ; ;左上角行号
MOV CL,0 ; ;左上角列号
MOV DH,24 ; ;右下角行号
MOV DL,79 ; ;右下角列号
MOV BH,7 ; ;卷入行属性
INT 10H ; ;调用显示属性
POP DX ;;恢复寄存器
POP CX
POP BX
POP AX
RET ; ;返回主程序
CLEAR_SCREEN ENDP
;
MOVE_SHAPE PROC NEAR
PUSH AX ; ;保护寄存器
PUSH BX
PUSH CX
PUSH DX
PUSH DI
MOV AH,0FH ; ;取当前显示方式
INT 10H
SUB CH,CH ;;清除计数器CX的高字节
MOV CL,[DI] ;;CL放循环次数
INC DI ; ;DI指向字符图形表中的第一个字符
MOV CHAR_CNT,CX ; ;保存循环次数
MOV POINTER,DI
MOV LINE_ON,DH
MOV COL_ON,DL
PLOT_NEXT:
ADD DH,[DI+2] ; ;改变行列指针
ADD DL,[DI+3]
CMP DL,80 ; ;出屏否?
JB MOV_CRSR
CALL ERASE
POP DI
POP DX
POP CX
POP BX
POP AX
RET
MOV_CRSR: MOV AH,2 ; ;移动光标位置
INT 10H
MOV AL,[DI]
MOV BL,[DI+1] ; ;取字符值及属性
PUSH CX
MOV CX,1
MOV AH,09 ; ;显示字符
INT 10H
POP CX
ADD DI,4 ; ;DI指向下一个字符
LOOP PLOT_NEXT
CALL DLY_QRTR ; ;调用延时子程序
CALL ERASE ; ;调用擦除子程序
JMP SHORT PLOT_NEXT
MOVE_SHAPE ENDP
ERASE PROC NEAR
MOV CX,CHAR_CNT
MOV DI,POINTER
MOV DH,LINE_ON
MOV DL,COL_ON
ERASE_NEXT:
ADD DH,[DI+2]
ADD DL,[DI+3]
MOV AH,2
INT 10H
MOV AL,[DI]
MOV BL,0
PUSH CX
MOV CX,1
MOV AH,9
INT 10H
POP CX
ADD DI,4
LOOP ERASE_NEXT
MOV CX,CHAR_CNT
MOV DI,POINTER
MOV DH,LINE_ON
INC COL_ON
MOV DL,COL_ON
RET
ERASE ENDP
DLY_QRTR PROC NEAR ; ;延时子程序
PUSH CX
PUSH DX
MOV DX,5000
D11: MOV CX,2801
D12: LOOP D12
DEC DX
JNZ D11
POP DX
POP CX
RET
DLY_QRTR ENDP
CODE ENDS
END MAIN