MARIE汇编程序第一、第二遍扫描填写方法及代码报错问题求解
MARIE汇编两遍扫描及报错修复方案
常见报错修复
1. Repeat标识符无效问题
- MARIE汇编标签命名规则:仅允许以字母开头,仅可包含字母、数字、下划线,不可与指令助记符、汇编保留字重名,标签定义末尾必须加冒号
: - 修复方案:
- 若Repeat为自定义循环标签,检查是否漏写末尾冒号,确认没有拼写错误
- 若出现保留字冲突,将Repeat改为其他自定义标签名,例如
LoopStart:
2. 变量未声明数据类型问题
- MARIE要求所有变量必须在程序终止指令
Halt之后,使用DEC(十进制)或HEX(十六进制)伪指令声明初始值,格式为变量名, 伪指令 初始值 - 示例声明代码:
var1, DEC 10 / 声明十进制变量var1,初始值为10 var2, HEX F / 声明十六进制变量var2,初始值为0xF(十进制15) res, DEC 0 / 声明十进制结果变量res,初始值为0
两遍扫描操作注意事项
- 第一遍扫描:仅做地址统计、符号表生成,遇到自定义标签、变量声明时,直接将对应名称和当前地址存入符号表即可
- 第二遍扫描:基于已经生成的符号表,将代码中所有符号替换为对应地址,翻译为机器码,只要第一遍符号表填写正确,即可避免符号未定义类报错
完整示例代码参考
ORG 100 / 指定程序起始地址为0x100 LoopStart, Load var1 / 循环起始标签,第一遍扫描会将LoopStart对应地址存入符号表 Add var2 Store res Subt ONE Store var1 Skipcond 400 / 结果为正则跳转 Jump LoopStart Halt / 变量声明区 var1, DEC 5 var2, DEC 2 res, DEC 0 ONE, DEC 1
内容的提问来源于stack exchange,提问作者machinecode0x
相关产品推荐
相关产品推荐

