LC-3机器语言指令解读验证及代码汇编错误排查请求
LC-3汇编代码错误排查及修正
核心错误点
- LEA指令格式错误:LC-3的
LEA仅支持LEA R目标, 标签格式,用来加载标签的内存地址,你写的LEA R1, R7, #29完全不符合语法。如果要实现寄存器加立即数的操作,应该用ADD指令。 - ST指令误用:
ST指令只能直接寻址到标签,格式为ST R源, 标签;基址寄存器+偏移的存储操作必须用STR指令,你写的ST R2, R7, #27要改成STR R2, R7, #27。 - LDI指令格式错误:
LDI是间接寻址指令,格式为LDI R目标, 标签,不支持寄存器+立即数的写法。如果要从基址+偏移的地址加载数据,应该用LDR指令。
修正后的代码示例
基于你要实现的操作逻辑,修正后的代码如下:
.ORIG x3000 ; 替换错误LEA,用ADD实现R1 = R7 + 29 ADD R1, R7, #29 ADD R2, R1, #14 ; 替换ST为STR STR R2, R7, #27 AND R2, R2, #0 ADD R2, R2, #5 STR R2, R1, #14 ; 替换错误LDI,用LDR实现基址+偏移加载 LDR R3, R7, #23 .END
内容的提问来源于stack exchange,提问作者lucifer
相关产品推荐
相关产品推荐

