80C535处理器复位向量指向无效内存,求首个有效指令地址
针对Becker BE2580收音机80C535处理器的指令分析
首先纠正一个关键误解:西门子80C535作为8051兼容架构的处理器,上电复位后程序计数器(PC)会直接初始化为0x0000,程序从0x0000地址开始取指令执行,并不是读取0x0000的内容作为跳转地址。你之前认为要跳转到0xC0D0的理解不符合8051架构逻辑,而且0xC0D0远超出了你手上8KB EPROM的地址范围(0x0000-0x1FFF),显然不可能是有效执行地址。
接下来拆解你提供的前0x10字节EPROM数据,找到第一个有效指令:
8051的指令是变长的(1-3字节),我们逐个地址解析:
- 地址
0x0000的字节是0xC0:这是8051的PUSH direct指令,该指令需要1个后续字节作为操作数(片内RAM的地址) - 地址
0x0001的字节是0xD0:作为上一条指令的操作数,因此0x0000到0x0001的两个字节组成了完整的第一个有效指令:PUSH 0xD0,功能是把片内RAM 0xD0地址中的内容压入栈顶。
这条指令执行完成后,程序计数器(PC)会自动指向0x0002,继续执行后续指令:
0x0002的0x70是单字节指令JMP @A+DPTR(基于累加器A和数据指针DPTR的内容跳转)0x0003的0x03是单字节指令RR A(累加器A的内容右移一位)- 后续字节也都是合法的8051指令,符合指令集规则。
总结:首个有效指令位于地址0x0000,由0x0000和0x0001两个字节组成。
内容的提问来源于stack exchange,提问作者displayname
相关产品推荐
相关产品推荐

