如何使用DOS中断21h / AH = 25h(设置中断向量)?

时间:2013-10-16 08:37:16

标签: assembly x86 dos x86-16

我提示用户输入:

mov ah, 0Ah
mov dx, OFFSET buffer
int 21h

我的作业告诉我ctrl-c应该“用适当的错误信息中止程序”。

有人告诉我,只要调用或检测到ctrl-c,就会调用int 23h。显然我可以通过int 21h / ah = 25h注册我自己的中断处理程序。

但是我不知道如何创建一个中断处理程序,也不知道我的代码应该放在哪里。非常感谢您的帮助,谢谢您。

2 个答案:

答案 0 :(得分:1)

据我所知,函数啊= 25h只会将中断向量写入中断向量表。

该表位于地址0000:0000,包含段:到中断的偏移指针。

这意味着:函数25h只是将段(CS的值)写入地址0000:008E,偏移量(中断处理程序的地址)写入0000:008C。

答案 1 :(得分:1)

执行以下操作来编写自定义中断处理程序

SettingIntVector:
     mov ah,25h      ;Here set your ah register for calling Interrupt vector
     mov al,22h      ;Your Interrupt Address
     mov dx,IntHandlerCode   ;Interrupt Handler
     int 21h                 ;Dos Interrupt 



 IntHandlerCode:
    mov ah,9
    mov dx, offset our_text
     mov ah,9
    int 21h   
    iret

our_text db "new Interrupt Handler... $"

我希望这有助于弄清楚东西的运作方式。这个中断只需将“新的中断处理程序”写入屏幕