精華區beta Programming 關於我們 聯絡資訊
dys 撰寫於文章 <53358d$1CM$9@bbs.openfind.com.tw>... >請問一下, 要如何才能在 Turbo C IDE 環境下,不用組合語言(asm), 寫出 > DOS Reboot 的功能??謝謝!! 方法 1 : 直接跳躍至 FFFF:0000 (16進位) 的位置即可. 比方 Assembly : .model small .code reset_address dd 0ffff0000h start: jmp reset_address end start 以 C / C++ 表示 : int main(void) { void far (*reboot)(void) = (void far (*)()) (0xFFFF0000L); reboot(); return 0; } 方法 2 : 其實直接跳躍至 FFFF:000 的位置不一定可以重新開機, 因為若是系統使用了 QEMM 記憶體位移的管理方式, 那 FFFF:0000 位置就不是 Reset System 的進入點. 所以你 可以使用下面 I/O Port 的方式: (Reset CPU) Assembly 的表示方式: .model small .code mov al,fe mov dx,64h out dx,al end 以 C / C++ 表示 : #include <dos.h> int main() { outportb(0x64,0xfe); }