精華區beta Programming 關於我們 聯絡資訊
> ==>發信人: 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.