我正在尝试将两个数字相加并减去两个数字,但是当我编译我的代码时,它会显示“无效的操作码”(我正在使用辅助(IBM))
MAIN CSECT
USING MAIN,15
->invalid op-code NUM1 DC F'67'
->invalid op-code NUM2 DC F'203'
L 0,NUM1
L 1,NUM2
AR 0,1
L 2,NUM1
L 3,NUM2
SR 2,3
XDUMP
END MAIN
答案 0 :(得分:4)
几件事。首先,数据项的位置很重要,因为它将与代码列表结合在一起。与高级语言不同,后者会自动组织数据类型的声明。
第二,您错误地声明了数据项。该名称应从第1列开始,然后是数据类型DC
,然后是数据。这将仅包含与其他代码内联的数据,这将导致您的程序由于S0C1异常而失败。
这里是建议的声明数据的方法
Columns
0 1 2 3 4
1234567890123456789012345678901234567890
MAIN CSECT
USING MAIN,15
L 0,NUM1
L 1,NUM2
AR 0,1
L 2,NUM1
L 3,NUM2
SR 2,3
XDUMP
NUM1 DC F'67'
NUM2 DC F'203'
END MAIN
将数据移出代码路径并将其名称放在右列中,表明您的数据标签不是操作码。
答案 1 :(得分:3)
您已将数据放在汇编程序期望的位置。您需要找出如何特定数据或文字区域并将数据放置在那里的方法。或重写代码以使用立即类型数据(值在itext中)。