Главная страница Случайная лекция Мы поможем в написании ваших работ! Порталы: БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика Мы поможем в написании ваших работ! |
Свойства операций над строкамиКоманды обработки строк Лекция 5. Отрицательные величины Некоторые применения программ допускают наличие отрицательных величин. Знак минус может устанавливаться после числа, например, 12,34-, или перед числом -12,34. Программа может проверять наличие минуса при преобразовании в двоичный формат. Можно оставить двоичное число положительным, но установить соответствующий индикатор исходной отрицательной величины. После завершения арифметических операций знак минус при необходимости может быть вставлен в ASCII поле. В случае, если необходимо, чтобы двоичное число было также отрицательным, то можно преобразовать, как обычно, ASCII-формат в двоичный. Будьте внимательны при использовании команд IMUL и IDIV для обработки знаковых данных. Для округления отрицательных чисел следует не прибавлять, а вычитать фактор 5. Важно: Ф ASCII-формат требует один байт на каждый символ. В случае, если поле содержит только цифры от 0 до 9, то замена старших троек в каждом байте на нули создает распакованный десятичный формат. Сжатие числа до двух цифр в байте создает упакованный десятичный формат. Ф После ASCII-сложения необходимо выполнить коррекцию с помощью команды ААА; после ASCII-вычитания — коррекция с помощью команды AAS. Ф Прежде чем выполнить ASCII-умножение, необходимо преобразовать множимое и множитель в «распакованный десятичный» формат, обнулив в каждом байте левые тройки. После умножения необходимо выполнить коррекцию результата с помощью команды ААМ. Ф Прежде чем выполнить ASCII-деление, необходимо: 1) преобразовать делимое и делитель в «распакованный десятичный» формат, обнулив в каждом байте левые тройки и 2) выполнить коррекцию делимого с помощью команды AAD. + Для большинства арифметических операций используйте преобразование чисел из ASCII-формата в двоичной формат. В процессе такого преобразования проверяйте на корректность ASCII-символы: они должны быть от шест.30 до шест.39, могут содержать десятичную запятую (точку) и, возможно, знак минус.
Часто бывает необходимо переслать или сравнить поля данных, которые превышают по длине одно слово. Например, необходимо сравнить описания или имена для того, чтобы отсортировать их в восходящей последовательности. Элементы такого формата известны как строковые данные и могут являться как символьными, так и числовыми. Для обработки строковых данных Ассемблер имеет пять команд обработки строк: > MOVS — переслать один байт или одно слово из одной области памяти в другую; Ф LODS — загрузить из памяти один байт в регистр AL или одно слово в регистр АХ; Ф STOS — записать содержимое регистра AL или АХ в память; Ф CMPS — сравнить содержимое двух областей памяти, размером в один байт или в одно слово; Ф SCAS — сравнить содержимое регистра AL или АХ с содержимым памяти. Префикс REP позволяет этим командам обрабатывать строки любой длины. Цепочечная команда может быть закодирована для повторяющейся обработки одного байта или одного слова за одно выполнение. Например, можно выбрать «байтовую» команду для обработки строки с нечетным числом байт или «двухбайтовую» команду для обработки четного числа байт.
Дата добавления: 2014-03-11; просмотров: 378; Нарушение авторских прав Мы поможем в написании ваших работ! |