русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Умножение и деление целых чисел


Дата добавления: 2014-11-27; просмотров: 901; Нарушение авторских прав


В отличие от сложения и вычитания в микропроцессоре существуют по 2 операции умножения и деления: отдельно для чисел без знака и для чисел со знаком. Во всех командах присутствует только один операнд - источник. 2-ой операнд располагается в РОН. Для операции умножения правило операндов описано таблицей 4 [1].

Таблица 4.

Местоположение операндов и результата для умножения

Сомножитель_1 Сомножитель_2 Результат
Байт (в РОН или ячейке памяти) AL 16 бит в АХ: в AL – младшая часть результата, в AH - старшая
Слово (в РОН или ячейке памяти) АХ 32 бита в паре DX: AX; в AX – младшая часть результата, в DX – старшая часть результата

После выполнения команд флаги СF и OF показывают, какая часть произведения существенна для дальнейших операций. При умножении чисел без знака эти флаги равны 0, если старшая часть результата нулевая, в противном случае (результат превысил по значащим цифрам сомножители) флаги устанавливаются в 1. При умножении чисел со знаком флаги равны 0, если старшая половина произведения содержит расширение знакового разряда младшей половины (при положительном результате это 0, при отрицательном –1). Обратите внимание, что эти операции не позволяют иметь в качестве операнда константу (непосредственное значение).

Результат перемножения правильных неупакованных BCD-чисел может быть представлен в неупакованном формате BCD-чисел с помощью команды ААМ. Команда работает с регистрами AL и AH и выполняет следующее: делит значение регистра AL на 10 и запоминает частное в регистре АН (старшая неупакованная цифра результата) и остаток – регистре AL (младшая неупакованная цифра результата). Однако очевидно, что этими операциями можно выполнить только табличное умножение. Для более сложных операций умножения необходимо разработать программу, реализующую умножение “в столбик”, получение частных произведений, их сдвиги и сложение. Операции, аналогичной ААМ для упакованных BCD-чисел в микропроцессоре не существует.



В операции деления так же, как и при умножении учитывается знак, а правило расположения операндов отражается в таблице 5 [1].

Таблица 5

Местоположение операндов и результата для деления

Делимое Делитель Частное Остаток
Слово 16 бит в регистре АХ Байт (в РОН или ячейке памяти) Байт в регистре AL Байт в регистре AH
32 бита в DX –старшая часть, в АХ- младшая Слово 16 бит (в РОН или ячейке памяти) Слово 16 бит в регистре АХ Слово 16 бит в регистре DX

При делении может возникать прерывание ”деление на 0”. Такой результат может получиться не только, когда делитель равен 0, но и в следующих случаях:

1) при умножении чисел без знака для ситуации первой строки таблицы делимое более чем в 256 раз больше делителя,

2) при умножении чисел без знака для ситуации второй строки таблицы делимое более чем в 65636 раз больше делителя,

3) при делении чисел со знаком для ситуации первой строки таблицы делимое более чем в 128 раз больше значения делителя,

4) при делении чисел со знаком для ситуации второй строки таблицы делимое более чем в 32768 раз больше значения делителя.

Процесс выполнения деления двух неупакованных BCD-чисел может быть представлен в формате неупакованных BCD-чисел. Для этого перед операцией деления в регистре АХ получают две неупакованные цифры делимого (выполняет эту операцию программист удобным для него способом). Далее командой AAD преобразуется число в двоичное, которое затем является делимым в операции DIV. Причем в дальнейшей операции DIV двоичное число делится на неупакованную BCD-цифру, находящуюся в байтовом регистре или в байтовой ячейке памяти. Результат операции получается так, как описано первой строкой таблицы. Понятно, что с применением этих команд можно выполнять очень простые операции деления, но команду AAD можно использовать и в контексте преобразования упакованного (или неупакованного) десятичного числа из диапазона 00-99 в двоичный эквивалент.

К группе арифметических команд относят команды расширения операнда, которые называются командами преобразования:

СBW – преобразует байт в регистре AL в слово в регистре АХ путем распространения старшего бита AL на все биты регистра AH;

CWD –преобразует слово в регистре АХ в двойное слово в регистрах AX и DX, путем распространения старшего 15-ого бита регистра АХ на все биты регистра DX.

Эти команды позволяют приводить разноформатные операнды к одному формату (большему).

 



<== предыдущая лекция | следующая лекция ==>
Сложение и вычитание целых чисел | ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.574 сек.