【问题标题】:Display error message when aborting input (ctrl-c) with DOS interrupt 0Ah (read input to buffer)使用 DOS 中断 0Ah(将输入读取到缓冲区)中止输入 (ctrl-c) 时显示错误消息
【发布时间】:2013-10-16 05:31:55
【问题描述】:

我提示用户输入:

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

我的任务告诉我 control-c 应该“用适当的错误消息中止程序”。这是怎么做到的?

提前谢谢你。

【问题讨论】:

    标签: assembly x86 dos x86-16


    【解决方案1】:

    请始终查阅 Ralf Brown 的 16 位编程中断列表。

    Int 21/AH=0Ah (BUFFERED INPUT) 说:

    注意: ^C/^Break 被检查,如果检测到任何一个,则调用 INT 23。

    Int 23h (CONTROL-C/CONTROL-BREAK HANDLER) 说:

    任何 DOS 调用都可以在 INT 23 处理程序中安全地进行,但如果处理程序确实调用了 DOS,则必须检查递归调用。

    使用Int 21/AH=25h (SET INTERRUPT VECTOR) 注册您自己的中断处理程序,您可以在其中打印消息并退出。

    相关:

    【讨论】:

    • 我并不完全清楚 25h 是如何实现的。我可以举个例子吗?
    • 我以前从未亲自使用过它,但我相信您所要做的就是mov dx, OFFSET my_handler; mov ax, 2523h; int 21h; - 那篇文章中有一个简短的sn-p。
    猜你喜欢
    • 1970-01-01
    • 2015-06-12
    • 1970-01-01
    • 2011-07-01
    • 2014-09-24
    • 1970-01-01
    • 2013-03-13
    • 1970-01-01
    相关资源
    最近更新 更多