| 
 
ayw 
新手上路
 
 
 
  
  
积分 12 
发帖 4 
注册 2006-11-17 
状态 离线
 | 
『楼 主』:
 关机的底层实现??
 
使用 LLM 解释/回答一下
  
想知道关机的底层实现。。。。 
 
 
另外:我仿照网上的一个帖子在win下编译freedos 
怎么老出现一个错误? 
F:\source\kernel>buildall.bat 
 
Process UTILS ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
 
Compilation was aborted! 
The system cannot find the batch label specified - daswarwohlnix 
 
    
 
  
 |   
 | 
  2007-1-13 23:51 | 
  
 | 
 | 
 
gezi322 
初级用户
 
  
 
  
  
积分 27 
发帖 12 
注册 2006-12-5 
状态 离线
 | 
 | 
  2007-1-16 22:01 | 
  
 | 
 | 
 
ayw 
新手上路
 
 
 
  
  
积分 12 
发帖 4 
注册 2006-11-17 
状态 离线
 | 
 | 
  2007-1-20 02:16 | 
  
 | 
 | 
 
darkradx 
高级用户
 
    
 
  
  
积分 972 
发帖 420 
注册 2004-5-16 
状态 离线
 | 
 | 
  2007-1-21 09:33 | 
  
 | 
 | 
 
defrag 
中级用户
 
    痴迷DOS者
  
 
积分 456 
发帖 570 
注册 2004-10-9 
状态 离线
 | 
『第 5 楼』:
 
 
使用 LLM 解释/回答一下
  
他好象也弄错了,是 
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 |   
 | 
  2007-2-12 03:35 | 
  
 | 
 | 
 
defrag 
中级用户
 
    痴迷DOS者
  
 
积分 456 
发帖 570 
注册 2004-10-9 
状态 离线
 | 
『第 6 楼』:
 
 
使用 LLM 解释/回答一下
  
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 |   
 | 
  2007-2-12 04:01 | 
  
 | 
 | 
 
dsysps 
初级用户
 
  
 
  
  
积分 98 
发帖 34 
注册 2006-11-3 
状态 离线
 | 
『第 7 楼』:
 
 
使用 LLM 解释/回答一下
  
void ReBootSys() 
{ 
	asm push 0xffff 
	asm push 0x0000 
	asm retf 
} 
 
    
 
  
 |   
 | 
  2007-3-15 21:51 | 
  
 | 
 | 
 
ons511 
新手上路
 
 
 
  
  
积分 2 
发帖 1 
注册 2007-3-14 
状态 离线
 | 
『第 8 楼』:
 
 
使用 LLM 解释/回答一下
  
关机也好重新启动也好,目前论坛中的方法并不是万能的。 
 
重启通常的方法是两种: 
1是利用缓冲区溢出的方法;2是使用INT19. 
但对于特殊的BIOS或者主板并不起作用。 
 
    
 
  
 |   
 | 
  2007-3-16 03:22 | 
  
 | 
 | 
 
henrya2 
中级用户
 
   
 
  
  
积分 486 
发帖 171 
注册 2006-2-12 
状态 离线
 | 
『第 9 楼』:
 
 
使用 LLM 解释/回答一下
  
还有一种简单重启方法 
直接在DEBUG 
-a 
jmp FFFF:0 
-g 
 
如果用了SMARTDRV等一些磁盘缓冲软件,可能会导致文件丢失 
 
    
 
  
  |  
                  
  
                    Those who do not study the past are condemned to repeat it |   
 | 
  2007-3-19 07:27 | 
  
 | 
 | 
 
henrya2 
中级用户
 
   
 
  
  
积分 486 
发帖 171 
注册 2006-2-12 
状态 离线
 | 
『第 10 楼』:
 
 
使用 LLM 解释/回答一下
  
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 |   
 | 
  2007-3-19 07:35 | 
  
 | 
 | 
 
henrya2 
中级用户
 
   
 
  
  
积分 486 
发帖 171 
注册 2006-2-12 
状态 离线
 | 
『第 11 楼』:
 
 
使用 LLM 解释/回答一下
  
但不是缓冲区溢出(有点像),原来的return address还在堆栈里(在新压入的return address后面) 
 
    
 
  
  |  
                  
  
                    Those who do not study the past are condemned to repeat it |   
 | 
  2007-3-19 07:47 | 
  
 | 
 | 
 
wzsunlight 
初级用户
 
  
 
  
  
积分 107 
发帖 52 
注册 2007-3-10 
状态 离线
 | 
 | 
  2007-3-22 17:37 | 
  
 | 
 | 
 
wzsunlight 
初级用户
 
  
 
  
  
积分 107 
发帖 52 
注册 2007-3-10 
状态 离线
 | 
 | 
  2007-3-29 22:37 | 
  
 | 
 | 
 
CrispH 
初级用户
 
  
 
  
  
积分 108 
发帖 49 
注册 2007-3-9 
状态 离线
 | 
 | 
  2007-3-29 23:14 | 
  
 | 
 | 
 
darkradx 
高级用户
 
    
 
  
  
积分 972 
发帖 420 
注册 2004-5-16 
状态 离线
 | 
 | 
  2007-5-8 03:01 | 
  
 |