中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-01 19:41
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » 怎样在C语言中实现软关机或重新启动? 查看 1,603 回复 13
楼 主 怎样在C语言中实现软关机或重新启动? 发表于 2004-06-30 00:00 ·  中国 云南 红河哈尼族彝族自治州 电信
中级用户
★★
积分 478
发帖 132
注册 2003-07-02 00:00
23年会员
UID 6296
性别 男
状态 离线
如题,我现在急着要,
2 发表于 2004-07-01 00:00 ·  中国 辽宁 丹东 联通
中级用户
★★
积分 316
发帖 74
注册 2004-03-04 00:00
22年会员
UID 19167
性别 男
状态 离线
在TC20中实现计算机启动的方法:
unsigned char code={0xea,0x0,0x0,0xff,0xff};
( *(void(far *)())code )(); //启动计算机
3 发表于 2004-07-01 00:00 ·  中国 福建 福州 电信
初级用户
积分 104
发帖 2
注册 2004-06-27 00:00
22年会员
UID 27475
性别 男
状态 离线
楼上的大哥好高深呀
4 发表于 2004-07-03 00:00 ·  中国 辽宁 丹东 联通
中级用户
★★
积分 316
发帖 74
注册 2004-03-04 00:00
22年会员
UID 19167
性别 男
状态 离线
这是夸我还是糗我???
资料来源转贴
5 发表于 2004-07-05 00:00 ·  中国 河北 秦皇岛 联通
中级用户
新DOS时代假站长
积分 248
发帖 31
注册 2004-07-04 00:00
22年会员
UID 27805
性别 男
状态 离线
这是什么意思啊?我怎么满眼的 括号和乱码!啥意思啊?
你怎么能把这背下来的?
6 发表于 2004-07-06 00:00 ·  中国 江苏 苏州 电信
初级用户
积分 115
发帖 5
注册 2004-06-28 00:00
22年会员
UID 27497
性别 男
状态 离线
开玩笑~怎么可能!
7 发表于 2004-07-07 00:00 ·  中国 湖北 天门 电信
中级用户
★★
绝不写垃圾帖
积分 322
发帖 99
注册 2004-07-03 00:00
22年会员
UID 27774
性别 男
来自 湖北
状态 离线
重启可用嵌入汇编asm jmp far 0ffffh:0000或调用INT19H
关机不清楚,应和ACPI的BIOS功能有关。
从95年开始用DOS3.2,96年在Windows3.1里认识了鼠标,97年开始用Win95,98年装过NetWare,99年迷过Linux,现在用WinXP、WinME和DOS7.1。一回首,从盲到忙,从忙到茫。
8 发表于 2004-07-07 00:00 ·  中国 上海 浦东新区 电信
初级用户
积分 130
发帖 10
注册 2003-11-04 00:00
22年会员
UID 12428
性别 男
状态 离线
以下是引用boblhh9999在2004-7-1 上午 02:19:07的发言:
在TC20中实现计算机启动的方法: 
           unsigned char code={0xea,0x0,0x0,0xff,0xff}; 
           ( *(void(far *)())code&nbsp(); //启动计算机


完整代码 tc2.0 passed
unsigned char code={0xea,0x0,0x0,0xff,0xff};
main()
{
( *(void(far *)())code )(); //启动计算机
}
注:纯DOS下一运行即重启
9 发表于 2004-07-07 00:00 ·  中国 云南 红河哈尼族彝族自治州 电信
中级用户
★★
积分 478
发帖 132
注册 2003-07-02 00:00
23年会员
UID 6296
性别 男
状态 离线
真是厉害,谢谢
10 发表于 2004-07-08 00:00 ·  中国 河北 沧州 联通
中级用户
★★
疯狂的流浪者
积分 276
发帖 56
注册 2003-09-25 00:00
22年会员
UID 10329
性别 男
状态 离线
以下是引用boblhh9999在2004-7-1 上午 02:19:07的发言:
在TC20中实现计算机启动的方法: 
           unsigned char code={0xea,0x0,0x0,0xff,0xff}; 
           ( *(void(far *)())code&nbsp(); //启动计算机

{0xea,0x0,0x0,0xff,0xff}这个估计是一串实现重新启动的机器代码,
而*(void(far *)())code则是跳转到上述机器代码处执行,由于
不在同一段内,所以要用far来修饰。原理应该是这个样子吧?
临河居士
http://www.xygod.pc5.org
11 发表于 2004-07-14 00:00 ·  中国 辽宁 丹东 联通
中级用户
★★
积分 316
发帖 74
注册 2004-03-04 00:00
22年会员
UID 19167
性别 男
状态 离线
10楼解释的很明白,惭愧我只会使用,没能解释明白
12 发表于 2004-07-31 00:00 ·  中国 广东 深圳 南山区 电信
初级用户
★★
鹰击长空
积分 271
发帖 61
注册 2003-08-20 00:00
22年会员
UID 8964
性别 男
状态 离线
{0xea,0x0,0x0,0xff,0xff}汇编释义:0xea-JMP 跳转指令0x0,0x0-0000h,偏移地址0xff,0xff-ffffh,基地址合起来就是:asm jmp far 0ffff:0000乱猜的,不要当真!
适合的,就是最好的!
DOS,永远的初恋情人。
13 发表于 2004-08-01 00:00 ·  中国 湖北 宜昌 电信
高级用户
★★
积分 677
发帖 194
注册 2003-09-13 00:00
22年会员
UID 9778
性别 男
状态 离线
用qb一句搞定OUT &H64, &HFE
14 发表于 2006-02-25 21:21 ·  中国 江西 南昌 电信
中级用户
★★
积分 486
发帖 171
注册 2006-02-12 13:53
20年会员
UID 50233
状态 离线
为什么要用缓冲区溢出呢,直接调用中断不是很好吗
论坛跳转: