![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-10-31 18:50 |
共 47,815 主题排行 / 349,930 发帖 / 今日 0 篇 / 48,290 会员排行 |
| DOS开发编程 & 发展交流 (开发室) » Djgpp 里无法调用中断 int13 ah=48h 苦恼~! |
| 可打印版本 1,278 / 7 |
| 第1楼 BSLTT | 发表于 2005-12-26 23:26 |
| 初级用户 发帖 18 积分 59 | |
|
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"); } 高手显身吧~!快救救我~! |
|
| 第2楼 darkradx | 发表于 2005-12-28 08:32 |
| 高级用户 发帖 420 积分 972 | |
|
BIOS issue
|
|
| 第3楼 BSLTT | 发表于 2005-12-28 09:41 |
| 初级用户 发帖 18 积分 59 | |
|
楼上的兄弟,能不能给一个明白的答案呀?(请不要吐水哎~!)谢谢~!
|
|
| 第4楼 darkradx | 发表于 2005-12-28 21:52 |
| 高级用户 发帖 420 积分 972 | |
|
try __dpmi_int
|
|
| 第5楼 BSLTT | 发表于 2005-12-29 09:37 |
| 初级用户 发帖 18 积分 59 | |
|
不知道是不是我笨, __dpmi_int(0x13,&r);
我怎么把sreg放进去呢???? |
|
| 第6楼 darkradx | 发表于 2005-12-29 11:05 |
| 高级用户 发帖 420 积分 972 | |
|
参数结构都不一样...
|
|
| 第7楼 BSLTT | 发表于 2005-12-29 23:41 |
| 初级用户 发帖 18 积分 59 | |
|
麻烦你看清楚我的问题!
|
|
| 第8楼 dos_jacky | 发表于 2006-02-13 16:25 |
| 初级用户 发帖 10 积分 124 | |
|
#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); } |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |