Cтраница 1
![]() |
Решение задачи с трансляцией программы.| Интерпретация задачи. [1] |
Упакованные данные - две десятичные цифры помещены в один байт. [2]
В младших полубайтах полей упакованных данных обоих операндов должны находиться правильные коды знаков. [3]
Регистр 1 0000 0000 Регистр 2 0000 8FOO Регистр 3 Адрес первой команды 008FOO - OF Отредактированный результат 008F10 - 14 Упакованные данные. [4]
Следующая четверка параметров по тому же принципу описывает очередной ключ: он начинается с 20-го байта, занимает три байта, состоит из упакованных данных и определяет порядок записей по убыванию. [5]
Так как поля обрабатываются в ЕС ЭВМ справа налево, то в первой половине старшего байта будет записан знак числа ( знаку соответствует код С, а знаку - - код D), а последние 4 байт дополняются нулем до полного слова. Число десятичных цифр в поле упакованных данных, таким образом, всегда нечетное. [6]
Используемые здесь шестнадцатеричные константы OFOOH и 007FH называются масками; в полях констант, соответствующих полям, подлежащим извлечению, находятся единицы, а в остальных полях - нули. По команде AND неиспользованные разряды слов Р и Q устанавливаются в 0, так что нужные поля могут быть объеденены с помощью команды OR. В общем случае для выполнения операций над полями упакованных данных необходимо производить сдвиг полей в слове влево или вправо; этот вопрос будет подробно рассмотрен в разд. [7]
Команда PACK преобразует данные, указанные вторым операндом ( предполагается, что это десятичные числа в зонном формате), в упакованный формат, располагая их по адресу, указанному первым операндом. Преобразованные данные помещаются полубайтами в область памяти, указанную первым операндом; обработка данных идет справа налево. В следующий полубайт загружается десятичная цифра из того же байта поля, указанного вторым операндом, из которого был взят код знака. Однако в поле упакованного формата они будут располагаться последовательно в каждом полубайте. Если команда обработала всю область данных зонного формата, а поле упакованного формата еще не заполнено целиком, то в оставшиеся старшие полубайты заносятся шестнадцатеричные нули. Если поле упакованных данных заполнено до окончания обработки данных поля зонного формата, то оставшиеся данные не используются. В связи с тем что не все данные пересылаются из одного операнда в другой ( из зонных частей байтов пересылается только код знака), очевидно, что длина первого операнда может быть меньше длины второго операнда. [8]