z / OS上的HLASM发出有关无效操作码的错误

时间:2019-06-21 00:58:48

标签: assembly mainframe zos s390x

我正在尝试将两个数字相加并减去两个数字,但是当我编译我的代码时,它会显示“无效的操作码”(我正在使用辅助(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

2 个答案:

答案 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中)。