 |
在TC20中实现计算机启动的方法:
unsigned char code[]={0xea,0x0,0x0,0xff,0xff};
( *(void(far *)())code )(); //启动计算机
这段代码中0xea是跳转指令jmp far的机器码,FFFF:0000是系统的复位程序所在地址。这段代码的意思就是跳转到FFFF:0000执行系统的复位程序。
这段代码只适用于DOS下,请勿在Windows下使用。
晨光的意见:
我初学Tc!请问far*是什么意思??
答:在DOS下,所有地址都可以表示为“段:段内偏移量”的方式,即XXXX:XXXX。如果在段内部进行操作使用near指针,即段采用当前的数据段,而指针地址为段内偏移量,这样通常更快些,但是所能表示的地址范围有限。为了表示更广的范围,可以使用far*(远指针),就是不管当前的数据段是什么,采用XXXX:XXXX的方式指明地址。
此问题由李海回答。
附加关键字:编程, 源程序, programming, source code, C/C++, MFC, C++ Builder, Borland C++, Turbo C, C, BCB, 其他方面, 。
|