我的汇编程序原代码如下,(这是一个图文显示的程序代码),不能运行,那位老师能帮我完善将不胜感激,急用,谢谢,谢谢
各模块详细设计
下面是整体的代码,各个子模块在程序中加以注释。
DATA SEGMENT
CAR DB 94 ;定义字符
DB 02H,122,-5,3
…
DB 02H,122,0,-1
CHAR_CNT DW ?
POINTER DW ?
LINE_ON DB ?
COL_ON DB ?
DATA ENDS
STACKI SEGMENT
DB 2000 DUP (?)
STACKI ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACKI
MAIN PROC FAR ;定义过程
PUSH DS
SUB AX,AX ;清0
PUSH AX
MOV AX,DATA
MOV DS,AX
MOV AH,0 ;0号功能调用,设置显示模式
MOV AL,0 ;显示模式的属性为 320*200 4色
INT 10H ;10号中断调用,BIOS 對螢幕及顯 示器所提供的服務程式
MOV AH,0BH ;0B功能调用,设置调色板,背景色或边框
MOV BH,0 ;设置颜色
MOV BL,2 ;颜色
INT 10H
MOV AH,0BH
MOV BH,01 ;选择调色板
MOV BL,00 ;调色板00
INT 10H
CALL CLEAR_SCREEN ;调用清屏子程序
LEA DI,CAR
MOV DH,10
MOV DL,2
CALL MOVE_SHAPE
MOV AH,8 ;8号功能调用,无回显的字符的输入
INT 21H ;中断21
CMP AL,71H
JZ EXIT ;标志位结果为0转移
JB NEXT ;无符号数低于时转移
NEXT: CMP AL,51H
JZ EXIT
MAIN ENDP
CLEAR_SCREEN PROC NEAR ;清屏子程序
PUSH AX ;保护现场
PUSH BX
PUSH CX
PUSH DX
MOV AH,6 ;6号功能调用,初始化屏幕
MOV AL,0 ;清窗口
MOV CH,0 ;窗口的左上角位置(0,0)
MOV CL,0
MOV DH,120 ;右下角位置(200,120)
MOV DL,200
MOV BH,7 ;空白区域的缺省属性
INT 10H ;10号中断调用
POP DX ;恢复现场
POP CX
POP BX
POP AX
RET ;返回
CLEAR_SCREEN ENDP
DLY_QRTR PROC NEAR ;延时子程序
PUSH CX
PUSH DX
MOV DX,5000
D11: MOV CX,25000
D12: LOOP D12 ;循环25000次
DEC DX ;DX-1
JNZ D11 ;结果不为0时转移
POP DX
POP CX
RET
DLY_QRTR ENDP
MOVE_SHAPE PROC NEAR ;擦除子程序