中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » Djgpp 里无法调用中断 int13 ah=48h 苦恼~!
作者:
标题: Djgpp 里无法调用中断 int13 ah=48h 苦恼~! 上一主题 | 下一主题
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,&regs,&regs,&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
状态 离线
『第 7 楼』:  

麻烦你看清楚我的问题!


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
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: