我正在开发在x86实模式下运行的选项rom(扩展ROM)的INT 13H磁盘服务程序。 我需要在例程执行时访问位于DS(DS = CS)的全局变量,但全局变量变为只读! 只能正常访问位于SS(SS!= DS)的局部变量,但堆栈的大小不够。 我需要的大小约为2KB。我的问题是:
非常感谢。
int global_var;
void __far int13h_isr(void)
{
int local_var;
__asm
{
push ds
push es
mov bx, cs
mov ds, bx
mov es, bx
};
global_var = 0x22; // global variable can NOT store 0x22 in the routine.
local_var = 0x22; // local variable can store 0x22 correctly.
__asm
{
pop es
pop ds
};
}
答案 0 :(得分:0)
选项rom(扩展ROM)的INT 13H磁盘服务程序 是否可以将数据存储到例程中的全局变量中?
数据无法存储到ROM中。如果在加载设备驱动程序之前需要内存,扩展卡将需要它自己的内存。
如何在例程中查找/找到2KB可用内存?
设备驱动程序及其ISR可以分配内存,但在使用任何特定于扩展的INT 13H调用之前,MSDOS或某些其他操作系统必须能够引导和加载设备驱动程序。