- •4.13 Особенности арифметических операций c двоичными данными.
- •Многословное сложение
- •Word1a 0123
- •Буззнаковые и знаковые данные
- •Беззнаковое Знаковое
- •4.13.2 Умножение
- •ДоАн alПослеAx
- •Знаковое умножение: команда imul
- •C10mul endp
- •Многословноe умножение
- •Сдвиг влево на 4 бита
- •4.13.3 Деление
- •До ax После ан al
- •Беззнаковое деление: команда div
- •Знаковое деление: команда idiv
- •Переполнения и прерывания
- •Деление вычитанием
- •4.13.4 Преобразование знака
4.13.4 Преобразование знака
Команда NEG обеспечивает преобразование знака двоичных чисел из положительного в отрицательное и наоборот. Практически команда NEG устанавливает противоположные значения битов и прибавляет 1. Примеры:
NEG AX
NEG BL
NEG BINAMT ;(байт или слово в памяти)
Преобразование знака для 64-битового (или большего) числа включает большее количество шагов. Предположим, что регистровая пара EDX:EAX содержит 64-битовое двоичное число. Так как команда NEG не может обрабатывать два регистра
одновременно, то ее использование приведет к неправильному результату. Ниже показано применение команды NOT:
NOT EDX Инвертирование битов
NOT EAX Инвертирование битов
ADD EAX,1 Прибавление 1 к EAX
ADC EDX, 0 Прибавление переноса к EDX
Остается одна незначительная проблема: над числами, представленными в двоичном формате, удобно выполнять арифметические операции, если сами числа определены в программе. Данные, вводимые в программу с дискового файла, могут также иметь двоичный формат. Но данные, вводимые с клавиатуры, представлены в ASCII-формате. Хотя ASCII-коды удобны для отображения и печати, они требуют специальных преобразований в двоичный формат для арифметических вычислений.
Выводы
В настоящем разделе были рассмотрены системы команд процессоров Intel IA-32. Так как эта система команд IA-32 основана на архитектуре CISC, то в ней реализован широчайший набор команд для выполнения самых разных операций над различными типами данных.