Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Konspekt_lektsiy_3.docx
Скачиваний:
6
Добавлен:
01.05.2025
Размер:
133 Кб
Скачать
☆

Тема 1.2. Система команд мп.

Лекція №3. Поняття системи команд МП. Використання мови Асемблера. Класифікація команд по функціональному призна ченню. Види адресації операндів в командах.

Система команд

Група команд, які може виконувати МП, називається його системою команд. Система команд МП може містити як маленьку кількість (вісім) так і більшу кількість (200) основних команд.

Класифікація команд однієї системи може бути представлена наступним чином, рис.3.1

Основні

Додаткові

Арифметичні

додавання, віднімання, інкрементування, порівняння, заперечення

додавання з переносом, віднімання з займом, множення та ділення

Логічні

І, АБО, ВИКЛЮЧАЮЧЕ АБО, НЕ (заперечення), зсув вправо, зсув вліво

арифметичний зсув вправо, циклічний зсув вправо та вліво, циклічні зсуви вправо та вліво з переносом та тестування

Команди передачі даних

завантаження (загрузка), розміщення, переміщення, введення (ввод), виведення (вивід)

команди обміну, скидання та ініціалізації.

Команди розгалуження (команди прийняття рішень)

безумовний перехід; перехід, якщо нуль; перехід, якщо не нуль; перехід, якщо рівність; перехід, якщо нерівність; перехід, якщо додатне; перехід, якщо від’ємне.

перехід, якщо більше чи менше; перехід, якщо зсув або ні; перехід, якщо переповнення або ні.

Команди виклику підпрограми

CALL – виклик

CALL, якщо нуль; CALL, якщо не нуль; CALL, якщо додатне або не додатне

Інші команди

немає операції, помістити в стек, вийти зі стеку, очікування, зупинки, переривання активізації чи скидання, десяткової корекції.

Рис.3.1. Класифікація команд типової систеим команд

Мова асемблера

Систему команд мікропроцесора описують на мові асемблера.

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

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

Всі оператори записуються за допомогою символів коди ASCII.

Мітки відділяються від поля мнемоніки двокрапкою:

МІТКА: MOVA, В; Команда пересилки

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

JMP МІТКА; Команда переходу

МО V В, С;

… … … …

МІТКА: INR А; Помічений оператор

У полі операції записують мнемоніку команди. Мнемоніка відділяється від поля операндів як мінімум одним пропуском.

У полі операндів розміщують один або два операнди. У командах без операндів це поле вільне. Як операнди використовують імена регістрів і регістрових пар, мітки або безпосередні дані. Двійкові дані закінчуються символом В, вісімкові — Q, десяткові — D (може опускатися), шістнадцятиричні — Н; якщо в шістнадцятиричному числі перший знак — буква, то перед нею пишуть цифру 0. Приклад завантаження даних:

МІТКА: MVIA, ОЕН; шістнадцятиричних

MVIВ, 15; десяткових

MVI С, 15 Q; вісімкових

MVIL, 111В; двійкових

У операнд можна записувати один або два символи коди ASCII, які беруться в лапки. Після трансляції запису символів підставляються їх двійкові коди.

Значення операндів можна задавати виразами, які обчислюються під час трансляції:

МІТКА: MVI В, (30+40)/2

МОV 7/2+4, 04Н

У полі коментарів, яке відокремлюють від попереднього поля крапкою з комою, розміщують опис призначення оператора. У мові асемблера використовують директиви, які призначені для передачі інформації, використовуваної при трансляції.

До основних директив відносяться:

• управління трансляцією ORG, END;

• визначення даних і резервування в пам'яті області даних DB, DW, DS.

Директива ORG (с початку) використовується для установки початкової адреси програми:

МІТКА: ORG 0800Н

При трансляції асемблер привласнює своєму лічильнику адреси значення 0800Я; за цією адресою в програмі буде розташований перший байт команди або даних. Якщо на початку програми директива ORG відсутня, то лічильнику адреси привласнюється нульове значення. Якщо в директиви ORG є мітка, то їй привласнюється адреса елементу пам'яті, наступної за останнім байтом об'єктної коди попереднього оператора.

Директива END (кінець) записується в останньому рядку вихідної програми і повідомляє асемблер про її завершення:

МІТКА: END

Якщо в директиві END записана мітка, то їй привласнюється адреса байта, наступного за останнім байтом об'єктної коди попереднього оператора.

Директиву DB (визначення байтів) використовують для запису в пам'ять масиву однобайтових даних:

МІТКА: DB СПИСОК

Операнд СПИСОК може бути послідовністю байтів даних, відокремлених один від одного комами, або символів, узятих в лапки. Якщо в директиві DB використовується мітка, то їй привласнюється адреса першого байта масиву даних. Використання міток в директиві DB дозволяє організувати символічну адресацію даних:

МІТКА1: DB 15, 1, 24, 50; Запам'ятати чотири байти даних

МІТКА2: DB " Рядок "; Запам'ятати п'ять символів

У першій директиві число 15 запам'ятовується за адресою МЕТКА1, число 1 — за адресою МІТКА 1+1 і т. д..

Директиву DW (визначення слова) використовують для запису в пам'ять масиву двобайтових даних:

МІТКА: DW СПИСОК

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

DATA: DW 1100Н, 0222Н

В даному прикладі число 1100Н запам'ятовується за адресою DATA, Data+l, а число 0222Н — за адресою Data+2, Data+3. Початкова адреса може задавати директива ORG.

Директиву DS (визначення пам'яті) використовують для резервування області пам'яті для даних:

МІТКА: DS ЧИСЛО

Значення операнда ЧИСЛО визначає кількість елементів (байтів) пам'яті, що резервуються для запам'ятовування даних. Вміст цієї області не визначається. Якщо в директиві DS використовують мітку, то їй привласнюють адресу першого байта резервованої області пам'яті:

TABLE: DS 64; Резервують 64 байти даних