2011-03-31 76 views
0

我想用我自己的一個替換BIOS中斷例程。但我不知道如何設置相關寄存器的值。你能告訴我cs和ip寄存器在通過向量表跟蹤ISR中的作用嗎?如果我想重寫例程,我需要做什麼?用匯編語言更改BIOS中斷服務程序

+1

如果你問這麼低級別(=接近硬件)的問題,你應該指定你使用的是哪個架構/ cpu。 – flolo 2011-03-31 22:23:15

回答

2

在彙編語言藝術chapter 17中有關於此的全部內容。編寫ISR非常複雜,並且存在一些問題,例如代碼重入。
基本上你必須改變你想修補的ISR的中斷向量來指向你的代碼。這個矢量位於(如果我沒記錯的話)在從0000段開始的表格中。
如果海德先生引用了本書中的其他章節,則可以找到一份PDF列表here

+0

THX黑莓。但仍有一個問題,即mov word ptr es:[0ffh * 4],偏移量SimpleISR mov word ptr es:[0ffh * 4 + 2],seg SimpleISR不會與NASM編譯,它會提示:「昏迷,冒號或行末「 – teedoo 2011-04-03 05:48:20

+0

@ user667139:我想你應該使用一個臨時寄存器:mov ax,offset simpleISR; mov word ptr es [0ffh * 4],ax; mov ax,seg simpleISR; mov word ptr es [0ffh * 4],ax。在哪一行上給出了該錯誤BTW? – BlackBear 2011-04-04 15:44:08