Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторна 3 електроніка.DOC
Скачиваний:
2
Добавлен:
05.11.2018
Размер:
158.72 Кб
Скачать

Система команд мікропроцесора кр 580 ик 80.

Дані в МП представляють в виді 8-розрядних (1 байт) кодів, які можуть мати стан 1 або 0. Для ідентифікації окремих розрядів в байті вони нумеруються від D0 до D7 і рахуються зправа наліво. Біт D0 відповідає молодшому розряду, D7 – старшому розряду. Для цілих чисел можна використовувати і двохбайтне і багатобайтне представлення.

Формати команд завжди можуть бути 1, 2 і 3-байтні (див. рис. 1).

D7

D0

- (код операції дані)

(а)

D7

D0

В1 (код операції)

D7

D0

В2 ( операції даних або номер пристрою вводу виводу)

(б)

D7

D0

В1 (код операції)

D7

D0

В2 ( молодший байт адреси, або молодший байт операнду)

D7

D0

В3 (старший байт адреси, або старший байт операнду)

(в)

Рис. 1. Формати команд

а) однобайтних; б) двобайтних; в) трьохбайтних.

S

Z

0

C1

0

P

1

C

F:

Рис. 2. Формати слова-стану програми.

У стековій пам’яті можна зберігати двобайтні слова переписані з пар ВС, DE, HL чи регістру PSW слова стану МП.

В першому байті команди завжди записується код операції.

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

Старший байт В1 слова-стану представляє вміст акумулятора, а молодший містить прапорці регістру ознак, які визначаються результатом виконання арифметичних і логічних операцій. Встановлення прапорців регістру проводиться при виконанні наступних умов: прапорець знаку S, якщо знаковий біт результату операції рівний 1- число від’ємне, інакше зкидається; прапорець нуля Z, якщо результат операції дорівнює “0”, то Z=1, інакше зкидається; прапорець допоміжного переносу АС при наявності переносу з третього розряду акумулятора в четвертий АС=1, інакше зкидається; прапорець парності Р, якщо результат містить парне число одиниць в акумуляторі, то Р=1, інакше зкидається; прапорець переносу CY при наявності переносу (при додаванні) або позичці (при відніманні) з старшого розряду результату CY=1, інакше зкидається.

В МП використовуються 5 способів адресації даних:

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

регістрова адресація – в команді задається адреса оперативного регістру, або пари регістрів, де знаходяться відповідно 8 або 16-бітовий операнд;

регістрова “неявна” – адреса М комірки пам’яті, де розміщений операнд, визначається вмістом першого регістру, явно або неявно вказаного в команді; при цьому старший байт адреси знаходиться в першому регістрі пари, а молодший в другому;

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

стекова адресація – адрес комірки пам’яті, яка містить операнд, що знаходиться в вказівнику стеку.

По функціональних ознаках команди МП діляться на 5 груп:

  1. команди передачі даних з регістру в регістр або пам’ять і з пам’яті в регістр;

  2. арифметичні команди: додавання, віднімання, інкременту, декременту;

  3. логічні команди І, АБО, виключне АБО, порівняння, зсув, інвертування;

  4. команди керування програмою і стекові (команди переходів)

  5. команди керування станом процесора і вводу/виводу.

Система команд включає 111 операції [1].

Розглянемо окремо по групах команди МП.

Команди передачі (пересилання) даних забезпечують двохсторонній обмін інформацією між зовнішньою пам’яттю і блоком регістрів загального призначення (РЗП), або між різними регістрами цього блоку. Група команд містить такі команди:

  • пересилки байту даних MOV між регістрами В, С, Д, Е, Н, L без зміни вмісту регістра-джерела, або між цими регістрами і пам’яттю;

  • безпосереднього завантаження РЗП, або комірок пам’яті MVI;

  • прямого завантаження акумулятора – LDA, або по адресі в парі регістрів ВС, ДЕLDAX;

  • прямого запам’ятовування вмісту акумулятора - STA, або по адресі в парі регістрів ВС, ДЕSTAX;

  • команди загрузки регістрів - LHLD, безпосередньої загрузки регістрових пар - LXI, загрузки вказівника стеку - SPHL, обміну між регістрами - XCHG, XSTHL.

Команди арифметичних операцій дозволяють виконувати операції додавання і віднімання 8-бітових операндів. В цій групі команд адресується тільки один операнд, другий операнд знаходиться в акумуляторі, при цьому результат додавання загружають в акумулятор, а ознаки встановлюються в регістрі ознак. Операції множення і ділення, а також операції з другими форматами даних реалізуються підпрограмами. Група арифметичних команд містить такі команди:

  • додавання вмісту акумулятора з вмістом РЗП – АDD або комірки пам’яті М – ADDM, або з другим байтом команди ADI;

  • додавання з переносом – ADC;

  • віднімання з вмісту акумулятора байту даних - SUB, SUI;

  • віднімання з позичкою SBB, SBІ, що дозволяє реалізувати віднімання багатобайтових чисел;

  • додавання двохбайтових слів – DAD; при цьому сумується вміст регістру HL з вмістом регістрових пар ВС, DE, а результат заноситься в регістр НL і встановлюється біт переносу;

  • інкременту (збільшення)/декременту (зменшення) на одиницю вмісту РЗП – INR/DCR; або регістрової пари ВС, ДЕ, HL, ВСINX/DCX;

  • команду десяткової корекції акумулятора – DAA.

Команди логічних операцій виконують операції нульової алгебри. При цьому вкзані команди адресують тільки один операнд, другий операнд знаходиться в акумуляторі, туди ж загружають результат операції. По результату операції модифікуються стани всіх признаків регістру, крім признаку переносу С, який завжди зкидується в “0”. Група логічних команд містить такі команди:

  • операції кон’юкції (логічного множення І) над вмістом акумулятора і вмістом одного з РЗП – ANA, або другим байтом команди - ANI; ці команди можна використати для перевірки біта-слова в акумуляторі з допомогою другого слова-маски;

  • операції диз’юнції (логічного додавання АБО) над вмістом акумулятора і вмістом одного з РЗП – ORA, або другим байтом команди – ORI. Ці команди використовують для встановлення визначених бітів слів в акумуляторі з допомогою другого слова-маски, а також для синтезу нового слова з поля других слів;

  • операція виключне АБО (заперечення рівнозначності, сума по модулю 2) над вмістом акумулятора і вмістом одного з РЗП – XRA, або другим байтом команди – XRI. Ці команди використовують для інвертування визначених слів-бітів з допомогою слова-маски, а також для порівняння слів на абсолютну рівність;

  • операція інвертування вмісту акумулятора СМА, або ознаки переносу С – СМС, встановлення переносу С = 1 STC;

  • операції арифметичного порівняння вмісту акумулятора і вмісту одного з РЗП – СМР, або другого байта команди – СРІ, які з вмісту акумулятора віднімають значення адресованого операнду, але не змінюють вміст акумулятора;

  • операції циклічного зсуву вмісту акумулятора на один розряд вліво (вправо) з заповненням ознаки переносу RLC (RRC), або з включенням ознаки переносу в коло зсуву RAL (RAR).

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

До команд безумовного переходу відносяться:

  • команда переходу - JMP без повернення, по якій в лічильник команд заноситься нова адреса програми, яка міститься в другому і третьому байтах команди;

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

Команди стеку забезпечують розміщення в стековій області пам’яті вмісту РЗП при виконанні команд керування програмою і при обробці переривання. До команд стеку відносяться команди:

  • вводу в стек PUSH;

  • виводу з стеку РОР, при цьому вміст вказівника стеку збільшується на одиницю.

Команди керування МП застосовуються для задання режимів роботи МП. Вони містять:

  • команду зупинки – HLT, яка забезпечує зупинку виконання програми і переводить МП в стан зупинки;

  • команди дозволу (заборони) переривання – ЕІ (DI), яка встановлює внутрішній тригер дозволу переривань в стан І (“0”), коли МП реагує (не реагує) на запити переривань, які поступають від зовнішніх пристроїв, ініціюючих обмін даних;

  • команду повторного запуску, тобто переходу на підпрограму обслуговування переривань – RST;

  • холосту команду – NOP, яка не проводить ніяких дій, крім збільшення лічильника команд для переходу до наступної команди і використовується для створення програмних циклів затримки, в яких МП генерує сигнал програмуючої діяльності;

  • команди вводу/виводу – IN/OUT, другий байт цих команд вказує адресу регістрів вводу/виводу, а одержувати дані або бути джерелом даних може тільки акумулятор.