Embedded 80C188重定位寄存器寻址

Embedded 80C188重定位寄存器寻址,embedded,Embedded,我正在使用80C188对嵌入式系统进行逆向工程,而重定位寄存器(RELREG)的使用方式让我感到困惑 初始化时的第一步之一是通过向RELREG写入新值来移动处理器控制寄存器 默认情况下,RELREG的值为20FFH,该值将寄存器块置于地址0FFxxH的I/O空间顶部。“英特尔应用程序说明”中给出的示例描述了将1100H的值写入RELREG,然后将寄存器块放置在100xxH的内存空间中。够清楚了 然而,在我正在检查的系统中,写入的值是1804H,我希望将寄存器块放在地址804xh的内存空间中,但是

我正在使用80C188对嵌入式系统进行逆向工程,而重定位寄存器(RELREG)的使用方式让我感到困惑

初始化时的第一步之一是通过向RELREG写入新值来移动处理器控制寄存器

默认情况下,RELREG的值为20FFH,该值将寄存器块置于地址0FFxxH的I/O空间顶部。“英特尔应用程序说明”中给出的示例描述了将1100H的值写入RELREG,然后将寄存器块放置在100xxH的内存空间中。够清楚了

然而,在我正在检查的系统中,写入的值是1804H,我希望将寄存器块放在地址804xh的内存空间中,但是以下将寄存器初始化为操作值的写入操作都是在内存空间中的0F4xxH。处理器在系统中运行良好,因此这不是编程错误

我绝对肯定这些地址,因为我不仅在EPROM上的代码本身中看到它们,而且在启动时代码执行的逻辑分析器跟踪中也看到它们


有人对此有解释吗?

代码中的地址是地址偏移量,必须与相应的段寄存器组合才能映射到物理地址。映射通过以下方式执行:

(seg * 16) + offset

因此,如果
seg
是7100h,那么
seg:off
address 7100:f400指的是物理地址80400h。

查看代码而不是您对代码作用的断言将非常有帮助。RELREG指定PCB物理地址的上12位,但代码将按照物理地址为
(段)关于寻址,您是正确的,我已经忘记了很多,但更彻底地阅读数据表提醒了我。保留位的设置对我来说也是一个谜。AMD数据表中指定了02FFh默认值,他们也将该位称为保留位。谢谢,这完全正确,因为我刚刚介绍了这个morning发现了。在将AX设置为7100h之后,又有两个MOV语句将DS和SS设置为该值,所以这确实是正在发生的事情。我仍然很好奇,在这之后,有一个AL的MOV似乎只是将某个值设置为零。我正在使用IDA,希望有一种方法可以回到更高级别的C例程是用代码编写的,但这是另一个问题。