Programming 版 (精华区)

发信人: Scorpion (但教心似金钿坚), 信区: Programming
标  题: [合集]谁会在纯dos下实现电源关机(内空)
发信站: 哈工大紫丁香 (2002年03月28日09:05:49 星期四), 站内信件

发信人: Scorpion (但教心似金钿坚), 信区: Programming
标  题: [合集]*.C与*.CPP有和区别?
发信站: 哈工大紫丁香 (2002年03月28日08:39:34 星期四), 站内信件

发信人: javan (willmore), 信区: Programming
标  题: *.C与*.CPP有和区别?
发信站: 哈工大紫丁香 (2000年10月25日18:08:42 星期三), 转信



       小声的问一句

--



    IF I COULD, I WOULD.

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.235.248]
发信人: terminate (八荒六合·惟我独尊), 信区: Programming
标  题: Re: *.C与*.CPP有和区别?
发信站: 哈工大紫丁香 (2000年10月25日18:14:54 星期三), 站内信件

字符串比较的话,就这些。.cpp是C++独有的源程序。
【 在 javan (willmore) 的大作中提到: 】
:    就这些?
: 【 在 terminate (八荒六合·惟我独尊) 的大作中提到: 】
: : 少两个P

--
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.235.247]
发信人: lofe (〖感激生活〗), 信区: Programming
标  题: Re: *.C与*.CPP有和区别?
发信站: 哈工大紫丁香 (2000年10月25日18:20:50 星期三), 站内信件

对标准C编译器来说,没有什么不同;但支持C++的编译器对他们则有
不同的处理方式:
.c 将默认为ANSI C源文件并严格按照标准C来编译,如果用到了C++的
语法或新特性,如new操作符,将不能通过编译;
.cpp则默认为C++的源文件。

【 在 javan (willmore) 的大作中提到: 】
:        小声的问一句

--
    耶稣说:人不能只靠面包过活,你的心灵需要比面包
更有营养的东西,你有多久没有唱歌,没有到大自然中走
一走,没有读诗?

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: malacs.hit.edu.cn]
※ 修改:·lofe 於 10月25日18:24:27 修改本文·[FROM: malacs.hit.edu.cn]
发信人: javan (willmore), 信区: Programming
标  题: Re: *.C与*.CPP有和区别?
发信站: 哈工大紫丁香 (2000年10月25日18:23:01 星期三), 转信

    可是在tc3.0上编译
  main()
 {
  printf("xxxxxxx");}

  它提示说"printf should have a prototype",将文件名改成*.c后就正常了

【 在 terminate (八荒六合·惟我独尊) 的大作中提到: 】
: 字符串比较的话,就这些。.cpp是C++独有的源程序。
: 【 在 javan (willmore) 的大作中提到: 】
: :    就这些?

--

    IF I COULD, I WOULD.

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.235.248]
发信人: terminate (八荒六合·惟我独尊), 信区: Programming
标  题: Re: *.C与*.CPP有和区别?
发信站: 哈工大紫丁香 (2000年10月25日18:24:51 星期三), 站内信件

呵呵,C++的所有函数都必须声明原型。
你加上#include "stdio.h"就可以了。
【 在 javan (willmore) 的大作中提到: 】
:     可是在tc3.0上编译
:   main()
:  {
:   printf("xxxxxxx");}
:   它提示说"printf should have a prototype",将文件名改成*.c后就正常了
: 【 在 terminate (八荒六合·惟我独尊) 的大作中提到: 】
: : 字符串比较的话,就这些。.cpp是C++独有的源程序。

--
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.235.247]
发信人: xxxxx (从零开始), 信区: Programming
标  题: Re: *.C与*.CPP有和区别?
发信站: 哈工大紫丁香 (2000年10月26日09:01:23 星期四), 站内信件

hehe.是的.有些规则(属于c语言的), c和c++要求不一样.比如函数原型.
另外还有一些.比如c++支持inline,而c不支持.最新的c++ ansi标准扩大了
这些差别,比如enum类型在声明变量时可以不使用enum关键字.

对turbo c++而言,还有一个相关的宏_cplusplus. 当此宏定义时,按c++编译.

【 在 terminate (八荒六合·惟我独尊) 的大作中提到: 】
: 呵呵,C++的所有函数都必须声明原型。
: 你加上#include "stdio.h"就可以了。

--
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: alioth.hit.edu.cn]
发信人: utah (尤他去吧), 信区: Programming
标  题: Re: 谁会在纯dos下实现电源关机(内空)
发信站: 哈工大紫丁香 (2001年02月09日12:12:32 星期五), 站内信件

还是用汇编吧
我记得让那个中断还是端口为高电位时就可以
实现关机

【 在 zcx (齐云) 的大作中提到: 】

--
我爱你 可是我不敢说
我怕我说了 我就会死去
我不怕死 
我怕我死了 再没有人象我这样爱你

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: as.hit.edu.cn]
发信人: terminate (沧海一声啸), 信区: Programming
标  题: Re: 谁会在纯dos下实现电源关机(内空)
发信站: 哈工大紫丁香 (2001年02月09日12:29:29 星期五), 站内信件

纯dos下有关电源的汇编指令?是我孤陋寡闻么?糊涂了!

【 在 utah (尤他去吧) 的大作中提到: 】
: 还是用汇编吧
: 我记得让那个中断还是端口为高电位时就可以
: 实现关机
: 【 在 zcx (齐云) 的大作中提到: 】

--
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.235.236]
发信人: utah (尤他去吧), 信区: Programming
标  题: Re: 谁会在纯dos下实现电源关机(内空)
发信站: 哈工大紫丁香 (2001年02月09日13:16:34 星期五), 站内信件

那你就debug吧

 
【 在 terminate (沧海一声啸) 的大作中提到: 】
: 纯dos下有关电源的汇编指令?是我孤陋寡闻么?糊涂了!
: 【 在 utah (尤他去吧) 的大作中提到: 】
: : 还是用汇编吧
: : 我记得让那个中断还是端口为高电位时就可以
: : 实现关机

--
我爱你 可是我不敢说
我怕我说了 我就会死去
我不怕死 
我怕我死了 再没有人象我这样爱你

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: as.hit.edu.cn]
发信人: Sun (大灯泡), 信区: Programming
标  题: Re: 谁会在纯dos下实现电源关机(内空)
发信站: 哈工大紫丁香 (2001年02月09日13:53:02 星期五), 站内信件

应该就是一个BIOS中断调用吧?
我好像见过这样的软件,隐约记得

【 在 terminate (沧海一声啸) 的大作中提到: 】
: 纯dos下有关电源的汇编指令?是我孤陋寡闻么?糊涂了!
: 【 在 utah (尤他去吧) 的大作中提到: 】
: : 还是用汇编吧
: : 我记得让那个中断还是端口为高电位时就可以
: : 实现关机

--
    太阳当空照,灯泡呵呵笑,
    mm说,早上好,你为什么又不理我了?
    我要做光光,光光没烦恼,
    高高跳,大声叫,光光的乐趣你们不知道!
知道中国软件业为什么落后吗?
忽视软件工程,中国软件业将永远落后下去...

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: sunner.hit.edu.cn]
发信人: jinqiao (一场游戏一场梦), 信区: Programming
标  题: Re: 谁会在纯dos下实现电源关机(内空)
发信站: 哈工大紫丁香 (2001年02月09日20:49:36 星期五), 站内信件

也不知道我什么时候看到的,反正存下来了。
一个在TC下重起计算机的程序,也没有试过,不知道好不好使。
也不知道对你有没有用。
unsigned char code[]={0xea,0x0,0x0,0xff,0xff};
( *(void(far *)())code )(); //启 动 计 算 机 

【 在 zcx (齐云) 的大作中提到: 】

--
   I Believe I can Fly!
          I Believe I can Touch The Sky!

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.112.3.163]
发信人: Sun (大灯泡), 信区: Programming
标  题: Re: 谁会在纯dos下实现电源关机(内空)
发信站: 哈工大紫丁香 (2001年02月09日20:51:41 星期五), 站内信件

原来是一个call

【 在 jinqiao (一场游戏一场梦) 的大作中提到: 】
: 也不知道我什么时候看到的,反正存下来了。
: 一个在TC下重起计算机的程序,也没有试过,不知道好不好使。
: 也不知道对你有没有用。
: unsigned char code[]={0xea,0x0,0x0,0xff,0xff};
: ( *(void(far *)())code )(); //启 动 计 算 机 
: 【 在 zcx (齐云) 的大作中提到: 】

--
    太阳当空照,灯泡呵呵笑,
    mm说,早上好,你为什么又不理我了?
    我要做光光,光光没烦恼,
    高高跳,大声叫,光光的乐趣你们不知道!
知道中国软件业为什么落后吗?
忽视软件工程,中国软件业将永远落后下去...

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: sunner.hit.edu.cn]
发信人: himem (单行道), 信区: Programming
标  题: Re: 谁会在纯dos下实现电源关机(内空)
发信站: 哈工大紫丁香 (2001年02月10日10:23:43 星期六), 站内信件

电源关机何重起动机理事不同的.

【 在 jinqiao (一场游戏一场梦) 的大作中提到: 】
: 也不知道我什么时候看到的,反正存下来了。
: 一个在TC下重起计算机的程序,也没有试过,不知道好不好使。
: 也不知道对你有没有用。
: unsigned char code[]={0xea,0x0,0x0,0xff,0xff};
: ( *(void(far *)())code )(); //启 动 计 算 机 
: 【 在 zcx (齐云) 的大作中提到: 】

--
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.235.236]
发信人: zhangyan (今朝有水今朝灌), 信区: Programming
标  题: Re: 谁会在纯dos下实现电源关机(内空)
发信站: 哈工大紫丁香 (2001年02月10日12:55:35 星期六), 站内信件

看不懂,Sun给解释一下

【 在 Sun (大灯泡) 的大作中提到: 】
: 原来是一个call
: 【 在 jinqiao (一场游戏一场梦) 的大作中提到: 】
: : 也不知道我什么时候看到的,反正存下来了。
: : 一个在TC下重起计算机的程序,也没有试过,不知道好不好使。
: : 也不知道对你有没有用。
: : unsigned char code[]={0xea,0x0,0x0,0xff,0xff};
: : ( *(void(far *)())code )(); //启 动 计 算 机 

--
Take it slow,     Set it couse,     Make it happen.

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.97.242.157]
发信人: lofe (〖感激生活·善待自我〗), 信区: Programming
标  题: Re: 谁会在纯dos下实现电源关机(内空)
发信站: 哈工大紫丁香 (2001年02月10日15:28:44 星期六), 站内信件

一个中断调用。

在DOS系统下,int 19就直接热启了。Windows95的Command Prompt Mode
下似乎也好用,我通常这么快速重启 :) 若不跳过自检,则需在相应寄存
器中设置一些参数。

【 在 zhangyan (今朝有水今朝灌) 的大作中提到: 】
: 看不懂,Sun给解释一下
: 【 在 Sun (大灯泡) 的大作中提到: 】
: : 原来是一个call

--
                ═══════════════════﹃                     
                  过 而 结 要 情 有 结 而 过 要 情 有                        
                  程 不 果 的 , 些 果 不 程 的 , 些                        
                  。 是 , 是 重 事 ; 是 , 是 重 事                        
               ﹄═══════════════════                      
 生活是件激动人心的事。人生不如意十之八九,要懂得感激生活。    

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: DnC.hit.edu.cn]
※ 修改:·lofe 於 02月10日15:30:57 修改本文·[FROM: DnC.hit.edu.cn]
发信人: zhangyan (今朝有水今朝灌), 信区: Programming
标  题: Re: 谁会在纯dos下实现电源关机(内空)
发信站: 哈工大紫丁香 (2001年02月10日15:50:59 星期六), 站内信件

怎么看出是一个中断调用?
Call[] 里面放的是中断向量和功能?
还有 (far *)()是什么函数?
在有 int19不是重新启动吗?关机一定是掉用APM,DOS支持吗?

【 在 lofe (〖感激生活·善待自我〗) 的大作中提到: 】
: 一个中断调用。
: 在DOS系统下,int 19就直接热启了。Windows95的Command Prompt Mode
: 下似乎也好用,我通常这么快速重启 :) 若不跳过自检,则需在相应寄存
: 器中设置一些参数。
: 【 在 zhangyan (今朝有水今朝灌) 的大作中提到: 】
: : 看不懂,Sun给解释一下

--
Take it slow,     Set it couse,     Make it happen.

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.97.242.157]
发信人: lofe (〖感激生活·善待自我〗), 信区: Programming
标  题: Re: 谁会在纯dos下实现电源关机(内空)
发信站: 哈工大紫丁香 (2001年02月10日16:08:50 星期六), 站内信件

函数其实与变量一样,在汇编级都是通过内存地址来访问。
中断向量就是操作系统所提供的一些中断服务程序的内存
地址,通过这些地址就可以调用相应的功能。

void(far *)() 是 函数指针 类型,可告诉编译器其后的
地址是某一返回类型为void,参数列表为空的函数的地址,
可以调用。

int 19 可实现重启功能。关机我想只能调用APM的功能,
这是主板提供的功能,由BIOS提供调用函数。既然如此,
DOS应该支持吧?

【 在 zhangyan (今朝有水今朝灌) 的大作中提到: 】
: 怎么看出是一个中断调用?
: Call[] 里面放的是中断向量和功能?
: 还有 (far *)()是什么函数?
: 在有 int19不是重新启动吗?关机一定是掉用APM,DOS支持吗?
: 【 在 lofe (〖感激生活·善待自我〗) 的大作中提到: 】
: : 一个中断调用。
: : 在DOS系统下,int 19就直接热启了。Windows95的Command Prompt Mode
: : 下似乎也好用,我通常这么快速重启 :) 若不跳过自检,则需在相应寄存
: : 器中设置一些参数。

--
                ═══════════════════﹃                     
                  过 而 结 要 情 有 结 而 过 要 情 有                        
                  程 不 果 的 , 些 果 不 程 的 , 些                        
                  。 是 , 是 重 事 ; 是 , 是 重 事                        
               ﹄═══════════════════                      
 生活是件激动人心的事。人生不如意十之八九,要懂得感激生活。    

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: DnC.hit.edu.cn]
※ 修改:·lofe 於 02月10日16:38:31 修改本文·[FROM: DnC.hit.edu.cn]
发信人: zhangyan (今朝有水今朝灌), 信区: Programming
标  题: Re: 谁会在纯dos下实现电源关机(内空)
发信站: 哈工大紫丁香 (2001年02月10日16:32:24 星期六), 站内信件

我想问
far *指向的是函数的入口,那么这个函数又是什么?
  (*(*void(far *)())code)也算一个函数,
    (*void(far *)())code 对code 作了什么?

【 在 lofe (〖感激生活·善待自我〗) 的大作中提到: 】
: 函数其实与变量一样,在汇编级都是通过内存地址来访问。
: 中断向量就是操作系统所提供的一些中断服务程序的内存
: 地址,通过这些地址就可以调用相应的功能。
: (far void *)() 是 函数指针 类型,可告诉编译器其后的
: 地址是某一返回类型为void,参数列表为空的函数的地址,
: 可以调用。
: int 19 可实现重启功能。关机我想只能调用APM的功能,
: 这是主板提供的功能,由BIOS提供调用函数。既然如此,
: DOS应该支持吧?

--
Take it slow,     Set it couse,     Make it happen.

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: ppp82.hr.hl.cn]
发信人: zhangyan (今朝有水今朝灌), 信区: Programming
标  题: Re: 谁会在纯dos下实现电源关机(内空)
发信站: 哈工大紫丁香 (2001年02月10日16:35:15 星期六), 站内信件

【 在 lofe (〖感激生活·善待自我〗) 的大作中提到: 】
: 函数其实与变量一样,在汇编级都是通过内存地址来访问。
: 中断向量就是操作系统所提供的一些中断服务程序的内存
: 地址,通过这些地址就可以调用相应的功能。
: (far void *)() 是 函数指针 类型,可告诉编译器其后的
  ~~~~~~~~~~~void(far *)()???

: 地址是某一返回类型为void,参数列表为空的函数的地址,
: 可以调用。
: int 19 可实现重启功能。关机我想只能调用APM的功能,
: 这是主板提供的功能,由BIOS提供调用函数。既然如此,
: DOS应该支持吧?

--
Take it slow,     Set it couse,     Make it happen.

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: ppp82.hr.hl.cn]
发信人: lofe (〖感激生活·善待自我〗), 信区: Programming
标  题: Re: 谁会在纯dos下实现电源关机(内空)
发信站: 哈工大紫丁香 (2001年02月10日16:37:14 星期六), 站内信件

jinqiao的文中如下:
unsigned char code[]={0xea,0x0,0x0,0xff,0xff};
( *(void(far *)())code )(); //启 动 计 算 机

(void(far *)())code         将 code 解释为函数指针;
*(void(far *)())code        便是这个指针所指向的函数。
(*(void(far *)())code)()    是对这函数进行调用。

【 在 zhangyan (今朝有水今朝灌) 的大作中提到: 】
: 我想问
: far *指向的是函数的入口,那么这个函数又是什么?
:   (*(*void(far *)())code)也算一个函数,
        ^ 
        这个'*'是多余的

:     (*void(far *)())code 对code 作了什么?
: 【 在 lofe (〖感激生活·善待自我〗) 的大作中提到: 】
: : 函数其实与变量一样,在汇编级都是通过内存地址来访问。
: : 中断向量就是操作系统所提供的一些中断服务程序的内存
: : 地址,通过这些地址就可以调用相应的功能。
: : (far void *)() 是 函数指针 类型,可告诉编译器其后的

--
 生活,少不了思考;人生,少不了追求。 
    耶稣说:人不能只靠面包过活,你的心灵需要比面包
更有营养的东西,你有多久没有唱歌,没有到大自然中走
一走,没有读诗?
 生活,是美丽的,你还没发现?

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: DnC.hit.edu.cn]
发信人: zhangyan (今朝有水今朝灌), 信区: Programming
标  题: Re: 谁会在纯dos下实现电源关机(内空)
发信站: 哈工大紫丁香 (2001年02月10日16:41:53 星期六), 站内信件

【 在 lofe (〖感激生活·善待自我〗) 的大作中提到: 】
: jinqiao的文中如下:
: unsigned char code[]={0xea,0x0,0x0,0xff,0xff};
: ( *(void(far *)())code )(); //启 动 计 算 机
: (void(far *)())code         将 code 解释为函数指针;
也就是说 (void(far *)())是一个cast
将char * 强制转换为函数指针
不过,这样是否安全?
char*所指得的地方是代码段还是数据段?
编译器怎么知道?

: *(void(far *)())code        便是这个指针所指向的函数。
: (*(void(far *)())code)()    是对这函数进行调用。
: 【 在 zhangyan (今朝有水今朝灌) 的大作中提到: 】
: : 我想问
: : far *指向的是函数的入口,那么这个函数又是什么?

--
Take it slow,     Set it couse,     Make it happen.

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: ppp102.hr.hl.cn]
发信人: Sun (大灯泡), 信区: Programming
标  题: Re: 谁会在纯dos下实现电源关机(内空)
发信站: 哈工大紫丁香 (2001年02月10日17:51:31 星期六), 站内信件

这就是C的灵活之所在了

【 在 zhangyan (今朝有水今朝灌) 的大作中提到: 】
: 【 在 lofe (〖感激生活·善待自我〗) 的大作中提到: 】
: : jinqiao的文中如下:
: : unsigned char code[]={0xea,0x0,0x0,0xff,0xff};
: : ( *(void(far *)())code )(); //启 动 计 算 机
: : (void(far *)())code         将 code 解释为函数指针;
: 也就是说 (void(far *)())是一个cast
: 将char * 强制转换为函数指针
: 不过,这样是否安全?
: char*所指得的地方是代码段还是数据段?
: 编译器怎么知道?

--
    太阳当空照,灯泡呵呵笑,
    mm说,早上好,你为什么又不理我了?
    我要做光光,光光没烦恼,
    高高跳,大声叫,光光的乐趣你们不知道!
知道中国软件业为什么落后吗?
忽视软件工程,中国软件业将永远落后下去...

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: sunner.hit.edu.cn]
发信人: zhangyan (今朝有水今朝灌), 信区: Programming
标  题: Re: 谁会在纯dos下实现电源关机(内空)
发信站: 哈工大紫丁香 (2001年02月10日17:53:36 星期六), 站内信件

我又明白了,呵呵

【 在 Sun (大灯泡) 的大作中提到: 】
: 这就是C的灵活之所在了
: 【 在 zhangyan (今朝有水今朝灌) 的大作中提到: 】
: : 也就是说 (void(far *)())是一个cast
: : 将char * 强制转换为函数指针
: : 不过,这样是否安全?

--
Take it slow,     Set it couse,     Make it happen.

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: ppp113.hr.hl.cn]
发信人: mantisW (树根), 信区: Programming
标  题: Re: 谁会在纯dos下实现电源关机(内空)
发信站: 哈工大紫丁香 (2001年02月10日17:59:24 星期六), 站内信件

0XEA,0X00,0X00,0XFF,0XFF
翻译成8086汇编好像是
JMP  FFFF:0000
这好像是一条复位语句

【 在 zhangyan (今朝有水今朝灌) 的大作中提到: 】
: 我又明白了,呵呵
: 【 在 Sun (大灯泡) 的大作中提到: 】
: : 这就是C的灵活之所在了

--

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.229.84]
发信人: zhangyan (今朝有水今朝灌), 信区: Programming
标  题: Re: 谁会在纯dos下实现电源关机(内空)
发信站: 哈工大紫丁香 (2001年02月10日18:02:09 星期六), 站内信件

应该是的,不是调用中断

【 在 mantisW (树根) 的大作中提到: 】
: 0XEA,0X00,0X00,0XFF,0XFF
: 翻译成8086汇编好像是
: JMP  FFFF:0000
: 这好像是一条复位语句
: 【 在 zhangyan (今朝有水今朝灌) 的大作中提到: 】
: : 我又明白了,呵呵

--
Take it slow,     Set it couse,     Make it happen.

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: ppp113.hr.hl.cn]
发信人: Sun (大灯泡), 信区: Programming
标  题: Re: 谁会在纯dos下实现电源关机(内空)
发信站: 哈工大紫丁香 (2001年02月10日18:10:14 星期六), 站内信件

翻译成汇编却是这样,但是,这种函数指针用法,code应该是函数的入口地址,
不是指令。
所以,这段程序应该是一个32位环境下的程序,最后的功能是:
call ff:ff0000ea
大概是这样吧?

【 在 mantisW (树根) 的大作中提到: 】
: 0XEA,0X00,0X00,0XFF,0XFF
: 翻译成8086汇编好像是
: JMP  FFFF:0000
: 这好像是一条复位语句
: 【 在 zhangyan (今朝有水今朝灌) 的大作中提到: 】
: : 我又明白了,呵呵

--
    太阳当空照,灯泡呵呵笑,
    mm说,早上好,你为什么又不理我了?
    我要做光光,光光没烦恼,
    高高跳,大声叫,光光的乐趣你们不知道!
知道中国软件业为什么落后吗?
忽视软件工程,中国软件业将永远落后下去...

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: sunner.hit.edu.cn]
发信人: mantisW (树根), 信区: Programming
标  题: Re: 谁会在纯dos下实现电源关机(内空)
发信站: 哈工大紫丁香 (2001年02月10日18:30:20 星期六), 站内信件

code是地址,但code地址对应下的内容是指令!!!!!!
在调用函数时
才有call xxxx:xxxx
不是函数本身。code就是xxxx:xxxx!

【 在 Sun (大灯泡) 的大作中提到: 】
: 翻译成汇编却是这样,但是,这种函数指针用法,code应该是函数的入口地址,
: 不是指令。
: 所以,这段程序应该是一个32位环境下的程序,最后的功能是:
: call ff:ff0000ea
: 大概是这样吧?
: 【 在 mantisW (树根) 的大作中提到: 】
: : 0XEA,0X00,0X00,0XFF,0XFF
: : 翻译成8086汇编好像是
: : JMP  FFFF:0000
: : 这好像是一条复位语句

--

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.229.84]
※ 修改:·mantisW 於 02月10日18:32:09 修改本文·[FROM: 202.118.229.84]
发信人: Sun (大灯泡), 信区: Programming
标  题: Re: 谁会在纯dos下实现电源关机(内空)
发信站: 哈工大紫丁香 (2001年02月10日18:31:47 星期六), 站内信件

Oh...yes,yes.......

【 在 mantisW (树根) 的大作中提到: 】
: code是地址,但code地址对应下的内容是指令!!!!!!
: 在调用函数时
: 才有call xxxx:xxxx
: 不是函数本身。
: 【 在 Sun (大灯泡) 的大作中提到: 】
: : 翻译成汇编却是这样,但是,这种函数指针用法,code应该是函数的入口地址,
: : 不是指令。
: : 所以,这段程序应该是一个32位环境下的程序,最后的功能是:
: : call ff:ff0000ea

--
    太阳当空照,灯泡呵呵笑,
    mm说,早上好,你为什么又不理我了?
    我要做光光,光光没烦恼,
    高高跳,大声叫,光光的乐趣你们不知道!
知道中国软件业为什么落后吗?
忽视软件工程,中国软件业将永远落后下去...

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: sunner.hit.edu.cn]
发信人: zhangyan (今朝有水今朝灌), 信区: Programming
标  题: Re: 谁会在纯dos下实现电源关机(内空)
发信站: 哈工大紫丁香 (2001年02月10日19:09:00 星期六), 站内信件

难道还要记机器代码?

【 在 Sun (大灯泡) 的大作中提到: 】
: Oh...yes,yes.......
: 【 在 mantisW (树根) 的大作中提到: 】
: : code是地址,但code地址对应下的内容是指令!!!!!!
: : 在调用函数时
: : 才有call xxxx:xxxx
: : 不是函数本身。

--
Take it slow,     Set it couse,     Make it happen.

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.97.242.5]
发信人: lofe (〖感激生活·善待自我〗), 信区: Programming
标  题: Re: 谁会在纯dos下实现电源关机(内空)
发信站: 哈工大紫丁香 (2001年02月10日20:13:45 星期六), 站内信件

在C/C++中,只有通过函数调用才能执行code地址下的指令,
这时code就相当于函数指针。

如果在汇编中,当然可以直接jmp了。

【 在 mantisW (树根) 的大作中提到: 】
: code是地址,但code地址对应下的内容是指令!!!!!!
: 在调用函数时
: 才有call xxxx:xxxx
: 不是函数本身。code就是xxxx:xxxx!
: 【 在 Sun (大灯泡) 的大作中提到: 】
: : 翻译成汇编却是这样,但是,这种函数指针用法,code应该是函数的入口地址,
: : 不是指令。
: : 所以,这段程序应该是一个32位环境下的程序,最后的功能是:
: : call ff:ff0000ea

--
我们更要探讨Windows系统编程技术(Programming)
 推荐:Programming版 精华区->经典文章 

                  独孤九剑的最高境界是不拿剑
                  编程的最高境界是无所谓工具
 有空的时候,看看 MSDN ,真的很不错。

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: DnC.hit.edu.cn]
※ 修改:·lofe 於 02月10日20:13:58 修改本文·[FROM: DnC.hit.edu.cn]
发信人: terminate (指南针), 信区: Programming
标  题: Re: 谁会在纯dos下实现电源关机(内空)
发信站: 哈工大紫丁香 (2001年02月10日20:17:26 星期六), 站内信件

呵呵,这个说法我同意.

【 在 mantisW (树根) 的大作中提到: 】
: code是地址,但code地址对应下的内容是指令!!!!!!
: 在调用函数时
: 才有call xxxx:xxxx
: 不是函数本身。code就是xxxx:xxxx!
: 【 在 Sun (大灯泡) 的大作中提到: 】
: : 翻译成汇编却是这样,但是,这种函数指针用法,code应该是函数的入口地址,
: : 不是指令。
: : 所以,这段程序应该是一个32位环境下的程序,最后的功能是:
: : call ff:ff0000ea

--
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.235.236]
发信人: zhangyan (今朝有水今朝灌), 信区: Programming
标  题: Re: 谁会在纯dos下实现电源关机(内空)
发信站: 哈工大紫丁香 (2001年02月10日20:46:45 星期六), 站内信件

【 在 Sun (大灯泡) 的大作中提到: 】
: 翻译成汇编却是这样,但是,这种函数指针用法,code应该是函数的入口地址,
: 不是指令。
: 所以,这段程序应该是一个32位环境下的程序,最后的功能是:
: call ff:ff0000ea
   ~~~~~~~~~~~~什么意思?
看不懂了

: 大概是这样吧?
: 【 在 mantisW (树根) 的大作中提到: 】
: : 0XEA,0X00,0X00,0XFF,0XFF
: : 翻译成8086汇编好像是
: : JMP  FFFF:0000
: : 这好像是一条复位语句

--
Take it slow,     Set it couse,     Make it happen.

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: ppp162.hr.hl.cn]
发信人: lofe (〖感激生活·善待自我〗), 信区: Programming
标  题: Re: 谁会在纯dos下实现电源关机(内空)
发信站: 哈工大紫丁香 (2001年02月10日20:56:59 星期六), 站内信件

为了看究竟,我在VC6下调试了这段代码:

unsigned char code[]={0xea,0x0,0x0,0xff,0xff};
( *(void(far *)())code )(); //启 动 计 算 机

为了编译通过,需要将code强制转换:
 ( *(void(far *)()) ((void*)code) )();
                     ^^^^^^^
生成 ASM 文件中相应部分如下:
...

; 24   :    unsigned char code[]={0xea,0x0,0x0,0xff,0xff};

    mov BYTE PTR _code$[ebp], 234       ; 000000eaH
    mov BYTE PTR _code$[ebp+1], 0
    mov BYTE PTR _code$[ebp+2], 0
    mov BYTE PTR _code$[ebp+3], 255     ; 000000ffH
    mov BYTE PTR _code$[ebp+4], 255     ; 000000ffH

; 25   :     ( *(void(far *)()) ((void*)code) )();

    lea     eax, DWORD PTR _code$[ebp]
    mov     esi, esp
    call    eax
    cmp     esi, esp
    call    __chkesp
...

可以看到,call   eax 就是函数调用了。
当然,code里面的内容只是复位指令,并不是系统提供的中断调用。

【 在 lofe (〖感激生活·善待自我〗) 的大作中提到: 】
: 在C/C++中,只有通过函数调用才能执行code地址下的指令,
: 这时code就相当于函数指针。
: 如果在汇编中,当然可以直接jmp了。
: 【 在 mantisW (树根) 的大作中提到: 】
: : code是地址,但code地址对应下的内容是指令!!!!!!
: : 在调用函数时
: : 才有call xxxx:xxxx
: : 不是函数本身。code就是xxxx:xxxx!

--
 生活,少不了思考;人生,少不了追求。 
    耶稣说:人不能只靠面包过活,你的心灵需要比面包
更有营养的东西,你有多久没有唱歌,没有到大自然中走
一走,没有读诗?
 生活,是美丽的,你还没发现?

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: DnC.hit.edu.cn]
※ 修改:·lofe 於 02月10日21:03:04 修改本文·[FROM: DnC.hit.edu.cn]
发信人: lofe (〖感激生活·善待自我〗), 信区: Programming
标  题: Re: 谁会在纯dos下实现电源关机(内空)
发信站: 哈工大紫丁香 (2001年02月10日21:25:56 星期六), 站内信件

-e 100 ea 0 0 ff ff
-g

【 在 zhangyan (今朝有水今朝灌) 的大作中提到: 】
: r cs:ffff
: r ip:0000
: t
: ??
: 是这样吗?
: 【 在 lofe (〖感激生活·善待自我〗) 的大作中提到: 】
: : 我在debug下执行的,好使。

--
                ═══════════════════﹃                     
                  过 而 结 要 情 有 结 而 过 要 情 有                        
                  程 不 果 的 , 些 果 不 程 的 , 些                        
                  。 是 , 是 重 事 ; 是 , 是 重 事                        
               ﹄═══════════════════                      
 生活是件激动人心的事。人生不如意十之八九,要懂得感激生活。    

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: DnC.hit.edu.cn]
发信人: Sun (大灯泡), 信区: Programming
标  题: Re: 谁会在纯dos下实现电源关机(内空)
发信站: 哈工大紫丁香 (2001年02月11日18:10:04 星期天), 站内信件

这东西不是记住的,而是用过了,因为脸熟而记住的。

【 在 zhangyan (今朝有水今朝灌) 的大作中提到: 】
: 难道还要记机器代码?
: 【 在 Sun (大灯泡) 的大作中提到: 】
: : Oh...yes,yes.......

--
    如果程序员懂得了软件工程,
    那么他就不再是牛,
    更不是妓女了。
知道中国软件业为什么落后吗?
忽视软件工程,中国软件业将永远落后下去...

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: sunner.hit.edu.cn]
发信人: Sun (大灯泡), 信区: Programming
标  题: Re: 谁会在纯dos下实现电源关机(内空)
发信站: 哈工大紫丁香 (2001年02月11日18:11:44 星期天), 站内信件

我犯了一个错误,那就是把对code的内容赋值那一段当做了对指针赋值,
那样执行结果就是这个。

【 在 zhangyan (今朝有水今朝灌) 的大作中提到: 】
: 【 在 Sun (大灯泡) 的大作中提到: 】
: : 翻译成汇编却是这样,但是,这种函数指针用法,code应该是函数的入口地址,
: : 不是指令。
: : 所以,这段程序应该是一个32位环境下的程序,最后的功能是:
: : call ff:ff0000ea
:    ~~~~~~~~~~~~什么意思?
: 看不懂了
: : 大概是这样吧?

--
    如果程序员懂得了软件工程,
    那么他就不再是牛,
    更不是妓女了。
知道中国软件业为什么落后吗?
忽视软件工程,中国软件业将永远落后下去...

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: sunner.hit.edu.cn]
发信人: zhangyan (今朝有水今朝灌), 信区: Programming
标  题: Re: 谁会在纯dos下实现电源关机(内空)
发信站: 哈工大紫丁香 (2001年02月11日20:06:14 星期天), 站内信件

hehe
我开始也把它当做是中断向量了
【 在 Sun (大灯泡) 的大作中提到: 】
: 我犯了一个错误,那就是把对code的内容赋值那一段当做了对指针赋值,
: 那样执行结果就是这个。
: 【 在 zhangyan (今朝有水今朝灌) 的大作中提到: 】
: :    ~~~~~~~~~~~~什么意思?
: : 看不懂了

--
Take it slow,     Set it couse,     Make it happen.

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.97.225.204]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:213.954毫秒