各位大神求救求救,明天就要交
编一段中断处理程序,在主程序运行的过程中,每隔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
{:10_266:}{:10_266:} 43行:ring后面多了:号{:10_256:}
其实,我看不懂你的程序,只是对比上面MAIN PROC FAR和ENDP的表示方式得出的结论……{:10_260:}
我…………论坛卡了下就连发了…………{:10_285:}
页:
[1]