1

我提示用户输入:

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

我的任务告诉我 ctrl-c 应该“使用适当的错误消息中止程序”。

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

但我不知道如何制作中断处理程序,也不知道它应该在我的代码中的什么位置。协助将不胜感激,在此先感谢您。

4

2 回答 2

2

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

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... $"

我希望这有助于弄清楚东西是如何工作的。这个中断只需在屏幕上写“新的中断处理程序”

于 2016-04-11T02:21:24.877 回答
1

据我所知,函数 ah=25h 除了将中断向量写入中断向量表之外什么也不做。

该表位于地址 0000:0000 并包含指向中断的段:偏移量指针。

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

于 2013-10-16T12:52:17.847 回答