Банк лекцій 1

Префікс команди. Це або префікс rep, або префікс lock. який може ставити перед командою програміст.

Префікс розміру операнда. Разом з бітом D в дескрипторі, завантаженому в тіньову частину cs. визначає розмірність використовуваних в команді операндів. Якщо цей префікс є і D = 0 або якщо цього префікса немає і D = 1. то команда працює з 32-розрядними операндами. У двох противних випадках команда працює з 16-розрядними операндами. Префікс розміру операнда має значення 66h.

Префікс заміни сегмента. Безпосередньо задає сегментний регістр, що бере участь у формуванні Аф. Наприклад, movcs: [200h], al.

Відзначимо, що порядок проходження префіксів значення не має, тобто наприклад, префікс заміни сегмента може стояти перед префіксом команди.

Код операції (КОП). Найчастіше це поле має розмір один байт і формат, наведений на рис. 3.44.

Біт W визначає розмірність операндів. При W = 0 # 8209; 8-розрядний, при W = 1 # 8209; 16- або 32-розрядний.

Постбайт має формат, наведений на рис. 3.45.

Поля reg і r / m задають два операнда в двохоперандних командах. При цьому поле reg задає операнд в регістрі, а поле r / m # 8209; в регістрі або в пам'яті. У однооперандних командах або в двохоперандних, де один операнд заданий безпосередньо (в поле data), поле reg виявляється не потрібним і використовується для розширення коду операції. Якщо поле reg використовується для завдання операнда, то воно трактується відповідно до табл. 3.16.

Аналогічно трактується поле r / m при md = 11. При інших значеннях md разом з r / m задає алгоритм формування Аеф. При цьому для 16- і для 32-розрядної Аеф ці алгоритми різні. Для 16-ти розрядного Аеф алгоритм його обчислення визначається відповідно до табл. 3.17.