Програмування на мові асемблера і організація машини

2.4. формат слова


Ми вже знаємо, що в команді

Нагадаємо, що восьмерична запис не більше ніж зручний спосіб представлення стану 16-розрядного слова PDP-11. Сама права восьмерична цифра представляє три крайніх правих розряду від 0 до 2. Наступні чотири восьмеричні цифри зображують послідовно розряди з 3 по 5, з 6 по 8, з 9 по 11 і з 12 по 14. На уявлення шостий, і останній, вісімковій цифри слова PDP-11 залишився тільки один біт, тому ця цифра може бути або 0, або 1. Таким чином, 0052 (код команди INC) складається насправді з 10 бітів.

Для зручності в зображеннях формату слова ми вказуємо кордону вісімкових цифр і крапку середини слова.


Режим 6 називається індексним режимом; команда

Ми можемо розглядати це як команду INC? (R1). але так як були використані всі розряди слова, то нікуди помістити інформацію про те, що. відповідає MEM. Асемблер помістить посилання на MEM в наступне слово програми. Отже, в PDP-11

одна команда мови асемблера може займати більше одного слова.

005261 INC MEM (R1)


Використання вмісту регістра


то блок WRD повинен складатися з 2, 4, 1, 3, так як найменший елемент даних знаходиться на другому місці в списку і т.д.

1. Вибирає з пам'яті перше слово команди.

2. Збільшує PC.

4. Виконує автоматичне збільшення або зменшення вмісту регістра джерела.

6. Виконує автоматичне збільшення або зменшення вмісту регістра приймача.

2. Спробуйте поліпшити програму сортування з §2.3.

E Немає оператора .END; видається більшістю ассемблеров

M Одна і та ж мітка використовується кілька разів

U Невизначений символ
Вправа. 1. Розгляньте результат виконання команди ADD R1, - (R1) з урахуванням і без урахування зауваження до кроку 7.

2. Визначте, як ваша система сприймає подібні команди.

022701 CMP (PC) +, R1

000100 .WORD 100

Друге слово просто містить операнд O 100. У першому слові PC являє собою лічильник команд. У PDP-11 лічильник команд - один із загальних регістрів, доступних користувачеві. Фактично це регістр 7, і якщо ваш асемблер не розпізнає звичайну для такого регістра мнемоніку, що цілком можливо, то в вашу програму повинен входити оператор присвоювання

Той же результат міг бути отриманий, хоча і менш ефективно, в такий спосіб: спочатку обнулити R0. потім виконати команду

026001 CMP 100 (R0), R1

2. Чи вийде 101 після виконання команди INC # 100?

3. Який результат виконання послідовностей

(A) INC (PC) (б) INC (PC) +

000100 005067 CLR MEM

000376 000000 MEM. WORD 0

У загальному випадку X має дорівнювати

В операторах мови асемблера негативні числа представляються звичайним чином за допомогою знака -. наприклад,

Зауважте, що -2 (R1) означає число -2, модифіковане вмістом R1 (аж ніяк не вмістом зі знаком мінус). Це зручний спосіб переступання назад на одне слово від слова, на яке вказує R1. не змінюючи вмісту R1.

Негативні числа, безумовно, можуть виходити і в результаті обчислень. Подання негативного числа в слові ЕОМ PDP-11 не залежить від того, яким чином воно там виявилося. Розряд 15 слова називається знаковим розрядом і встановлюється рівним 1 для негативних чисел. Однак, як ви легко можете переконатися (яким чином?), Уявлення, скажімо, 1 сильно відрізняється від уявлення -1, а не тільки нулем або одиницею в розряді 15. В архітектурі PDP-11 для представлення негативних чисел використовується так званий додатковий код двійкового числа (або двійкове доповнення). Якщо X - позитивне число, то для утворення уявлення -X потрібно:

  1. Утворити уявлення X; так як X - позитивне число, то знаковий розряд нульовий, а розряди з 0 по 14 містять двійковий код X.

  2. Відняти 1.

  3. Замінити всі нулі одиницями, а одиниці - нулями.

З урахуванням такої угоди найбільший позитивний число, яке може зберігатися в слові PDP-11, має 0 в розряді 15 і 1 у всіх інших. Його вісімкове подання є 077777, а десяткове значення 2 15 -1 = 32 767.

Зауважте, що -1 представляється одиницями у всіх розрядах: 177777, -2 є 177776 і т.д. Ми маємо наступний спектр значень:

Зверніть увагу, що при правильному використанні ми описуємо -2 як число, менше -1, і т.д.

Аналогія з рухомим в зворотному напрямку автомобільним спідометром може трохи прояснити сенс цієї таблиці значень. У всякому разі, велика обізнаність незабаром зробить її менш загадковою.
Вправа. 1. Як уявити негативне число O 100000 у вигляді слова PDP 11?

2. Опишіть систематизований метод отримання вісімкового коду уявлення негативного числа, виходячи з позитивного числа X.

3. Який результат виконання команд

У чому, на вашу думку, тут заковика?

4. Якщо в R0 знаходиться 7777, то який результат виконання команди INCR0.

Програмування на мові асемблера і організація машини

Схожі статті