|
BSLTT
初级用户
积分 59
发帖 18
注册 2005-12-25
状态 离线
|
『楼 主』:
Djgpp 里无法调用中断 int13 ah=48h 苦恼~!
Djgpp 里无法调用中断 int13 ah=48h 苦恼~!
//#define _BORLAND_DOS_REGS
#include <dos.h>
#include <math.h>
#include <stdio.h>
#include <sys/segments.h>
#include <go32.h>
#include <sys/movedata.h>
typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef unsigned long DWORD;
int main()
{
union REGS regs;
struct SREGS sregs;
struct{
WORD size;
WORD inforflags;
DWORD cylns;
DWORD heads;
DWORD sects;
DWORD tslow;
DWORD tshi;
WORD bps;
}package;
regs.h.ah=0x48;
regs.h.dl=0x80;
//--- TC ---// TC用下面这两行传入段地址和偏移量就没有问题
//sregs.ds = FP_SEG(&package);
//regs.x.si = FP_OFF(&package);
//--- DJGPP ---// 可在DJGPP里我就不知道怎么输入这个量了~!
sregs.ds = _my_ds();
regs.x.si = _my_ds();
printf("ds=%x si=%x \n",sregs.ds,regs.x.si);
printf("package= %x \n",&package);
int386x(0x13,®s,®s,&sregs);
printf("%d \n",regs.h.ah);
printf("cyliners = %ld\n",package.cylns);
printf("heads = %ld \n",package.heads);
printf("sect/cyln = %ld \n",package.sects);
printf("Lsectors = %ld\n",package.tslow);
printf("Hsectors = %ld\n",package.tshi);
printf("bytes = %ld\n",package.bps);
printf("gb = %.f GB\n",(double)(package.tslow*512.0/pow(10,9)));
printf("-------------------------- \n \n \n");
}
高手显身吧~!快救救我~!
|
|
2005-12-26 23:26 |
|
|
darkradx
高级用户
积分 972
发帖 420
注册 2004-5-16
状态 离线
|
『第
2 楼』:
BIOS issue
|
平生进退如飙风 |
|
2005-12-28 08:32 |
|
|
BSLTT
初级用户
积分 59
发帖 18
注册 2005-12-25
状态 离线
|
『第
3 楼』:
楼上的兄弟,能不能给一个明白的答案呀?(请不要吐水哎~!)谢谢~!
|
|
2005-12-28 09:41 |
|
|
darkradx
高级用户
积分 972
发帖 420
注册 2004-5-16
状态 离线
|
『第
4 楼』:
try __dpmi_int
|
平生进退如飙风 |
|
2005-12-28 21:52 |
|
|
BSLTT
初级用户
积分 59
发帖 18
注册 2005-12-25
状态 离线
|
『第
5 楼』:
不知道是不是我笨, __dpmi_int(0x13,&r);
我怎么把sreg放进去呢????
|
|
2005-12-29 09:37 |
|
|
darkradx
高级用户
积分 972
发帖 420
注册 2004-5-16
状态 离线
|
『第
6 楼』:
参数结构都不一样...
|
平生进退如飙风 |
|
2005-12-29 11:05 |
|
|
BSLTT
初级用户
积分 59
发帖 18
注册 2005-12-25
状态 离线
|
|
2005-12-29 23:41 |
|
|
dos_jacky
初级用户
积分 124
发帖 10
注册 2004-10-9
状态 离线
|
『第
8 楼』:
#include <sys/nearptr.h>
#include <crt0.h>
void * MK_FP (unsigned short seg, unsigned short ofs)
{
if ( !(_crt0_startup_flags & _CRT0_FLAG_NEARPTR) )
if (!__djgpp_nearptr_enable ())
return (void *)0;
return (void *) (seg*16 + ofs + __djgpp_conventional_base);
}
|
|
2006-2-13 16:25 |
|