Первая команда обработки
Первая команда обработки — команда MVC — относится к группе команд, выполняющих логические операции, которые можно использовать при работе с десятичными данными. Команда MVC — команда формата SS — помещает второй операнд на место первого. Операнды могут любым способом перекрываться, пересылка идет слева направо байт за байтом. В команде указывается общая длина для двух операндов, потому что область, откуда выбираются данные, и область, куда они помещаются, должны иметь одну и ту же длину. Длина может быть задана в пределах от 0 до 256 байт. В данном случае в команде MVC используется неявная длина имени KONM, которая равна 4. Таким образом, по команде MVC константа с именем HAGHM помещается в область KONM, чтобы не изменялись исходные данные. Сайт о Венгрии — http://hungarytur.ru/
Вычисления выполняются с помощью команды МР. В этой команде второй операнд является множителем, область первого операнда вначале содержит множимое, а после завершения операции — произведение. Длина множителя не должна превышать 7 байт и должна быть меньше длины множимого. Так как число цифр в произведении равно сумме цифр операндов, в множимом должно быть по крайней мере столько нулевых старших цифр, сколько цифр имеет множитель. Знак в произведении определяется по правилам алгебры, даже если один или оба операнда нулевые.
В приведенной программе необходимо умножить десятичное число с именем YVEL на десятичное число с именем PROD. В Команде МР нельзя указывать число с именем YVEL как множимое, так как его длина меньше длины числа с именем PROD* указанного в этом случае множителем. Нельзя сразу же выполнить и команду МР, в которой было бы указано как множимое число с именем PROD, так как это число содержит только три нулевые цифры слева, тогда как у множителя насчитывается четыре цифры. Поэтому число с именем PROD пересылается в рабочую область памяти, в старших разрядах которой предусматриваются дополнительные нули. Это выполняется командой ZAP. По этой команде в область, адрес которой указан первым операндом, записываются нули, а затем к первому операнду прибавляется второй операнд. Область RES на два байта больше PROD. Таким образом, после выполнения команды ZAP в области RES будут находиться по крайней мере четыре десятичных нуля.