所以在這里我有一個.EXE全屏運行的檔案,我需要從.ASM語言中呼叫它。為了更清楚,我正在嘗試制作一個作業系統原型(如果它讓我聽起來很生氣,idk),我有一個.EXE需要從.ASM代碼呼叫的檔案。我是一個學習者,所以我不確定這是否可能,但根據網上的其他答案,我必須制作一個基本的 I/O 子系統、記憶體管理和其他東西 (作業系統通常會這樣做)。我想舉一個例子,從代碼.EXE中呼叫一個while ,然后執行。.ASM.EXE
謝謝!,即使您只閱讀此內容 :)
如果您需要 .EXE 檔案及其組件,我可以為您提供,如果您可以幫助我...
uj5u.com熱心網友回復:
大多數.EXE檔案使用作業系統服務,如果不提供這些服務將無法作業。更具體:DOS.EXE檔案需要 DOS API,例如 INT 21h。應用程式使用的最突出的作業系統服務是檔案系統驅動程式。檔案中的代碼.EXE要求作業系統打開一個名為 DATA.BIN 的檔案,由作業系統在磁盤上定位該檔案。.EXE在沒有任何作業系統的情況下,您無法運行試圖訪問檔案的檔案。
如果您正在撰寫自己的作業系統,您要么必須實作一種從作業系統加載 DOS 內核(例如 MS-DOS、FreeDOS)的方法,以便.EXE檔案可以訪問它所需的系統服務,要么您的作業系統需要實作與 DOS 兼容的服務。加載和執行.EXE檔案是一項簡單的任務(假設您已經可以訪問檔案)。您首先加載標題。標頭指示 EXE 檔案中可執行代碼/資料的開始及其大小。您必須加載該區域,最后您需要加載重定位(重定位表的大小和長度也包含在 EXE 標頭中),并在將堆疊設定為 EXE 標頭中請求的地址并跳轉之前應用重定位到入口點。
如果你在作業系統中加載了一個 DOS 內核,DOS 內核已經實作了加載和執行 EXE 檔案,所以你可以通過呼叫 int 21h/AX=4B00h 將加載/啟動的程序委托給 DOS 內核。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/482892.html
