Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Абель.docx
Скачиваний:
13
Добавлен:
26.11.2018
Размер:
569.84 Кб
Скачать

Inc cx ;Инкремент частного

JMP C20 ;Повторить цикл

С30: RET ;Частное в CX, остаток в AX

В конце подпрограммы регистр CX будет содержать частное, а AX -

oстаток. Пример умышленно примитивен для демонстрации данной техники

деления. Если частное получается в регистровой паре DX:AX, то необходимо

сделать два дополнения:

1. В метке c20 сравнивать ax и bx только при нулевом dx.

2. После команды sub вставить команду sbb dx,00.

П р и м е ч а н и е: очень большое частное и малый делитель могут

вызвать тысячи циклов.

ПРЕОБРАЗОВАНИЕ ЗНАКА

________________________________________________________________

Команда NEG обеспечивает преобразование знака двоичных чисел из

положительного в отрицательное и наоборот. Практически команда NEG

устанавливает противоположные значения битов и прибавляет 1. Примеры:

NEG AX

NEG BL

NEG BINAMT ;(байт или слово в памяти)

Преобразование знака для 35-битового (или большего) числа включает

больше шагов. Предположим, что регистровая пара DX:AX содержит 32-битовое

двоичное число. Так как команда NEG не может обрабатывать два регистра

одновременно, то ее использование приведет к неправильному результату. В

следующем примере показано использование команды NOT:

NOT DX ;Инвертирование битов

NOT AX ;Инвертирование битов

ADD AX,1 ;Прибавление 1 к AX

ADC DX,0 ;Прибавление переноса к DX

Остается одна незначительная проблема: над числами, представленными в

двоичном формате, удобно выполнять арифметические операции, если сами

числа определены в программе. Данные, вводимые в программу с дискового

файла, могут также иметь двоичный формат. Но данные, вводимые с

клавиатуры, представлены в ASCII-формате. Хотя ASCII-коды удобны для

отображения и печати, они требуют специальных преобразований в двоичный

формат для арифметических вычислений. Но это уже тема следующей главы.

ПРОЦЕССОРЫ INTEL 8087 И 80287 ДЛЯ ОБРАБОТКИ ЧИСЛОВЫХ ДАННЫХ

________________________________________________________________

Системная плата компьютера содержит пустое гнездо, зарезервированное

для числового процессора Intel 8087 (или 80287). Сопроцессор 8087

действует совместно с 8088, а сопроцессор 80287 действует совместно с

80286. Каждый сопроцессор имеет собственный набор команд и средства для

операций с плавающей запятой для выполнения экспоненциальных,

логарифмических и тригонометрических функций. Сопроцессор содержит восемь

80-битовых регистров с плавающей запятой, которые могут представить

числовые значения до 10 в 400 степени. Математические вычисления в

сопроцессоре выполняются примерно в 100 раз быстрее, чем в основном

процессоре.

Основной процессор выполняет специальные операции и передает числовые

данные в сопроцессор, который выполняет необходимые вычисления и

возвращает результат. Для ассемблирования с помощью транслятора MASM,

необходимо добавлять параметр /E или /R, например, MASM /R.

ОСНОВНЫЕ ПОЛОЖЕНИЯ НА ПАМЯТЬ

________________________________________________________________

- Будьте особенно внимательны при использовании однобайтовых

pегистров. Знаковые значения здесь могут быть от -128 до +127.

- Для многословного сложения используйте команду ADC для учета

переносов от предыдущих сложений. Если операция выполняется в цикле, то

используя команду CLC, установите флаг переноса в 0.

- Используйте команды MUL или DIV для беззнаковых данных и команды