哪位朋友帮我看看我的int15 ah=87,为何用的不对啊???

zhgwbzhd 2010-08-24 10:58:44
我是将代码弄成C的。

我发在这里的原因,是 问题主要就是用以上中断的问题。


unsigned char TheBuffer[50];
unsigned char Buffer[20];

//参数seg在这里是段基址,offset是偏移,需要取得值在他们表示的后16字节后。

int fetch_high(unsigned int seg,unsigned int offset)
{
unsigned long i,j;
union REGS in,out;
struct SREGS segregs;

for(i=0;i<16;i++)
{
TheBuffer[i] = 0;
TheBuffer[0x20 + i] = 0;
}

TheBuffer[0x10]=16;
TheBuffer[0x11]=0;
TheBuffer[0x12]=peekb(seg,offset + 0x10);
TheBuffer[0x13]=peekb(seg,offset + 0x11);
TheBuffer[0x14]=peekb(seg,offset + 0x12);
TheBuffer[0x15]=0x93;
TheBuffer[0x16]=0;
TheBuffer[0x17]=peekb(seg,offset + 0x13);

TheBuffer[0x18]=16;
TheBuffer[0x19]=0;

//得到当前数组的地址。

i = FP_OFF(Buffer);
j = FP_SEG(Buffer);

j = j & 0xFFFF;
j = j * 16 + i & 0xFFFF;

TheBuffer[0x1A]=j & 0xFF;
TheBuffer[0x1B]=j & 0xFF00;


TheBuffer[0x1C]=j & 0xFF0000;

TheBuffer[0x1D]=0x93;
TheBuffer[0x1E]=0;
TheBuffer[0x1F]=j & 0xFF000000;

segregs.es = FP_SEG(TheBuffer);
in.x.si = FP_OFF(TheBuffer);
in.h.ah = 0x87;
in.x.cx = 8;

for(i=0;i<16;i++)
printf("%2x ",TheBuffer[i]);
printf("\n");
for(i=0;i<16;i++)
printf("%2x ",TheBuffer[0x10 + i]);
printf("\n");
for(i=0;i<16;i++)
printf("%2x ",TheBuffer[0x20 + i]);
printf("\n");


int86x(0x15, &in, &out, &segregs);

if(out.x.cflag == 1)
{
printf("fetch_high error \n");
return 0;//error
}

for(i=0;i<16;i++)
printf("%d ",Buffer[i]);

return 1;

}

...全文
65 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhgwbzhd 2010-08-24
  • 打赏
  • 举报
回复
嗯,1楼的代码我已经修改过了。
但是发现显示结果为:

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
10 00 00 00 FF 93 00 03 10 00 EE 00 00 93 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

也就是说我给的源地址是 03FF0000 将数据复制到 000000EE处
我通过debug来查看 00:00EE处,确实修改了原来的值。

那我现在就迷惑了。
我的Buffer的线性地址如何获得呢?????

谢谢各位!
zhgwbzhd 2010-08-24
  • 打赏
  • 举报
回复
哦,我知道我的错误之处了。
在于我将数组Buffer的逻辑地址作为线性地址了。

我现在就改,一会看结果。

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧