回 帖 发 新 帖 刷新版面

主题:高手求教!!!(急)

STACK           SEGMENT STACK 'STACK'
                DB 1024 DUP (0)
STACK           ENDS

DATA            SEGMENT
TIMEA   EQU THIS   BYTE
                TH      DB      (?)
                TW      DB      (?)
                TS      DB      (?)
       
                ROW_REG DB      (?)    
                COL_REG DB      (?)
DATA            ENDS

VIDEO           SEGMENT AT 0B800H
WD_BUFFER       LABEL   WORD
V_BUFF          DB      25*80*2 DUP (?)
VIDEO           ENDS

PROGRAM         SEGMENT
MAIN            PROC FAR
                ASSUME  CS:PROGRAM,DS:DATA,SS:STACK,ES:VIDEO
START:          PUSH    DS        
                MOV     AX,0
                PUSH    AX
                MOV     AX,0B800H
                MOV     DS,AX
                MOV     CX,4000
                MOV     BX,0          ;ERROR OR NOT?

CLRM:           MOV     BYTE PTR [BX],0
                INC     BX
                LOOP    CLRM
  
                MOV     AX,DATA         
                MOV     DS,AX
                MOV     AX,VIDEO        
                MOV     ES,AX
                
                MOV     AH,2
                INT     1AH
                MOV     TH,CH
                MOV     TW,CL
                MOV     TS,DH
                MOV     CX,3
                MOV     BX,0

SHOWTIME:       PUSH    CX
                MOV     AL,TIMEA[BX]
                MOV     AL,0F0H
                MOV     CL,4
                SHR     AL,CL
                ADD     AL,30H
                MOV     AH,00001111B
                MOV     CL,00
                MOV     CH,24
                CALL    DISPLAY
                MOV     AL,TIMEA[BX]
                AND     AL,0FH
                ADD     AL,30H
                INC     CL
                CALL    DISPLAY
                INC     CL
                CALL    DISPLAY
                INC     CL
                MOV     AL,3AH
                MOV     AH,01011111B
                CALL    DISPLAY
                INC     BX
                POP     CX
                LOOP    SHOWTIME
             
                RET
MAIN            ENDP

DISPLAY         PROC    NEAR    ;address of display
                                ;buffer=row*80*2+col*2
                PUSH    BX
                PUSH    CX
                PUSH    AX
                MOV     AL,160
                MUL     CH      ;ROW*80*2(160)=AX

                MOV     BL,CL
                ROL     BL,1    ;BL*2
                MOV     BH,0
                ADD     BX,AX
                POP     AX
                MOV     ES:[WD_BUFFER+BX],AX
                POP     CX
                POP     BX
                RET
DISPLAY         ENDP

PROGRAM         ENDS
                END     START

回复列表 (共2个回复)

沙发

以上是我的一道作业题,题目是系统时间显示,语法的什么都没错,究竟是哪里错了?
请高手求教,小弟比较菜

板凳

能加点注释吗?实在是看不明白!

我来回复

您尚未登录,请登录后再回复。点此登录或注册