Главная страница Случайная лекция Мы поможем в написании ваших работ! Порталы: БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика Мы поможем в написании ваших работ! |
Деление в ASCII-форматеУмножение в ASCII-формате Вычитание в ASCII-формате Команда AAS (ASCII Adjust for Subtraction — коррекция для вычитания ASCII-кодов) выполняется аналогично команде ААА. Команда AAS проверяет правую шест, цифру (четыре бита) в регистре AL. В случае, если эта цифра лежит между А и F или флаг AF равен 1, то из регистра AL вычитается 6, а из регистра АН вычитается 1, флаги AF и CF устанавливаются в 1. Во всех случаях команда AAS устанавливает в 0 левую шест.цифру в регистре AL. Команда ААМ (ASCII Adjust for Multiplication — коррекция для умножения ASCII-кодов) выполняет корректировку результата умножения ASCII-кодов в регистре АХ. Однако, шест, цифры должны быть очищены от троек и полученные данные уже не будут являться действительными ASCII-кодами. Например, число в ASCII-формате 31323334 имеет распакованное десятичное представление 01020304. Кроме этого, надо помнить, что коррекция осуществляется только для одного байта за одно выполнение, поэтому можно умножать только одно-байтовые поля; для более длинных полей необходима организация цикла. Команда ААМ делит содержимое регистра AL на 10 (шест.ОА) и записывает частное в регистр АН, а остаток в AL. Предположим, что в регистре AL содержится шест.35, а в регистре CL — шест.39. Следующие команды умножают содержимое регистра AL на содержимое CL и преобразуют результат в ASCII-формат: АХ: AND CL.OFH преобразовать CL в 09 AND AL.OFH преобразовать AL в 05 0005 MUL CL ;Умножить AL на CL 002D ААМ преобразовать в распак.дес. 0405 OR AX.3030H преобразовать в ASCII-ф-т 3435 Команда MUL генерирует 45 (шест.002О) в регистре АХ, после чего команда ААМ делит это значение на 10, записывая частное 04 в ре- гистр АН и остаток 05 в регистр AL. Команда OR преобразует затем распакованное десятичное число в ASCII-формат. Команда AAD (ASCII Adjust for Division — коррекция для деления Л5СП-кодов) выполняет корректировку ASCII-кода делимого до непосредственного деления. Однако, прежде необходимо очистить левые тройки ASCII-кодов для получения распакованного десятичного формата. Команда AAD может оперировать с двухбайтовыми делимыми в регистре АХ. Предположим, что регистр АХ содержит делимое 3238 в ASCII-формате и регистр CL содержит делитель 37 также в ASCII-формате. Следующие команды выполняют коррекцию для последующего деления: АХ: AND CL.OFH преобразовать CL в распак.дес. AND AX,OFOFH преобразовать АХ в распак.дес. 0208 AAD преобразовать в двоичный 001С DIV CL разделить на 7 0004 Команда AAD умножает содержимое АН на 10 (шест.ОА), прибавляет результат 20 (шест. 14) к регистру AL и очищает регистр АН. Значение 001С есть шест, представление десятичного числа 28. Делитель может быть только однобайтовый от 01 до 09.
Дата добавления: 2014-03-11; просмотров: 380; Нарушение авторских прав Мы поможем в написании ваших работ! |