為啥 最小的 執行檔 只需 1 個 Byte,
而且 能 正常執行 且 正常結束.
原來 MS 偷偷 塞了個 保險,
將 1 個 Byte 偷偷 換成 2 個 Byte,
所以 實際上 應該是,
最小的 執行檔 必須必須必須 是 2 個 Byte.

如果 把 MS 偷偷 塞的 保險 拿掉 就 掛.

PS:
這 指的是 HEX 執行檔 不是不是不是 純腳本(Script) BAT/PS/PY/.....






Xantia_L wrote:
好難懂。你可以寫一些大家看得懂的嗎。
不然你去跟管妹說.....要開一個程式設計區。保證 冷場。
要多冷 有多冷。
阿川 都進階了。 孟川。 開 神魔體,根本就是BUG,外掛.....


CD 20?0000h 位置(例如 JMP 0000h 或 RET)。0000h 放上 CD 20(即 INT 20h)。JMP 0000h 時,CPU 一跳過去就會讀到 CD 20,觸發 INT 20h 中斷,安全的把控制權交還給 DOS,完全不會崩潰。0005h 位置(CALL 0005h)來執行系統功能(BDOS)。0005h 放上 9A ...(遠跳轉 CALL FAR 到 DOS 的 API 入口)。CALL 0005h 時,也能順利呼叫到 DOS 的服務。| PSP 偏移量 (Offset) | CP/M 原始用途 | DOS PSP 對應機器碼 / 內容 | 作用 |
0000h |
Warm Boot(重啟/退出程式) | CD 20 (INT 20h) |
讓舊程式跳回 0000h 時能優雅退出 |
0002h |
記憶體上限 | 最高可用記憶體段位址 | 告知程式剩餘記憶體大小 |
0005h |
BDOS 系統呼叫入口 | 9A ... (CALL FAR DOS) |
讓舊程式呼叫 0005h 時能執行 DOS 功 |
.COM 還是 .EXE)載入時,DOS 都會在記憶體頭部 256 位元組(PSP)的第 0 個位置固定塞入 CD 20。這就是為什麼你在反組譯或用 DEBUG.EXE 觀察記憶體時,開頭永遠都會看到 CD 20 的原因!