Команди операцій з двійковими ланцюжками 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Команди операцій з двійковими ланцюжками



В мікропроцесорі i486 введено дві підгрупи ефективних команд для роботи з двійковими ланцюжками (bit string). Ці типи даних широко використовуються в комп’ютерній графіці, для табличного подання секторів дискового простору і т.п.

Команда перевірки біта bt (bit test) вибирає певний біт у двійковому ланцюжку і передає його в прапорець перенесення cf. Подібні до неї команди перевірки та інвертування біта btc (bit test and complement), перевірки й установлення біта в 1 bts (bit test and set), перевірки й установлення біта в нуль btr (bit test and reset). Тому надалі говоритимемо про узагальнену команду

btX dst, index,

де , dst – задає двійковий ланцюжок в оперативній пам’яті або загальному регістрі, index – вибирає конкретний біт у ланцюжку. Припустимі форми

btX reg/mem16, reg16, btX reg/mem16, imm8,

btX reg/mem32, reg32, btX reg/mem32, imm8.

Отже, dst визначає слово або подвійне слово в регістрі або в комірці оперативної пам’яті, а значення index знаходиться в регістрі або задається як безпосередній операнд. Діапазон для imm8 від 0 до 15 або 31 (тобто безпосереднє значення тільки восьми бітове і береться за модулем 16 або 32 в залежності від вибраного типу сегмента use16 або use32).

Якщо ланцюжок знаходиться в регістрі, то виконання команди зводиться до вибору відповідного біта з регістра, запису його значення в прапорець cf і, якщо це команда:

bt – завершити її виконання;

btc – знайдений біт інвертувати та завершити її виконання;

bts – знайдений біт установити в 1 та завершити її виконання;

btr – знайдений біт установити в 0 та завершити її виконання.

Якщо ланцюжок знаходиться в оперативній пам’яті, то нумерація бітів здійснюється відносно біта з номером 0 (нуль) – наймолодший біт байта з ефективною адресою EA (визначається операндом mem16 або mem32) команди btX. Старші біти мають додатні номери, а молодші – від’ємні. Номер шуканого біта (значення index в регістрі reg16 або reg32) вважається знаковим цілим числом, яке змінюється від до (use16) або від до (use32). При доступі до оперативної пам’яті процесор визначає адресу слова (use16) або подвійного слова (use32), в якому знаходиться шуканий біт з номером index. Тобто, звертається до двох байтів (use16) за адресою

EA+(2*(BitOffset DIV 16),

або до чотирьох байтів (use32) відповідно за адресою

EA+(4*(BitOffset DIV 32),

де EA (ефективна адреса ланцюжка) – визначається операндом dst (mem16 або mem32); BitOffset – значення операнда index (тобто вміст регістра reg16 або reg32); DIV – операція ділення (a DIV b – ціла частина від ділення a на b із заокругленням до . Далі, визначається номер біта у знайденому слові або подвійному слові, якщо , то відповідно так:

Якщо ж , то відповідно так:

Тут – означає операцію знаходження остачі від ділення першого операнда за модулем другого.



Поделиться:


Последнее изменение этой страницы: 2017-01-27; просмотров: 261; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.216.190.167 (0.004 с.)