如何确定LC-3机器的PC偏移量?作业代码解析存疑
LC-3 LEA指令地址计算解析
先明确LC-3 LEA指令的核心计算规则:
- LEA指令格式为
1110 | DR | PCoffset9,其中PCoffset9是9位有符号数,需先符号扩展为16位。 - LC-3每条指令占2字节,取指完成后PC会自动自增2,即当前指令地址为
0x3000时,取指后PC的值为0x3000 + 2 = 0x3002。 - 有效地址(EA)计算公式:
EA = PC + 符号扩展后的PCoffset9
- LEA指令格式为
你的计算验证:
- 给出的
PCoffset9是二进制000011111,对应十进制31(十六进制0x1F),符号扩展后为0x001F。 - 代入公式得:
EA = 0x3002 + 0x1F = 0x3021,该地址正好落在作业指定的0x3020至0x3025范围内,说明你的偏移量计算完全正确。
- 给出的
常见误区提醒:
不要直接把偏移量加到当前指令地址0x3000上,LC-3的PC偏移是基于取指后的PC值(当前指令地址+2)计算的,这是新手容易出错的点。
内容的提问来源于stack exchange,提问作者Wremmurg
相关产品推荐
相关产品推荐

