自己修改int 1ch中断处理程序执行不正确应该怎么修改
自己修改了int 1ch的中断服务程序,在Windows的DOS下执行不正确,不知道应该怎么调试,情各位帮忙
调用很简单~~
你直接在程序中用这个语句
int 1ch
就可以调用了。
调试的话 你用DEBUG加载主程序 主程序中肯定有个安装中断程序的功能
一路T 到 安装程序完毕
然后通过中断向量表计算自己的中断程序被安装到了内存的什么地方 然后一路跟踪进去执行 调试
你还是不明白的话看下我以前学习的笔记
8086CPU用称为中断类型码的数据来标识中断信息的来源。中断类型码为一个字节型数据。可以表示256种中断信息的来源(简称中断源)。
内中断有四个,在8086CPU中的中断类型码如下:
1 除法错误 0
2 单步执行 1
3 执行int0指令 4
4 执行int n指令 n 为字节型立即数,是提供给CPU的中断类型码
中断向量表 所谓中断向量就是中断处理程序的入口地址
CPU用中断类型代码,通过查找中断向量表,就可以得到中断处理程序的入口地址。中断向量表在内存中存放,对于8086PC机。中断向量表指定放在内存地址0处。从0000-0000到0000-03E8的1000个单元中存放着中断向量表对于8086,这个入口地址包括段地址和偏移地址。高地址字存放段地址,低地址字存放偏移地址
中断过程(由CPU自行完成)
1 从中断信息中取得中断类型码
2 PUSHF
3 TF=0 IF=0
4 PUSH CS
5 PUSH IP
6 (ip)=(N*4),(CS)=(N*4+2)
中断处理程序
1 保存用到的寄存器
2 处理中断
3 恢复用到的寄存器
4 用iret指令返回
iret指令的功能用汇编语法描述为
pop ip
pop cs
popf