例1设置中断子程Sound的中断向量,类型号为60HcodeSEGMENTCS:codeASSUME;中断子程PROCstart:soundMOVAX. SEGsoundMOVDS, AXMOVDX,Offset soundMOVAL, 60HMOVAH,25HINT21HIRETENDPsoundINT60H;调用60H中断子程ENDScodeMOV AH, 4CHENDstartINT21H
例1 设置中断子程Sound 的中断向量,类型号为60H code SEGMENT ASSUME CS:code start: 、 MOV AX, SEG sound MOV DS, AX MOV DX, Offset sound MOV AL, 60H MOV AH, 25H INT 21H 、 INT 60H ;调用60H中断子程 、 MOV AH,4CH INT 21H ; 中断子程 sound PROC 、 、 、 IRET sound ENDP code ENDS END start
二、软中断程序设计软中断子程与子程序的编写类似,不同在:子程用CALL指令调用:中断子程用INT指令调用子程用RET指令返回:中断子程用IRET指令返回2.3.CALL指令直接用过程名做操作数即由过程名提供子程的入口地址INT指令由类型号N到中断向量表中固定的单元获得中断子程的入口地址
二、软中断程序设计 软中断子程与子程序的编写类似, 不同在: 1.子程用CALL指令调用;中断子程用INT指令调用 2.子程用RET指令返回;中断子程用IRET指令返回 3.CALL指令直接用过程名做操作数, 即由过程名提供子程的入口地址 INT指令由类型号N到中断向量表中固定的单元 获得中断子程的入口地址
对比子程序的编写,编写软中断程序时1.应在主程中将中断子程的入口地址(中断向量)放入中断向量表中。(可用25H系统功能完成)2.主程中用INT指令调用中断子程3.中断子程应用IRET返回
对比子程序的编写, 编写软中断程序时, 1. 应在主程中将中断子程的入口地址(中断向量) 放入中断向量表中。(可用25H系统功能完成) 2. 主程中用INT指令调用中断子程 3. 中断子程应用IRET返回
例编写一个60H类型的中断子程,功能是将BX寄存器的内容以16进制形式显示出来。若用子程编写:SEGMENTcodeADDDL,30HASSUME CS:codeCMPDL,39Hstart:JLEprintCALL list;调用子程ADDDL,07HMOVAH,4CHMOVAH.2Hprint:INT21H返回DOSINT21HDECCHlistPROC;子程JNZnextMOVCH, 4RET;子程返回MOVCL,4listENDPROLBX, CLnext:ENDScodeMOVDL, BLENDstartANDDL,0FH
例 编写一个60H类型的中断子程, 功能是将BX寄存器的内容以16 进制形式显示出来。 ADD DL, 30H CMP DL, 39H JLE print ADD DL, 07H print: MOV AH,2H INT 21H DEC CH JNZ next RET ;子程返回 list ENDP code ENDS END start code SEGMENT ASSUME CS:code start: CALL list ;调用子程 MOV AH, 4CH INT 21H ;返回DOS list PROC ;子程 MOV CH, 4 MOV CL, 4 next: ROL BX, CL MOV DL, BL AND DL, 0FH 若用子程编写:
用中断子程编写:listPROC;中断子程listMOV CH, 4MOV CL, 4SEGMENTcodeROLBX,CLnext:ASSUMECS:codeMOVDL,BLANDDL,0FHstart:ADDDL,30HMOV;用25H功能AX, SEG listCMPDL,39HMOVDS,AX将中断子程listJLEprint;的入口地址LEADX, listADDDL.07Hprint: MOV AH,2H;设置到MOVAL,60HINT 21HMOVAH,25H;中断向量表中DECCHINT21HJNZnext;中断返回IRETINT60H;调用中断子程listENDPMOVAH.4CHENDScodeINT21H;返回DOSEND start
code SEGMENT ASSUME CS:code start: MOV AX, SEG list ;用25H功能 MOV DS , AX ;将中断子程list LEA DX , list ;的入口地址 MOV AL , 60H ;设置到 MOV AH , 25H ;中断向量表中 INT 21H INT 60H ;调用中断子程 MOV AH , 4CH INT 21H ;返回DOS list PROC ;中断子程list MOV CH , 4 MOV CL , 4 next: ROL BX , CL MOV DL , BL AND DL, 0FH ADD DL, 30H CMP DL, 39H JLE print ADD DL, 07H print: MOV AH , 2H INT 21H DEC CH JNZ next IRET ;中断返回 list ENDP code ENDS END start 用中断子程编写: