> ==>發信人: FreeF1y.bbs@ptt.cc (ㄝ夫嗄一一ㄝ夫歪), 信區: programming
> ※ 引述《bert.bbs@bbs.csie.ncu.edu.tw (哇哩咧...)》之銘言:
> : > 請問有沒有什麼方法
> : > 可以在安裝TSR後不要結束程式呢?
> : > 目前找到的範例幾乎都是用Int 21h AH=31h,安裝完後程式就結束了
> : > 所以想請問有沒有其他安裝TSR的方法呢
> : > 像是直接更改DOS的Free Memory Pointer還是什麼
> : > 謝謝!
> : TSR 不結束程式的話怎麼能叫做 TSR?
> 可能我不太了解DOS的運作方式吧!?
> 我知道TSR的運作原理是把原本的Interrupt Vector Table取代掉
取代 Interrupt Vector 或 Hook Interrupt Service 並非 TSR
的必要條件, 更不是 TSR 的運作原理
只是大多數的 TSR 用 Interrupt Service 來作為常駐部分的觸
發條件
> 然後再把自己留在記憶體中
> 關於留在記憶體的方法,我查到的資料是說
> DOS裡面有一個指標,負責標示出可用的記憶體的開頭
> 然後每次程式Load進來就從那個位置開始存
> 而TSR常駐記憶體的方法就是把標示可用記憶體的指標往後移
> 使得程式的前半段留在記憶體中
> 這是原始網頁
> http://0rz.net/1c1pJ
你可以參考 Section 18.9 所說的內容, 那就是你的問題的解答
> 而我的問題是
> 這樣的機制,為什麼一定要程式結束才能完成?
> 只是移動一個指標而已,應該不用一定要結束程式吧
> 所以我的問題應該是說
> 「有什麼方法可以把程式常駐在記憶體之後不結束的呢?」
> 所以請不要再跟我說因為它叫TSR所以一定要結束..
> 以上
> 如果我的觀念有任何錯誤,還煩請指正
> 這部分我只是個初學者,不好意思
TSR 程式其實是兩個部份所組成的, 一是常駐在記憶體裡的部份,
一是把常駐部份留駐在記憶體裡的部份. 後者在處理完常駐部份的
初始化, 也就是 Hook Interrupt Service, Adjust Memory Allocation
等動作之後, 就將控制權交回 DOS, 也就是你所看到的程式結束
這個動作. 至於常駐部份, 是由觸發條件成立來啟動它的運作
把你上面列出來的網頁整章仔細讀完並理解, 你就會發現你問了一
個 nonsense 的問題
The Art of Assembly Language Programming (AoA) 是本不可多得
的 X86 PC 組語教學好書, 廣度深度兼顧, 章節編排循序漸近, 而
且又是免費可取得. 用它來學 x86 PC 組語是相當好的選擇
--
** 版權聲明 **
本篇文章歡迎轉載收錄,無須為任何用途支付任何費用。
本文一經轉載收錄引用,本人即無須對其內容負責。
--
◎ Origin: 中央松濤站□bbs.csie.ncu.edu.tw From: 61-231-160-152.dynamic.hinet.