看王爽的 汇编语言 12章。。
(1), 用debug 查看内存,情况如下:
0000:0000 6B 10 A7 00 BB 01 70 00 - 16 00 9D 03 8B 01 7D 00
则,4号中断源则对应的中断处理程序的入口地址是:____________
(2) 存储N号中断源对应的中断处理程序入口的偏移地址的内存单元的地址为:___________________,存储N号中断源对应的中断处理程序入口的段地址的内存单元的地址为:___________________,
------解决方案--------------------------------------------------------
0000:0000 6B 10 A7 00 BB 01 70 00 - 16 00 9D 03 8B 01 7D 00
0号中断 偏移地址:106BH 段值 00A7H
1号中断 偏移地址:01BBH 段值 0070H
2号中断 偏移地址:0016H 段值 039DH
3号中断 偏移地址:018BH 段值 007DH
(2) 存储N号中断源对应的中断处理程序入口的偏移地址的内存单元的地址为: word ptr [n*4],存储N号中断源对应的中断处理程序入口的段地址的内存单元的地址为:(word ptr [n*4+2])*10H。
------解决方案--------------------------------------------------------
谢谢mengshijie_1981(云中雀)我刚巧也看到这里
存储N号中断源对应的中断处理程序入口的偏移地址的内存单元的地址为: word ptr [n*4],
这里word ptr [n*4]也应该要*10H吧.
------解决方案--------------------------------------------------------
to 楼主,
1), 用debug 查看内存,情况如下:
0000:0000 6B 10 A7 00 BB 01 70 00 - 16 00 9D 03 8B 01 7D 00
则,4号中断源则对应的中断处理程序的入口地址是:____________
习题的上面最后一段话,对于8086CPU,这个入口地址包括段地址和偏移地址,所以一个表项占两个字,高地址字存放段地址,低地址字存放偏移地址.
------解决方案--------------------------------------------------------
其实题目不能问4号中断地址的,问第4个中断地址才合适。也就是007D:018B了
------解决方案--------------------------------------------------------
向量表中的基地址是16位的,直接存储在word ptr [n*4]这个字内。word ptr[n*4+2]存放的是CS段值,正好是16位。故此才有以下答案:
存储N号中断源对应的中断处理程序入口的[段地址的内存单元的地址]为:(word ptr [n*4+2])
*10H。
上面我用[]括起了一部分文字。括起的文字中包括:段地址、内存单元的地址等字样,所以表示物理地址,所以我才给出了(word ptr [n*4+2])*10H答案。而word ptr[n*4+2]中存放的是段
值,并不是物理地址,所以求物理地址时要乘以10H,而16位的偏移直接给出了,并不需要乘以10H。“4号中断源则对应的中断处理程序的入口地址是:____________”问题我没有回答,是因为上面的debug并没有显示该存储区域,所以无法回答。“习题的上面最后一段话,对于8086CPU,这个入口地址包括段地址和偏移地址,所以一个表项占两个字,高地址字存放段地址,低地址字存放偏移地址”这句话有误,“高地址字存放段地址”改为“高地址字存放段值”
段值和段地址是两个概念,希望大家搞清楚。关于中断向量表的知识,大家参考下面文章:
http://blog.csdn.net/xiaoxiongli/archive/2007/03/19/1533907.aspx