落落大方 发表于 2016-12-19 13:18:11

各位大神求救求救,明天就要交

编一段中断处理程序,在主程序运行的过程中,每隔10秒钟响铃一次,同时在屏幕上显示“The bell is ring!”。
DATA        SEGMENT
COUNT        DW   1
MESS        DB   'The bell is ring!', 0DH,0AH,'$'
DATA        ENDS
CODE        SEGMENT
        ASSUMECS:CODE, DS:DATA, ES: DATA
MAIN        PROCFAR
START:   PUSH        DS
        SUB        AX,AX
PUSH        AX
        MOV        AX,DATA
        MOV        DS,AX
        MOV        AL,1CH                ;取中断向量
        MOV        AH,35H
        INT        21H
PUSH        ES                ;存原中断向量段址
PUSH        BX          ;存原中断向量偏移量
PUSH        DS
MOV        DX,OFFSET ring;新偏移量送DX
MOV        AX, SEGring
MOV        DS,AX                ;新段址送DS
MOV        AL, 1CH
MOV        AH, 25H
INT           21H                ;写入新的中断向量
POP       DS
IN           AL,21H                ;读取中断屏蔽字
AND        AL, 11111110B        ;允许定时器中断
OUT        21H, AL
STI                        ;开中断
MOV        DI, 2000
DELAY:MOV   SI,3000                ;延时
DELAY1:DEC        SI
       JNZDELAY1
                  DECDI
                  JNZDELAY
                  POPDX        ;恢复原中断向量
                  POPDS
                  MOVAL,1CH
                  MOVAH,25H
                  INT21H
RET
MAIN   ENDP
ring:PROC NEAR
        PUSH        DS       
        PUSH        AX
        PUSH        CX
        PUSH        DX
        MOV        AX,DATA
        MOV        DS,AX
STI                ;开中断
        DEC        COUNT        ;计秒值
        JNZ        EXIT
        MOV        DX, OFFSETMESS
        MOV        AH,09H
        INT        21H
        MOV        DX,100
        IN        AL,61H
        AND        AL,0FCH
SOUND:   XOR        AL,02
        OUT        61H,AL;扬声器发声
        MOV        CX,140H
WAIT1:LOOP        WAIT1;延时等待
        DEC        DX
        JNE        SOUND
        MOV        COUNT,182
EXIT: CLI        ;关中断
        POP        DX
        POP        CX
        POP        AX
        POP        DS
        IRET        ;中断返回
ring ENDP
CODE ENDS
       END        START


落落大方 发表于 2016-12-19 13:19:00

{:10_266:}{:10_266:}

zealstar 发表于 2016-12-21 21:29:21

43行:ring后面多了:号{:10_256:}

其实,我看不懂你的程序,只是对比上面MAIN PROC FAR和ENDP的表示方式得出的结论……{:10_260:}

zealstar 发表于 2016-12-21 21:33:57

我…………论坛卡了下就连发了…………{:10_285:}
页: [1]
查看完整版本: 各位大神求救求救,明天就要交