IBM Mainframe Assembler - использование MVC со смещением регистра - PullRequest
2 голосов
/ 17 ноября 2011

Я работаю над заданием для ассамблеи колледжа.Мы используем эмулятор IBM Mainframe PC370.(Старая школа, но отличная отправная точка)

Я всегда стараюсь немного выйти за рамки задания, чтобы улучшить свои навыки программирования.

То, что я пытаюсь сделать, - этопереместить некоторые символьные данные (WORD) в (CWORD) со смещением 1, используя регистр.Я надеюсь, что смогу поместить данные в индекс на основе входных данных из файла, чтобы определить размещение в индексе.

Нам был предоставлен файл с пятизначной цифрой в позиции 1-5 и двухзначным кодом месяца в позиции 20-21.Я хотел бы поместить код месяца в регистр, чтобы определить смещение для добавления суммы в долларах к этой позиции в индексе.

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

Это вообще возможно?Я не нашел в учебнике или в Интернете ничего такого, что конкретно посвящено тому, как делать подобные вещи.

         L     R5,1
         MVC   CWORD+0(R5),WORD
         WTO   CWORD
         WTOR  'PRESS ENTER TO EXIT',EXIT

Спасибо за ваше время.SUBCAN

Ответы [ 3 ]

3 голосов
/ 17 ноября 2011

Вы писали:

      L     R5,1                        Get the fullword (32bit) value at location 0001.
      MVC   CWORD+0(R5),WORD            Copy the 5 bytes at location WORD to location CWORD.
      WTO   CWORD                       Display the contents of CWORD.
      WTOR  'PRESS ENTER TO EXIT',EXIT  Display the message and wait for a response.

Плюс, предположительно:

CWORD DS    CL5                     Output area.
      ...
WORD  DS    CL4                     Input area

Вы должны были написать:

      LA    R5,CWORD+1                  Get the address of the second byte of CWORD.
      MVC   0(L'WORD,R5),WORD           Copy the Length(WORD) bytes at location WORD to location CWORD+1.
      WTO   CWORD                       Display the contents of CWORD.
      WTOR  'PRESS ENTER TO EXIT',EXIT  Display the message and wait for a response.
      ...
CWORD DS    CL5                     Output area.
WORD  DS    CL4                     Input area

По крайней мере, это звучит так, как выв розыске.Но это не на 100% ясно из вашего вопроса.Если это не было вашим намерением.

1 голос
/ 13 ноября 2018
     LA     R5,1
     MVC   CWORD+0(R5),WORD

В инструкции MVC мы указываем длину, а не регистр.В вашем случае R5 будет интерпретироваться как 5, так как при запуске вашей программы вы объявили бы R5 EQU 5, поэтому он будет перемещать 5 символов, а не 1.

Если вы хотите использовать регистр, как показано ниже EX R5,ПЕРЕЕХАТЬ .,,Переместите MVC CWORD (0), WORD

, чтобы заменить legnth значением в R5.В этом случае вы можете поместить значение в R5 LA R5,1 будет работать

Reagrds, Shashank Assembler Developer.

0 голосов
/ 08 марта 2017

... переместить некоторые символьные данные (WORD) в (CWORD) со смещением 1, используя регистр ...

Согласно приведенной выше спецификации:

  [code to establish base register assumed] 
  LA 1,CWORD+1
  MVC 0(L'CWORD-1,1),WORD
  [...]
* assuming WORD and CWORD are both 4-byte fullwords
* only the first three bytes of WORD will fit into CWORD+1
WORD  DS  F 
CWORD DS  F 
...