<<
>>

Целочисленные команды

ААА • ААА • 37 • Корректировка результата сложения одноразрядных неупакованных BCD-чисел командой ADD. Действие: если младший полубайт регистра AL > 9 или AF = 1, то: (AL) = (AL) + 6; (АН) = (АН) + 1; АF = 1, СF = 1.
В противном случае AF = CF = 0. В обоих случаях (AL) = (AL) AND Оfh. Флаги: ОF= ? SF= ? ZF= ? АF = г РF= ? СF= г AAD • AAD • D50A ' • Подготовка двухзначного неупакованного BCD-числа в регистре АХ для операции деления. Действие: (AL) = (АН х 10) + AL; (АН) - OOh. Замечание: процессор воспринимает другой машинный код этой команды, не имеющий мне- моники,— D5i8.Ее действие: (АL)=(АНхi8)+АL;(АН)=OOh. Флаги: ОF= ? SF= rZF = г AF = ? РF=rСF=? ААМ • ААМ • 04 ОА • Коррекция результата умножения двух неупакованных BCD-чисел. Действие: разделить содержимое регистра AL на 10; частное записать в регистр АН, остаток — в регистр AL. Замечание: процессор воспринимает другой машинный код этой команды — D4 i'8 (без мне- моники). Ее действие: разделить содержимое регистра AL на і8; частное записать в регистр АН, остаток — в регистр AL.
Если i8 = 0, то процессор генерирует исключение ошибки деления #DЕ. флаги: ОF = ? SF = г ZF = г АF = ? РF = г СF - ? AAS AAS 3F • Коррекция результата вычитания командой SUB двух неупакованных одноразрядных BCD- чисел. Действие: если младший полубайт регистра АL> 9 или флаг AF= 1, то значение младшего полубайтаAL уменьшается на 6, значение АН уменьшается наl, флагиAF и CFустанавливаются в 1. Если ни одно из этих условий не выполняется, команда устанавливает флаги AF = CF = 0. В обоих случаях значение старшего полубайта регистра AL обнуляется. Флаги: ОF = ?SF-?ZF-? АF = rРF-?СF-r ADC • ADC приемник, источник ADC АL,imm8 ADC АХ,immlб ADC ЕАХ,immЗ2 ADC r/m8,imm8 АDСr/тlб,iттlб АDСr/тЗ2,iттЗ2 АDСr/тlб,iтт8 ADC r/тЗ2,iтт8 АDСr/т8,r8 АDСr/тlб,rlб ADC r/тЗ2,rЗ2 ADC r8,r/ш8 АDСrlб,r/тlб ADC r32,r/m32 • Сложение с учетом значения флагаiiереноса CF.
Действие: приемник = приемник + источник + CF. Флаги: ОF= г SF= rZF = г AF - г РF= г СF = г ADD • ADD приемник, источник
ADDАL,imm8 ADD АХ,imml6 АDDЕАХ,immЗ2 ADD r/ш8,imm8 АDDr/mlб,immlб АDDr/mЗ2,immЗ2 АDDr/mlб,imm8 АDDr/mЗ2,imm8 АDDr/m8,r8 АDDr/mlб,rlб АDDr/mЗ2,rЗ2 ADD r8,r/m8 АDDrlб,r/тlб ADD r32,r/m32 • Сложение двух целочисленных двоичных операндов. Действие: приемник = приемник + источник. При переполнении приемника флаг CF устанавливается в 1 Флаги: 0F - г SF «г ZF - г AF - г РF «г CF - г AND • AND приемник, источник • 24 ib AND АL,imm8 25 iw AND АХ,immlб 25 id AND ЕАХ,immЗ2 80/4ib AND r/m8,imm8 81 /4 iw AND r/тlб,iттlб 81/4 id AND r/тЗ2,iттЗ2 83/4ib AND r/тlб,iтт8 83 /4 ib AND r/тЗ2,iтт8 20/г AND r/т8,г8 21/г AND r/тlб,rlб 21 /г AND г/тЗ2,rЗ2 22/г AND r8,r/т8 23/г AND rlб,r/тlб 23 /г AND rЗ2,r/тЗ2 • Логическое И. Действие: приемник = приемник AND источник. Флаги: ОF = ОSF=rZF=rАF = ? РF=rСF = О АRРL • ARPL приемник, источник • 63 /г АRРL r/mlб,rlб • Настройка поля RPL селектора. Действие: операнд приемник содержит селектор вызываемой программы, операнд источник — селектор вызывающей программы. Команда ARPL сравнивает биты RPL селектора приемника с би- тами RPL селектора источника и в зависимости от результатов этого сравнения выполняет дей- ствия: Ж если RPL приемника < RPL источника, то ZF = 1 и RPL приемника = RPL источника; Ж если RPL приемника > RPL источника, то: ZF «∙ 0. Флаги: ZF = г BOUND • BOUND индекс, границы_массива • 62/г BOUND rl6,mlб&lб 62/г BOUND rЗ2,mЗ2&З2 • Контроль нахождения индекса массива в границах. Действие: сравнить значение в 16/32-разрядном регистре индекс с диапазоном значений, пер- вое из которых — это нижний индекс, второе — верхний индекс плюс размер операнда в байтах. Значения нижнего и верхнего индексов расположены последовательно в двух ячейках памяти размером слово/двойное слово, адресуемых операндом границы_массива.
Если в результате про- верки значение из регистра вышло за пределы указанного диапазона значений, то возбуждается прерывание с номером 5, если нет, программа продолжает выполнение. BSF • BSF результат, источник • 0F ВС BSF rlб,r/mlб ОFВС BSF rЗ2,r/mЗ2 • Определение номера позиции в операнде источник крайнего справа единичного бита. Действие: просмотр битов операнда источник, начиная с младшего. Номер позиции первого единичного бита слева записывается в регистр результат, флаг ZF устанавливается в 0. Если еди- ничных битов нет, то флаг ZF устанавливается в 1, а регистр результат оказывается неопределен- ным. Флаги: ОF=?SF-?ZF = rАF = ?РF=?СF=? BSR • BSR результат, источник * • OF ВD BSRrlб,r/mlб OF BD BSR r32,r/m32 • Определение номера позиции крайнегослсва единичного бита в операнде источник. Действие: команда просматривает биты операнда источник начиная со старшего бита 15/31, и, если встречается единичный бит, флаг ZF устанавливается в 0, а в регистр результат записывает- ся номер позиции (отсчет осуществляется относительно нулевой позиции), в которой встретил- ся единичный бит. Если единичных битов нет, то флаг ZF устанавливается в 1. Диапазон значе- ний результата зависит от разрядности второго операнда: для 16/32-разрядных операндов это, соответственно, 0...15/0...31. Флаги: ОF = ?SF = ?ZF = rАF = ? РF = ?СF = ? BSWAP • BSWAP источник •0F С8 + rd BSWAP r32 • Изменение порядка следования байтов в операнде источник. . Действие: К- TEMP < источник; . источник(7...0)
<< | >>
Источник: В. И. Юров. Assembler. Учебник для вузов. 2-е изд. 2003

Еще по теме Целочисленные команды:

  1. Определение команды.
  2. § 4.5. Деятельность команд в организации
  3. Признаки команды.
  4. Пример настройки и реабилитации в футбольной команде
  5. Работа с другими командами
  6. Четыре шага по созданию эффективной команды
  7. ШЕСТЬ СТУПЕНЕЙ НА ПУТИ СОЗДАНИЯ КОМАНДЫ.
  8. Кто становится лидером команды
  9. Создание деловой команды «Вероятно, я не лучший советчик в этом вопросе».
  10. Эд САЛЛИВАН. ВРЕМЯ — ДЕНЬГИ Создание команды разработчиков, программного обеспечения, 2001