![]() |
#2
纸莎草2008-01-03 10:47
帮忙给我改一改,急要!!!!!!!感谢感谢!!!!!
源程序如下:
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 |
编程在屏幕上显示一个开动的汽车
提示:在屏幕上显示出动画的效果,可分5步进行
1、在屏幕上显示图形(单字符或多字符图形)。
2、延迟一个时间周期,这样图形更清晰。
3、清除图形。
4、改变图形的行列坐标。
5、返回第一步,重复上述过程。