《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 解決方案 > 匯編基礎:程序返回操作系統

匯編基礎:程序返回操作系統

2017-06-10
關鍵詞: 匯編

我們都知道,匯編語言源程序要進過匯編和連接兩個步驟才能生成一個可以在DOS下直接執行的.exe文件,在DOS下執行這個文件時,DOS像調用子程序一樣,把控制權交給它,而這個exe文件執行完成后也要像子程序返回調用程序一樣返回DOS,

一、用4CH系統功能調用實現返回

4CH系統調用功能是結束程序執行返回DOS,因此可以利用它來完成程序返回操作系統,其具體方法是在程序 結束時使用下列命令:

MOV AH, 4CH

INT 21H

但并不是任何程序都可以用這種方法來實現返回DOS的,只有返回DOS的主程序才能使用這種方式,而對于調用的子程序應該返回給的是調用程序而不是系統,所以不能用4CH實現返回。下面就介紹一種能夠用來返回給調用程序的返回方式。

二、用程序段前綴實現返回

在DOS狀態下執行EXE文件時,DOS會在COMMAND.COM暫存部分之后建立一個256字節的程序段前綴(PSP)在其后裝入該EXE程序時把控制權交給它,PSP的內容主要包括3部分信息:被裝入程序與DOS連接時使用的信息、供裝入程序使用的參數和供DOS本身使用的信息。

在DOS轉移控制權時,將代碼段(CS)指向EXE程序的代碼段,SS指向堆棧段,DS和ES并不指向用戶程序的數據段和附加段,而是指向PSP。

在PSP首地址(第一、二字節)有一條軟中斷指令“INT 20H”(有關中斷部分我會在以后說到),而這條指令的功能就是結束用戶程序返回操作系統,因此可以用程序段前綴實現返回DOS,其步驟如下:

a、將程序編織成一個過程,并且將過程的類型屬性設置為FAR

b、將PSP的起始邏輯地址壓入堆棧,即將“INT 20H”指令的地址壓入堆棧。由于EXE文件裝入內存時DS和ES都是指向PSP的,因此用指令“PUSH  DS”就可以實現將PSP的起始邏輯地址壓入堆棧的操作。

c、在程序編制而成的過程結束時使用返回指令RET,這樣執行該指令時系統便會將保存在堆棧中的PSP起始邏輯地址彈出到CS和IP中,進而轉去執行PSP首地址處的指令INT  20H, 從而實現返回DOS的目的。


本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 小东西几天没做怎么这么多水| 欧美国产日韩a在线视频| 国产乱码精品一区二区三区四川人 | 久久电影网午夜鲁丝片免费| 欧美牲交a欧美牲交aⅴ免费下载| 天天天操天天天干| 中文字幕精品无码一区二区三区| 狼人久蕉在线播放| 含羞草传媒旧版每天免费3次| 青娱乐手机在线| 国产成年网站v片在线观看| 2021国产精品自产拍在线观看| 夜夜高潮天天爽欧美| tstye.cn| 成年无码av片在线| 亚洲午夜久久久影院| 污网站免费观看污网站| 伊人久久大香线蕉综合电影网| 精品国产一区二区三区不卡| 噜噜噜在线观看播放视频| 色视频在线观看视频| 国产免费一区二区三区在线观看 | 成年性香蕉漫画在线观看| 久久91精品国产91久久| 欧美成人精品一区二区| 亚洲精品一区二区三区四区乱码| 男人和女人差差差很疼30分| 国产偷国产偷亚洲高清日韩| 91网站免费观看| 嫩草伊人久久精品少妇av| 中文字幕色婷婷在线视频| 日产码一卡二卡三国产乱码| 久久天堂夜夜一本婷婷麻豆| 欧美黑人粗暴多交高潮水最多| 人妖在线精品一区二区三区| 男女肉粗暴进来动态图| 免费无码一区二区三区| 精品久久久久久无码中文字幕| 午夜成年女人毛片免费观看| 精品无码黑人又粗又大又长| 啊灬啊灬别停啊灬用力啊|