- UID
- 903242
- 性别
- 男
- 来自
- 武汉
|
硬件平台:MC9SHY64
开发环境: CODEWARRIOR V5.0
编译模式是 BANK模式, 代码如下:
const UINT8 __far fardata @0xe8000 = 0xaa; //分页区的数据
const UINT8 *__far farpt; //指向分页区的指针
UINT8 a;
void read_far(void)
{
farpt = &fardata;
a = *farpt; //这里始终都不能正确读到数据
}
调试的时候,分析了一下,是因为PPAGE的值没有改变或者说是内核内部没有进行PPAGE的切换。
假如read_far函数在另一个分页区,比如0x0C,而不是0xe8000中的0x0E区,这样读取的值,就是0XC8000的值
相当于PPAGE没有切换,而直接读到了当前PPAGE页的8000地址的值。
如果read_far函数也在0X0E区,则可以正确读取到,因为本身的PPAGE就是0x0e。
我想问的是,在一个分区中用什么办法可以读取到另一个分区的常量呢? |
|