例8.7 除数为0时的软件中断(类型0)处理程序
  此程序分成两个主要部分:初始化部分和中断处理部分。


  初始化部分(Init)设置新的0型中断向量,显示一条信息,然后完成终止和驻留后退出程序。这种特殊的退出是用INT 21H的功能31H,它将保留程序所占的内存,从而使这些内存单元不被以后的应用程序破坏。

  中断处理程序(Zdiv)在发生一个被零除中断时接收控制。中断处理程序先保存有关寄存器的值,然后打印出信息询问用户是退出程序(Quit)还是继续(Continue)。若键入"C"要求继续执行程序,则处理程序恢复所有寄存器并执行IRET返回主程序(显示一个标记符#),当然此时除法的操作结果应是无效的。若键入"Q"要求退出,则从处理程序直接返回DOS(无标记符显示)。这里返回DOS,是用INT 21H的功能4CH,该功能是唯一不依赖于任何段寄存器内容的终止功能,例如,CS寄存器不必指向PSP所在的段。该功能的另一个优点是能在AL中返回一个表明程序是否正常终止的出口代码。系统出口代码的含义为:00 - 正常终止;01 - 用Ctrl-C终止;02 - 严重设备错误引起终止;03 - 用功能调用31H终止。左侧是处理除数为0错误的中断处理程序清单。