标题: DOS下软关机程序的源代码
[打印本页]
作者: Wengier
时间: 2002-11-28 00:00
标题: DOS下软关机程序的源代码
DOS下的软关机程序有不少,我知道的就有SHUTDOWN、POWEROFF、OFF、PLOP等等。这儿有PLOP的源代码:
http://plop.at/files/SHUTDOWN.ASM
作者: herons
时间: 2002-11-28 00:00
用这么麻烦吗?
.model tiny
.286
.code
org 100h
mov ax, 5301h ;APM v1.1 or v1.2 BIOS switches to APM v1.0
mov bx,0 ;compatibility mode
int 15h ;
mov ax, 5307h ;TURN OFF SYSTEM
mov bx, 1
mov cx, 3
int 15h
;mov ax,4c00h
;int 21h
end
作者: LiveOnLove
时间: 2002-11-29 00:00
在那时只知道WIN可以自动关机啊。后来分析了一个网卡的TEST程序,其中有一个叫APM.COM的程序,就是和二楼的差不多,还可以软关机显示器,可以看到显示器的POWER LED在闪烁。
[
Last edited by LiveOnLove on 2016-7-14 at 13:02 ]
作者: copy114
时间: 2002-11-30 00:00
哦!有了这些源代码,用什么软件把它编译成EXE啊?
作者: Wengier
时间: 2002-11-30 00:00
最简单的是用DEBUG编成EXE文件,或者正规的话用MASM等编译。
作者: LiveOnLove
时间: 2002-12-1 00:00
是用DEBUG编成COM文件吧?
例如:
C:\windows\>debug
-A(''-''是DEBUG的提示符号,A是DEBUG的汇编命令,输入A后回车)
XXXX:0100 mov ax, 5301(XXXX:0100是内存的代码段(随机的)和DEBUG自动给出的偏移,以下略)
mov bx,0
int 15
mov ax, 5307
mov bx, 1
mov cx, 3
int 15
mov ax,4c00
int 21
-rcx
25(CX寄存器表示文件长度,这里输入的比实际大些)
-n POWEROFF.com(给文件取名)
-w(写入文件)
-Q(退出DEBUG)
Ok,运行POWEROFF.com就可以看到效果了
[em06][em06]
[此贴子已经被作者于2002-12-2 23:38:58编辑过]
作者: worrk
时间: 2002-12-10 00:00
呵,谢谢了,我看的很清楚!
作者: 柳飘逸
时间: 2002-12-14 00:00
能不能说一下用MASM的操作
作者: superdos
时间: 2003-4-4 00:00
mov bx,0
int 15
mov ax, 5307
mov bx, 1
mov cx, 3
int 15
mov ax,4c00
int 21
这些是什么意思?
作者: Wengier
时间: 2003-4-4 00:00
前面是调用INT15中断以执行关机操作,后面是退出。
作者: lydong
时间: 2003-4-7 00:00
软关机和重新启动的程序已经有这么多了,可是还没有可以直接重新启动DOS的程序,下面这个程序:
C>DEBUG↓
-A↓
XXXX:0100 XOR AX,AX↓
XXXX:0102 INT 19↓
XXXX:0104 ↓
-N,CQ.COM↓
-RCX↓
:4↓
-W↓
-Q↓
和 Wengier 写的:
MOV AX,0
INT 19
都不能顺利重启DOS.都是刚出现启动画面时就死机了,请问谁有办法呢?
[此贴子已经被作者于2003-4-7 12:49:38编辑过]
作者: lydong
时间: 2003-4-8 00:00
找到了一个重新启动计算机的软件,有冷启动,热启动,系统启动等多个功能,其中的系统启动菜单可以顺利重启DOS.
打开附件
作者: iwons
时间: 2003-4-10 00:00
97就想在DOS下编写一个程序实现软关机功能......那时请教了很多老师都不知道怎样编写...
现在,呵呵..........终于知道了,却是在5年之后
作者: Wengier
时间: 2003-4-10 00:00
那个RE-BOOT软件我也有,不过系统启动(即重启OS)那个功能在我的两台电脑上都不能用,在第三台旧电脑上虽能用,但却发现并不是很稳定.
[此贴子已经被作者于2003-4-10 19:46:21编辑过]
作者: lydong
时间: 2003-4-10 00:00
我这里都能用,但稳定性也不是很好!
作者: maple
时间: 2003-7-24 00:00
3Q!
作者: 021850524
时间: 2003-7-26 00:00
要是软启动,就jmp ffff:0000
更彻底更底层的就out 64,fe
作者: Roy
时间: 2003-7-26 00:00
Quote: |
以下是引用021850524在2003-7-26 14:28:29的发言:
要是软启动,就jmp ffff:0000
更彻底更底层的就out 64,fe |
|
是指這個嗎?
C:\>debug
-a
****:0100 mov al,fe
****:0102 out 64,al
****:0104
-rcx
CX 0000
:4
-nreset.com
-w
Writing 00004 bytes
-q
C:\>
作者: Wengier
时间: 2003-7-27 00:00
Quote: |
以下是引用lydong在2003-4-7 12:46:41的发言:
软关机和重新启动的程序已经有这么多了,可是还没有可以直接重新启动DOS的程序,下面这个程序, 都不能顺利重启DOS.都是刚出现启动画面时就死机了,请问谁有办法呢? |
|
用GRUB for DOS吧,可以实现直接在DOS下启动(同一个或另一个)DOS的。
作者: 斑马王子
时间: 2003-8-14 00:00
我对着六楼和二楼的两种都做了但是执行后不会关机啊??
为什么。使用masm的时候成功生成exe文件。但是执行了没什么结果啊
为什么??
请给予指示
作者: 斑马王子
时间: 2003-8-14 00:00
还有我使用masm是成功编译了obj文件。但是在link成exe文件我上这样做的不知道有没有问题
c:\>link poweroff.obj
run file [poweroff.exe]这里我直接回车
list file [nul.map]直接回车
libraries [.lib]直接回车
warning:no stack segment
我知道肯定是我在这里弄错了什么
我很久以前使用过但现在忘记了,那位大哥帮忙啊!
[此贴子已经被作者于2003-8-14 5:10:31编辑过]
作者: 斑马王子
时间: 2003-8-14 00:00
各位大侠,小弟犯错了。我做完程序后是在windows下运行的。我忘了这个程序是用来关闭DOS的。现在问题搞定了。
[此贴子已经被作者于2003-8-14 14:11:31编辑过]
作者: lhyh
时间: 2003-9-8 00:00
我需要MASM的详细使用介绍,请告诉我,谢谢!!!!
我的信箱lhyh@371.net。QQ:80847753
作者: 笑傲江湖
时间: 2003-9-11 00:00
我想是否要先满足两个条件才行:
1.BIOS support APM/ACPI fuction;
2.ATX power.
版主认为呢?
作者: profree
时间: 2004-6-30 00:00
有没有C语言的源代码?
作者: f319
时间: 2009-7-30 06:18
... 哎, 你们还是调用的系统中断呀。 还是不知道它究竟是怎么关机的呀。就是说你不知道那中断程序是怎么做到关机的..
... 重启就简单了, 只要把cs:ip设为ffff:0000就可以了,所以debug下一个jmp ffff:0000就可以重启了.(但这样没有保存什么数据)... 之所以可以这样重启是因为系统开机时cs:ip就设为ffff:0000, 系统执行的第一条指令就在ffff:0000处呀.
.... 但怎么关机呢?.