当前位置: 代码迷 >> C语言 >> 对ROMBIOS的问题求教
  详细解决方案

对ROMBIOS的问题求教

热度:215   发布时间:2006-07-19 08:41:17.0
对ROMBIOS的问题求教

求教下段程序中的问题:
#include <stdio.h>
#include <string.h>
#include <dos.h>

char *ptr;

void main(int argc,char *argv[])
{
ptr=(char *) MK_FP(0x0040,0x0017);//指针ptr指向0040:0017单元
printf("改写ROMBIOS参数来控制NUMLOCK开关\n");
if (argc==1)
{
printf("程序用法正确!\n");
printf("NUMLOCK 01 打开LOCK\n");
printf("NUMLOCK 00 关闭LOCK\n");
}
if (! strcmp(argv[1],"01"))
*ptr |= 0x20;
if (! strcmp(argv[1],"00"))
*ptr &= 0xdf;
}
加红那里的MK_FP是什么意思哦!怎么以前没有看到过??求教这方面的高手!

搜索更多相关的解决方案: ROMBIOS  NUMLOCK  ptr  printf  

----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽

2006-07-19 00:55:44
lxs5216

等 级:新手上路
帖 子:144
专家分:0
注 册:2006-2-3
  得分:0 
以下是引用穆扬在2006-7-19 8:55:44的发言:
猜测:
Make a far pointer

I 服了you! 这里我感到很郁闷,怎么会出现这样一个东东,你看看这里是在定义某个变量还是在调用函数?不光这串字符没见过,这样的用法也少见啊!


----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽

2006-07-19 01:12:23
baidu

等 级:新手上路
威 望:8
帖 子:3812
专家分:0
注 册:2005-11-4
  得分:0 

MK_FP(0x0040,0x0017);
==>

0x0040<<4+0x0017


----------------解决方案--------------------------------------------------------
unsigned int far* ptr;
----------------解决方案--------------------------------------------------------
二位哥哥可真会忽悠我啊!两位都是骨灰级的编程人物,对这些标准头文件里的内容肯定洞悉的一清二楚了,看完所有头文件就是不可以找到 MK_FP啊, baidu兄多半连贴都没看就在写了吧!你看看5楼你写的啥?小生过于愚昧,更把头抓破!
----------------解决方案--------------------------------------------------------
MK-FP()是一个宏
调用方式:void far *MK_FP(unsigned seg,unsigned off)
原型在dos.h中
返回一个以seg指定段,以off指定偏移量的远程指针
----------------解决方案--------------------------------------------------------
  相关解决方案