(1)pushf
pushf
pop ax
and ah,11111100b
push ax
popf
这几条指令其实是模拟了进入原int9子程序前,a.标志寄存器入栈 b.IT/IF设0 c.CS/IP入栈的功能。对应的就是int9。
call dword ptr ds:[0]
而在进入新中断后,IF/IT都设0了,所以可以省去中间几步。
(2)mov word ptr es:[9*4],offset int9
mov es:[9*4+2],cs
这两条指令实现“设置中断向量表”,为防止设置过程中发生键盘中断而导致指向错误,分别在前加cli:不响应中断;在后加sti:响应内外中断。
- [zihaolee] 哦 我记得就是debug里,用g直接把程序运完,发现寄存器不改变;用t或p单步运行,就能看到寄存器 04/28 15:52
- [mywiil] 今天做rep movsb(P232)页时,发现用G直接执行完程序,寄存器不会改变,用T单步执行就能改 04/25 20:10