Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Схемотехника / Опорні конспекти / Модуль 2 / 2.5-к Система команд МП

.pdf
Скачиваний:
23
Добавлен:
30.05.2020
Размер:
288.46 Кб
Скачать

Тема 2.5: Система команд мікропроцесора.

Мета: Ознайомитизсистемоюкомандмікропроцесоранаосновімовипрограмуванняасемблер.

Перелік питань для вивчення.

1.Програмованість мікропроцесора.

2.Мова програмування асемблер.

3.Призначення навчальних моделей комп’ютерів.

4.Інтерфейс навчального комп’ютера «ЛамПанель».

5.Арифметичні та логічні операції навчального комп’ютера «ЛамПанель».

1. Програмованість мікропроцесора.

Принциповою перевагою мікропроцесора є його програмованість. Це означає, що, подаючи на вхід процесора команди, можна забезпечити потрібну послідовність операцій, тобто реалізацію певного алгоритму. Алгоритм поставленої задачі може бути як завгодно складним, необхідно лише, щоб він був розбитий на кроки відповідно до системи команд мікропроцесора. Наявність або відсутність якої-небудь команди або групи команд може істотно вплинути на вибір процесора для конкретного застосування.

Нам відомо, що системою команд процесора називається сукупність усіх можливих команд, які він може виконати з даними.

2. Мова програмування асемблер.

Процесор працює безпосередньо з програмами на мові машинних команд, які є числовими кодами. Приклад такої програми процесора в шістнадцяткових кодах наведено на рисунку 2.5.1.

Рис. 2.5.1 Приклад програми процесора в шістнадцяткових кодах.

Складати програми в машинних кодах дуже важко, тому програмісти, як правило, створюють програми на алгоритмічних мовах високого рівня, які потім за допомогою трансляторів переводяться в машинні коди, які виконує процесор.

Але, програмуючи на мовах високого рівня, ми не розуміємо, яким чином процесор виконує двійкові коди, організує розгалуження та цикли, виділяє пам'ять змінних і викликає процедури.

А чи потрібно в цьому розбиратися, коли все й так нормально працює? Безперечно, для тих, хто хоче стати високопрофесійним фахівцем в області інформаційних технологій, необхідне глибоке розуміння процесів, які відбуваються в мікропроцесорній техніці. Практика показує, що тільки в цьому випадку вдається знаходити рішення в нестандартних ситуаціях, не описаних в документації. Програміст, який розуміє роботу процесора, може успішніше та ефективніше за ін-

ших вирішувати складні завдання.

Для програмування операцій, які виконує мікропроцесор, використовується мова програмування низького рівня асемблер.

Асемблер (англ. – транслятор) - це мова програмування, виражена за допомогою мнемокодів команд.

Щоб зменшити об'єм програми та зробити її більш зрозумілою, кожній операції процесора придумують мнемонічне позначення. Для цього використовують скорочення англійських слів, які позначають дану операцію.

Асемблером також називається спеціальна програма-транслятор, яка переводить (транслює) мнемокоди у машинні коди, які зчитуються мікропроцесором із пам'яті, дешифруються та виконуються.

Тому говорять і «мова асемблер», і «мова асемблера», тобто, мова програми-транслятора. Процес переведення програми в машинні коди називається асемблюванням.

Програма на мові асемблер містить два типи виразів:

1)команди, які транслюються в машинні коди;

2)директиви, які керують ходом трансляції.

Вираз має вигляд:

{мітка}: мнемокод {операнд 1} {,} {операнд 2} {; коментар}

У фігурних дужках наведено елементи виразу, яких може не бути в деяких командах. Мітка, мнемокод і операнди відокремлюються хоча б однією прогалиною або табуляцією. Максимальна довжина рядка становить 132 символи, проте найчастіше використовуються рядки з 80

символів, що відповідає довжині екрана.

Наведемо приклади команд асемблера:

Мітка

Мнемокод

Операнди

Коментар

 

 

MOV

АХ, 0

; Команда, два операнди

 

Ml:

ADD

АХ, ВХ

; Мітка, команда, два операнди

 

DELAY:

MOV

СХ, 1234

; Мітка, команда, два операнди

 

Наведемо приклад директиви асемблера:

 

 

 

 

 

 

Мітка

Мнемокод

Операнди

Коментар

 

COUNT:

DB

1

; Мітка, команда, один операнд

 

Мітка в мові асемблер є символічною адресою команди. Мітками позначаються не всі команди, а лише ті, до яких треба виконувати перехід за допомогою команд переходів або викликів підпрограм. У командах переходів або викликів підпрограм позначення мітки використовується як

операнд - символічна адреса переходу, наприклад:

Мітка Мнемокод

Операнди

Коментар

JMP

М1

; Перехід до команди з міткою М1

CALL

DELAY

; Виклик підпрограми з міткою DELAY

Після мітки ставиться двокрапка. Першим символом у мітці має бути літера або один із спеціальних символів: знак питання «?»; крапка «.»; знак амперсанд «&»; підкреслювання «_»; знак долара «$». Знак питання та крапка можуть займати тільки перше місце. Максимальна довжина мітки - 31 символ. Приклади міток: COUNT, PAGE25, $Е10. Рекомендується використовувати описові та смислові мітки. Всі мітки в програмі мають бути унікальними, тобто не може бути декількох команд з однаковими мітками. Як мітки не можна використовувати зарезервовані асемблером слова, до яких належать коди команд, директиви, імена регістрів. Наприклад, імена АХ, та AL є зарезервованими та використовуються тільки для зазначення відповідних регістрів.

Мнемокод ідентифікує команду асемблера. Для мнемокодів використовують скорочені або повні англійські слова, які передають значення основної функції команди: ADD - додати, SUB

(SUBtract) - відняти, XCHG (eXCHanGe) - поміняти.

Операнди відокремлюються комами. Якщо задано два операнди, то один з них є джерелом, а інший - приймачем інформації. Необхідно зазначити, що компанія Intel встановлює порядок розташування операндів як приймач ← джерело, а компанія AT&T (засновник Unix) використовує обернений порядок: джерело → приймач.

Команда може містити різну кількість операндів різних типів, наприклад:

Мітка

Мнемокод

Операнди

Коментар

 

RET

 

; Повернутися (операнди не вказані)

 

INC

CX

; Збільшити СХ (один операнд)

 

ADD

АХ, 12Н

Додати 12Н до вмісту АХ (два операнди)

 

MOV

ВХ, [SI]

Занести до регістра ВХ число з комірки

 

пам'яті з адресою DS:SI (два операнди)

 

 

 

Коментарі ігноруються в процесі трансляції. Вони використовуються для опису та кращого розуміння змісту програми. Коментар завжди починається із символу «;» і може містити будь-які символи. Коментар може займати увесь рядок або бути розташованим за командою в одному рядку, наприклад:

Мітка Мнемокод

Операнди

Коментар

 

 

; Цей рядок є коментарем

ADD

АХ, ВХ

; Команда і коментар в одному рядку

Оскільки коментарі не транслюються в машинні коди, то їх кількість не впливає на ефективність виконання програми.

Програма на мові асемблер називається початковою програмою або початковим програм-

ним модулем. Асемблювання або переведення початкової програми у машинні коди виконує про- грама-транслятор, наприклад TASM.COM. Залежно від установок, які задає користувач, програма переводить початковий модуль в один із двох програмних модулів: командний модуль (файл з розширенням .СОМ) або об'єктний модуль (файл з розширенням .OBJ).

3. Призначення навчальних моделей комп’ютерів.

Як же зрозуміти та вивчити роботу процесора? Звичайно, можна експериментувати з реальним комп'ютером, використовуючи програми-відладчики, які дозволяють ввести в пам'ять коди машинних команд і даних, а потім запустити програму на виконання, починаючи з деякої адреси. Але відладчикам завжди не вистачало наочності, тому були розроблені спеціальні програми -

навчальні моделі комп'ютерів, які мають просту (порівняно з реальними процесорами) систему команд, але при цьому дозволяють наочно показати всі етапи виконання програми.

4. Інтерфейс навчального комп’ютера «ЛамПанель».

Розглянемо навчальну модель комп'ютера - програму доктора технічних наук Костянтина Полякова зросійськогоміста Санкт-Петербург. Програма має назву «ЛамПанель» (лампова панель).

В цій програмі пристроєм виведення інформації є панель (матриця) лампочок розміром 8 на 16, причому кожною лампочкою можна керувати незалежно від інших.

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

Процесор опрацьовує дані, використовуючи надшвидкі елементи власної пам'яті - регістри.

Процесор навчального комп'ютера «Лампанель» має тільки чотири 16-бітові регістри загального призначення, які називаються R0, R1, R2 та R3 (рис. 2.5.2). В області 1 ви бачите двійкові значен-

ня цих регістрів (вони показані чорним кольором), шістнадцяткові (синій колір) і десяткові, без урахування знаку (зелений колір) та зі знаком (коричневий колір).

Нижче показано ще три службові регістри (РС, SP і PS), які недоступні програмісту та використовуються для виконання програми.

Область 2 - це пристрій виведення інформації - лампова панель, яка складається з 8 рядів, в

кожному з яких по 16 лампочок. Стан лампочок кожного ряду задається 16-бітовим числом, записаним в порт - регістр контроллера лампової панелі. Зліва від кожного ряду вказаний його номер, точніше, номер порту (нумерація починається з нуля). Одиниця в якомусь біті означає засвічену лампочку, а нуль - погашену. Старший біт керує крайньою лівою лампочкою в ряду, молодший -

крайньою правою. Праворуч від кожного ряду показано значення, яке записане в порт (у шістнад-

цятковій системі числення).

Область 3 - це текстовий редактор, в якому набирається програма для процесора на мові асемблер. Кожна команда цієї мови відповідає одній машинній команді, але вона спочатку запису-

ється у відладчик (область 4) в символьному вигляді, а не як числовий код.

Наприклад, команда “Скопіювати дані з регістра R2 в регістр R3”, яка має шістнадцятко-

вий код 012316, може бути записана у вигляді

MOV R2, R3

деMOV - ценазвакоманди“Скопіюватидані” (скороченнявіданглійськогоmove - перемістити).

Рис. 2.5.2 Інтерфейс навчального комп’ютера «ЛамПанель».

Очевидно, що символьний запис команди значно зрозуміліший, ніж число 012316.

Команда MOV може не тільки виконувати копіювання даних із регістра в регістр, але й надавати нове значення регістру. Наприклад, команда

MOV 12, R0

запише число 1216 в регістр R0 (всі числа в програмі записуються в шістнадцятковій системі числення).

Ця команда кодується у відладчику у вигляді двох 16-бітових кодів, які записуються в пам'ять послідовно: спочатку код команди 01D016, а потім - число, яке пересилається в регістр:

01D016 MOV 12, R0 ; R0 := 12

001216

Крапка з комою означає початок коментаря: асемблер ігнорує (не опрацьовує) всі символи в рядку, розташовані після крапки з комою.

Натиснувши на клавішу F1, можна подивитися опис всіх команд мови асемблера.

Щоб програма зупинилася, процесор повинен виконати команду STOP. Таким чином, найпростіша програма складається з однієї команди STOP.

Кожна команда програми записується в окремому рядку. Тому повна програма, яка копіює вміст регістра R2 в регістр R3, матиме такий вигляд:

MOV R2, R3 STOP

При одночасному натисканні клавіш Ctrl та F9 відбувається трансляція програми на мові

асемблер в машинні коди.

Результат роботи асемблера - програма в машинних кодах - записується в оперативну пам'ять (область 5), розмір якої в програмі «Лампанель» складає 256 байт.

При натисненні на клавішу F9 програма починає виконуватися, швидкість її виконання регулюється повзунком в правій частині вікна програми (область 6).

Клавіша F8 дозволяє виконувати програму крок за кроком - після виконання чергової команди процесор зупиняється та чекає наступного натиснення на клавішу F8 (або на клавішу F9, щоб далі виконати програму без зупинки). Під час паузи можна подивитися, які дані знаходяться в регістрах і в пам'яті; цей режим служить для відладки програм.

5. Арифметичні та логічні операції навчального комп’ютера «ЛамПанель».

Для того, щоб додати два числа, застосовують команду ADD (від англ. add - додати).

Наприклад, команда

ADD 15, R0 ; R0 := R0 + 15

додає число 1516 до регістра R0.

Можна додати значення одного регістра до значення іншого:

ADD R2, R3 ; R3 := R3 + R2

Існують аналогічні команди, які виконують інші арифметичні дії:

SUB - віднімання (від англ. subtract - відняти); MUL - множення (від англ. multiply - помножити);

DIV - цілочисельне ділення (від англ. divide - ділити), залишок відкидається.

Команда NOT виконує інверсію всіх бітів регістра, тобто замінює всі нулі на одиниці, а одиниці - на нулі. Наприклад, команда

NOT R0

виконає інверсію регістра R0.

Для організації циклу використовують команду переходу

JNZ мітка

Якщорезультатпопередньоїопераціїнедорівнюєнулю, товідбуваєтьсяперехіднавказанумітку.

Розглянемо програму, яка обчислює суму натуральних чисел від 1 до 5 в регістрі R0:

MOV 0, R0 ; початкове значення суми

MOV 5, R1 ; кількість кроків циклу

m: ; мітка позначає початок циклу

ADD R1, R0 ; R0 := R0 + R1

SUB 1, R1 ; R1 := R1 - 1 — число кроків, що залишилося JNZ m ; перехід на мітку "m", якщо R1 не дорівнює нулю

STOP

Крім команди JNZ, існують також інші команди переходу: JMP мітка - безумовний перехід;

JGE мітка - перехід, якщо результат більше або дорівнює нулю; JL мітка - якщо результат менше нуля;

JZ мітка - якщо результат дорівнює нулю;

JLE мітка - якщо результат менше або дорівнює нулю; JG мітка - якщо результат більше нуля.

Для перевірки умов без зміни значень регістрів можна застосовувати команду порівняння CMP (compare - порівняти).

Порівнювати можна число з регістром:

CMP 12, R0 ; порівняти 1216 та R0

або регістр з регістром

CMP R2, R3 ; порівняти R2 та R3

У програмі «Лампанель» можна використовувати бітові логічні операції:

“НЕ” (команда NOT);

“І” (команда AND);

“АБО” (команда OR);

“Додавання за модулем 2” (команда XOR).

Для виконання зсувів слова вліво або вправо на задане число розрядів використовуються

наступні команди:

SHL 1,R0 ; логічний зсув вліво на 1 біт

SHR 2,R0 ; логічний зсув вправо на 2 біта

SAR 1,R0 ; арифметичний зсув вправо на 1 біт ROL 2,R0 ; циклічний зсув вліво на 2 біта ROR 3,R0 ; циклічний зсув вправо на 3 біта

Звичайно, зсув може застосовуватися до будь-якого регістра загального призначення, а не тільки до R0.

Контрольні запитання.

1.Що означає поняття «Програмованість мікропроцесора»?

2.З якими програмами процесор працює безпосередньо?

3.З якими алгоритмічними мовами найчастіше працюють програмісти?

4.Чому високопрофесійному ІТ-фахівцеві необхідне глибоке розуміння процесів, які відбуваються в мікропроцесорній техніці?

5.Яка мова програмування використовується для програмування мікропроцесорних операцій?

6.Чому говорять і «мова асемблер», і «мова асемблера»?

7.Як називається процес переведення програми в машинні коди?

8.Які два типи виразів містить програма на мові асемблер?

9.Запишіть в загальному вигляді та поясніть вираз програми на мові асемблер.

10.Наведіть приклад команди асемблера.

11.Наведіть приклад директиви асемблера.

12.Яке призначення мітки в мові асемблер?

13.Яку в мові асемблер виконує мнемокод?

14.Що використовують для запису мнемокодів?

15.Яку кількість операндів може містити команда на мові асемблера?

16.Яким чином відокремлюються операнди в мові асемблер?

17.Яке призначення коментарів в мові асемблер?

18.З якого знака починається запис коментаря в мові асемблер?

19.Які символи може містити коментар?

20.Чи може коментар займати весь рядок програми на мові асемблера?

21.Чи впливає кількість коментарів на ефективність виконання програми на мові асемблера?

22.Назвіть основне призначення навчальних моделей комп’ютерів.

23.Опишіть інтерфейс навчального комп’ютера «ЛамПанель».

24.Назвіть призначення команди MOV. Наведіть приклади.

25.Назвіть призначення команди STOP.

26.Яка дія відбувається при одночасному натисканні клавіш Ctrl та F9?

27.Яка дія відбувається при натисканні клавіші F9?

28.Назвіть призначення клавіші F8?

29.Назвіть команду додавання для асемблера.

30.Назвіть команду віднімання для асемблера.

31.Назвіть команду множення для асемблера.

32.Назвіть команду цілочисельного ділення для асемблера.

33.Яку дію в асемблері виконує команда NOT?

34.Яку команду для організації циклу використовують в асемблері?

35.Яку команду для перевірки умов без зміни значень регістрів використовують в асемблері?

36.Які команди для виконання бітових логічних операцій використовують в асемблері?

37.Які команди для виконання зсувів слова вліво або вправо використовують в асемблері?

Література.

1.Келим Ю. М. Вычислительная техника: Учеб. пособие для студ. сред. проф. образования. - М.: Издательский центр «Академия», 2005. - 384 с.

2.Мікропроцесорна техніка: Підручник / Ю.І. Якименко, Т.О. Терещенко, Є.І. Сокол, В.Я. Жуйков,

Ю.С. Петергеря; За ред. Т.О. Терещенко. - 2-ге вид., переробл. та доповн.- К.: ІВЦ "Видавництво «Політехніка»"; "Кондор", 2004. - 440 с.

3.К.Ю. Поляков, д. т. н., Санкт-Петербург. Учебный компьютер “ЛамПанель”: практикум. Журнал Информатика / август 2012.