void GetFontAdd() { struct REGPACK regs; regs.r_bx=0x0300; regs.r_ax=0x1130; intr(0x10,®s); FONT_SEG=regs.r_es; FONT_OFF=regs.r_bp; }程序说regs的存储大小不知道
时间: 2024-03-22 08:38:18 浏览: 48
segy_struct.zip_segy_segy_struct_地震segy_结构地震
在这段代码中,结构体 REGPACK 的大小取决于具体的编译器和编译选项,因为它的成员类型和顺序可能会影响结构体的大小。
假设这个结构体是在 MS-DOS 的开发环境中使用 Borland C++ 编译器定义的,那么它的大小应该是 20 个字节。因为在这个编译器中,REGPACK 结构体的定义通常如下:
```c
typedef struct _REGPACK {
unsigned int r_ax;
unsigned int r_bx;
unsigned int r_cx;
unsigned int r_dx;
unsigned int r_bp;
unsigned int r_si;
unsigned int r_di;
unsigned int r_ds;
unsigned int r_es;
unsigned int r_flags;
} REGPACK;
```
在这个结构体中,每个成员都是一个 unsigned int 类型,占用 2 个字节的内存空间。因此,整个结构体的大小为 20 个字节。
在调用 intr 函数时,将 REGPACK 结构体传递给它,以便将寄存器的值传递给 BIOS 中断服务程序。在这个过程中,regs 结构体的大小应该与实际的硬件寄存器大小相同,以确保数据能够正确地传递。
因此,在这段代码中,需要确保 REGPACK 结构体的大小与编译器和硬件寄存器的大小相同,以确保程序能够正确地获取到字体数据的地址。
阅读全文