第八篇 TSR程式設計初探

來源:互聯網
上載者:User

這篇博文介紹一個簡單的TSR程式設計的例子。

 

一、TSR是什麼

TSR是記憶體駐留程式(Terminate and Stay Resident Program)的簡稱。記憶體駐留程式是指這樣

一種程式,TA在執行結束後,將一部分留在記憶體中,受到作業系統的保護,可由外界啟用。一

般來說,TSR都會和DOS或BIOS中斷相聯絡。

 

二、本篇博文介紹的TSR的設計思路是什麼

設計的功能:當運行TSR後,使用者無論輸入什麼,螢幕上只會顯示“A TSR was installed in the

                     computer by lulipeng!”。(輸入控制字元沒有效果,如shift、ctrl,因為其不在鍵盤

                      緩衝區)

設計的方法:①將16h號中斷的地址改為自己編寫的程式的地址,保留原中斷地址,以便根據需

                         要調用。

                      ②DOS功能調用int 16h,a=10h是從鍵盤緩衝區讀取字元,al=讀取字元的ASCII。

                         只要將相應的al改為自己預先設計好的按一定順序輸出的字元即可。

                      ③為什麼②中的方法可行,博主猜測,當在command.com中輸入字元時,該程式

                          會調用int 16h的10h號功能讀取字元的ASCII,然後輸出。我們只要中途截獲al,

                          改變其即可。

 

三、值得注意的地方

代碼是在win7旗艦版下command.com中實驗成功。在cmd.exe中沒有效果!

很遺憾我也不明白其中原委?

 

四、代碼

code segmentassume cs:codeoldInt16 dw ?,?msgIndex dw 0msg  db 'A TSR was installed in the computer by lulipeng!'newInt16 proc far;cmp ah,0;je leavecmp ah,10hje go_1jmp dword ptr oldInt16   ;如果不是讀鍵盤輸入,則調用原來int 16h,然後直接返回go_1:pushfcall dword ptr oldInt16   ;調用原int 16h,把字元讀進al中cmp al,0dhje go_2                   ;如果是斷行符號,表示本次輸入結束,斷行符號符不做處理push simov si,msgIndexmov al,msg[si]            ;將原來的字元改為程式員規定的字元inc sicmp si,48je go_3back:mov msgIndex,sipop sijmp donego_3:mov si,0jmp backgo_2:mov msgIndex,0done:iretnewInt16 endpstart:;用int 21h,ah=35h,al=16h取出16h號中斷的地址,存在es:bx中mov al,16hmov ah,35hint 21hmov oldInt16,bxmov oldInt16[2],es;利用int 21h,ah=25h,al=16h,把ds:dx中地址寫給16h號中斷push cspop dsmov dx,offset newInt16mov al,16hmov ah,25hint 21h;將start標號前的內容駐留記憶體mov dx,offset startint 27hmov ah,4chint 21hcode endsend start

 

五、結果

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.