您好、欢迎来到现金彩票网!
当前位置:2019跑狗图高清彩图 > 向量中断 >

汇编 关于中断向量的装入程序段

发布时间:2019-07-10 08:08 来源:未知 编辑:admin

  MOV BX,60H*4 //这里好像是把内存四个连续单元的第一个地址赋值给BX

  POP AX //这里书上说是获取中断服务程序的段基址我就觉得不懂,照

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  因为实模式下中断向量表是在0000:0000处开始的,所以要将目标位置的段地址设为0。与段寄存器有关的数据传送等指令不允许立即数作为另一个操作数,所以要借助AX等通用寄存器。

  STOSW指令会将AX的内容存储到ES:[DI]处开始的两个字节里(AL在低地址的字节即ES:[DI]中、AH放到高地址的字节即ES:[DI+1]处,完成后自动将DI加2以指向下一次的目的地址。这部分和书上的意思是完全一致的,这里只是用自然语言描述了一下。

  你所说的该中断向量的连续四个字节[DI]、[DI+1]、[DI+2]、[DI+3]中,[DI]和[DI+1]中的字是中断入口地址的偏移量部分,[DI+2]、[DI+3]是中断入口地址的段地址部分。假设某中断服务程序的入口地址是 FFF0:1234,那么[DI]、[DI+1]、[DI+2]、[DI+3]分别就应该是 34h, 12h, f0h, ffh。你此处提问的后半部分我没太明白,希望前面的解释能有帮助。

  MOV BX,60H*4 //这里好像是把内存四个连续单元的第一个地址赋值给BX

  CS:006D是真正的中断处理程序的入口地址,这段程序是要将这个地址填写到中断向量表中 60H 中断的表项里。由于每个中断向量要占4个字节(分别存放对应的中断处理程序的入口地址的偏移/段地址),因此第60H号中断向量在表中的位置(注意不是中断处理程序的入口地址)就是0000:60H*4到0000:60H*4+3处的4个字节,程序把60H*4这个起始字节的偏移量放在BX里,ES放的是0段,AX放的则是要填入表中的真正的中断处理程序的入口地址,CS是这段代码的段地址(因为这个程序提供的60H中断处理程序也是在这个代码段里)然后依次填入。

  POP AX //这里书上说是获取中断服务程序的段基址我就觉得不懂,照说这段基址怎么会和CS有关系呢

  PUSH CS/POP AX是以前8086汇编里很常用的替代MOV AX,CS的办法(好像是比MOV AX,CS少用一个指令周期,能少许快点),其作用就是MOV AX,CS。这段程序是要把60H中断向量指向自己的中断处理程序(位于CS:006D处),这个中断处理程序是和这里的初始化代码从同一个段计算偏移的、段地址也相同,所以直接用执行到此初始化代码时的CS填写中断向量的段地址即可。

http://bluecaleel.com/xiangliangzhongduan/253.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有