中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-01 16:35
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » 关机的底层实现?? 查看 3,249 回复 16
楼 主 关机的底层实现?? 发表于 2007-01-13 23:51 ·  中国 湖北 武汉 电信
新手上路
积分 12
发帖 4
注册 2006-11-17 02:52
19年会员
UID 70748
性别 男
状态 离线
想知道关机的底层实现。。。。


另外:我仿照网上的一个帖子在win下编译freedos
怎么老出现一个错误?
F:\source\kernel>buildall.bat

Process UTILS ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Compilation was aborted!
The system cannot find the batch label specified - daswarwohlnix
2 发表于 2007-01-16 22:01 ·  中国 山东 青岛 联通
初级用户
积分 27
发帖 12
注册 2006-12-05 03:41
19年会员
UID 72597
性别 男
状态 离线
Mov dx,64h
Mov ax,0feh
OUT dx,ax
3 发表于 2007-01-20 02:16 ·  中国 湖北 武汉 电信
新手上路
积分 12
发帖 4
注册 2006-11-17 02:52
19年会员
UID 70748
性别 男
状态 离线
怎么调试的
保存为com格式的然后运行么?
我怎么没调试成功?
4 发表于 2007-01-21 09:33 ·  中国 北京 联通
高级用户
★★★
积分 972
发帖 420
注册 2004-05-16 00:00
22年会员
UID 24467
性别 男
状态 离线
那是KBC重起的代码
平生进退如飙风
5 发表于 2007-02-12 03:35 ·  中国 山东 济宁 联通
中级用户
★★★
痴迷DOS者
积分 456
发帖 570
注册 2004-10-09 00:00
21年会员
UID 32281
性别 男
状态 离线
他好象也弄错了,是
mov al,feh
out 64h,al
不过关机是
Mov AX, 5301h
Xor BX, BX
Int 15h
Mov AX, 530Eh
Xor BX, BX
Mov CX, 102h
Int 15h
Mov AX, 5307h
Mov BX, 1
Mov CX, 3
Int 15h
DOS不是万能的,没有DOS是万万不能的
自古系统谁无死?留取胆清照汗青!uploadImages/20035317345478982.png
6 发表于 2007-02-12 04:01 ·  中国 山东 济宁 联通
中级用户
★★★
痴迷DOS者
积分 456
发帖 570
注册 2004-10-09 00:00
21年会员
UID 32281
性别 男
状态 离线
code segment
assume cs:code,ds:code
org 100h
start:
Mov AX,5301h
Xor BX,BX
Int 15h
Mov AX,530Eh
Xor BX,BX
Mov CX,102h
Int 15h
Mov AX,5307h
Mov BX,1
Mov CX,3
Int 15h
cli
mov ds,0
mov [6],cs
mov [4],offset halt
halt:
JMP halt
code ends
end start
;关不掉就死机
DOS不是万能的,没有DOS是万万不能的
自古系统谁无死?留取胆清照汗青!uploadImages/20035317345478982.png
7 发表于 2007-03-15 21:51 ·  中国 河北 石家庄 电信
初级用户
积分 98
发帖 34
注册 2006-11-03 02:31
19年会员
UID 69366
性别 男
状态 离线
void ReBootSys()
{
asm push 0xffff
asm push 0x0000
asm retf
}
8 发表于 2007-03-16 03:22 ·  中国 湖南 株洲 电信
新手上路
积分 2
发帖 1
注册 2007-03-14 05:41
19年会员
UID 81679
性别 男
状态 离线
关机也好重新启动也好,目前论坛中的方法并不是万能的。

重启通常的方法是两种:
1是利用缓冲区溢出的方法;2是使用INT19.
但对于特殊的BIOS或者主板并不起作用。
9 发表于 2007-03-19 07:27 ·  中国 江西 南昌 电信
中级用户
★★
积分 486
发帖 171
注册 2006-02-12 13:53
20年会员
UID 50233
状态 离线
还有一种简单重启方法
直接在DEBUG
-a
jmp FFFF:0
-g

如果用了SMARTDRV等一些磁盘缓冲软件,可能会导致文件丢失
Those who do not study the past are condemned to repeat it
10 发表于 2007-03-19 07:35 ·  中国 江西 南昌 电信
中级用户
★★
积分 486
发帖 171
注册 2006-02-12 13:53
20年会员
UID 50233
状态 离线
void ReBootSys()
{
asm push 0xffff
asm push 0x0000
asm retf
}

其实是,把return address替换成了FFFF:0
Those who do not study the past are condemned to repeat it
11 发表于 2007-03-19 07:47 ·  中国 江西 南昌 电信
中级用户
★★
积分 486
发帖 171
注册 2006-02-12 13:53
20年会员
UID 50233
状态 离线
但不是缓冲区溢出(有点像),原来的return address还在堆栈里(在新压入的return address后面)
Those who do not study the past are condemned to repeat it
12 发表于 2007-03-22 17:37 ·  中国 广东 广州 番禺区 电信
初级用户
★★
积分 107
发帖 52
注册 2007-03-10 04:55
19年会员
UID 81272
性别 男
状态 离线
关机?重新启动?
以上是重新启动
13 发表于 2007-03-29 22:37 ·  中国 广东 广州 番禺区 电信
初级用户
★★
积分 107
发帖 52
注册 2007-03-10 04:55
19年会员
UID 81272
性别 男
状态 离线

win /z
可以关机

但不知是否喜欢
14 发表于 2007-03-29 23:14 ·  中国 江苏 苏州 电信
初级用户
积分 108
发帖 49
注册 2007-03-09 06:08
19年会员
UID 81161
性别 男
状态 离线
向 PMBASE + 05h 的地方丢 3C h
15 发表于 2007-05-08 03:01 ·  中国 广东 深圳 南山区 电信
高级用户
★★★
积分 972
发帖 420
注册 2004-05-16 00:00
22年会员
UID 24467
性别 男
状态 离线
楼上兄台是做BIOS Porting的?牛啊
平生进退如飙风
论坛跳转: