HLASM в z / OS выдает ошибки о неверном коде операции - PullRequest
2 голосов
/ 21 июня 2019

Я пытаюсь добавить два числа и вычесть два числа, но когда я компилирую свой код, он говорит «недопустимый код операции» (я использую ассист (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 ]

4 голосов
/ 22 июня 2019

Несколько вещей.Во-первых, важно размещение элементов данных, поскольку они будут включены в список кодов.В отличие от языков более высокого уровня, где объявления типов данных организуются автоматически.

Во-вторых, вы неправильно объявляете элементы данных.Имя должно начинаться в столбце 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

Перемещение данныхвне пути кода и помещения его имени в правый столбец означает, что ваша метка данных не является кодом операции.

3 голосов
/ 21 июня 2019

Вы поместили свои данные там, где ассемблер ожидает инструкции. Вам необходимо выяснить, как конкретизировать данные или буквальную область и поместить туда свои данные. Или перепишите свой код, чтобы использовать данные непосредственного типа, где значения находятся в itext.

...