Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Формат бланка асемблерної програми




Асемблерна програма записується у вигляді послідовності команд, які називають також операторами і реченнями асемблера; для кожної команди відводиться одна стрічка.

Стандартний блок асемблерної програми містить такі поля:

Мітка Код Операнд Коментар

Іноді поле ‘операнд’ поділяють на два поля (операнд1 і операнд2). Найчастіше використовують формат з фіксованими полями, кожне з яких має певне число символів в цьому полі.

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

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

AGAN:, A15:, C5FA:, M1:.

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

Допускається вводити для одного і того ж оператора декілька міток:

 

Мітка Код Операнд Коментар
LOOP1:      
LOOP2: RAL    
  ***    
  JMP LOOP1  
  ***    
  JNZ LOOP2  
  ***    

 

Команди JMP i JNZ передають керування (перша-безумовно, друга - при Z=0) одній і тій же комірці пам’яті з командою RAL. Міткам LOOP1 і LOOP2 асемблер присвоює однакове числове значення.

При програмуванні, як правило, вводять мітки для тих команд, яким необхідно передати керування.

Поле мнемоніки (коду). В полі мнемоніки записують символьне позначення виконуваної команди (код операції). Більшість мнемонік представляють собою абревіатури речень, що характеризують основні функції команди, наприклад:

MOV (MOVe)-передати, переслати;

ACI (Add with Carry Immediate)-додавання з переносом безпосереднє;

JNZ (Jump if Non Zero)-перейти, якщо не нуль;

XCHG (Exchange)-обміняти.

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

Поле операнда. В цьому полі розміщуються дані, які є операндами (операндом) команди. Таким чином, вміст поля операнда може інтерпретуватися у відповідності з функцією команд. Операндами можуть бути адреси пам’яті, внутрішні регістри МП, адреси портів вводу і виводу, числові символьні константи. Деякі команди, що оперують повними внутрішніми регістрами, мають пусте поле операнда:

Мітка Код Операнд Коментар
  СМА   ; інвертувати акумулятор
  RAL   ;;; з сув вправо через перенос
  XTHL   ; обмін (H, L) і SP

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

Поле операнда стандартного асемблера МП 8080 може містити інформацію таких типів: числові і символьні безпосередні дані, внутрішні регістри і регістрові пари, адреси пам’яті. Розглянемо способи визначення інформації вказаних типів.

Шістнадцяткові дані. Шістнадцяткове число в полі операнда має починатись з цифр 0-9 і завершуватись буквою Н (Нех). Число, яке починається з букв А-F, доповнюється зліва нулем. Приклади завдання шістнадцяткових чисел:

Мітка Код Операнд Коментар
STORE: STA 8000Н ; Запам’ятати в комірці 8000
  MVI С,ОААН ; Запам’ятати в регістр
  ANI   ; С код 10101010
COMP: CPI 10Н 290Н ; Виділення четвертого біта ; Недопустимий операнд

Десяткові дані. Десяткове число в полі операнду закінчується необов’язково буквою D (Decimal). Приклади завдання десяткових чисел:

Мітка Код Операнд Коментар
  MVI B,15 ; Завантажити в регістр В ; код 00001111
  ADI 1 D ; інкремент акумулятора
  ANI   ; виділення шостого біту
  IN   ; ввід із порту з адресою; 00100000

Вісімкові дані. Кожне вісімкове число в полі операнда закінчується буквою О (Octal). Частіше вісімкову систему ідентифікують буквою Q, щоб відрізнити букву О від цифри 0. Приклади вісімкових чисел:

Мітка Код Операнд Коментар
  ORI 200Q ; Установка старшого біта
  SUI 1Q ; Декремент акумулятора
  MVI H,777Q ; Хибний операнд

Двійкові дані. Двійкове число в полі операнда закінчується буквою В(Binary). Приклади визначення двійкових чисел:

Мітка Код Операнд Коментар
  OUT 1111B ; Вивід в порт з адресою 15
  XRI 10000000B ; Інверсія знакового біта
  ANI 11011111B ; Обнулення п’ятого біта

Символьні константи. В полі операнда допускається використання зовнішнього алфавіту, взятого в апострофи.

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

Мітка Код Операнд Коментар
  CPI ‘.’ ; Порівняти з кодом крапки
  MVI D,’T’ ; Завантажити код букви Т

 

Ідентифікатори внутрішніх регістрів. В полі операнда потрібно вказувати символьне ім’я, яке визначене в асемблері і зв’язане з внутрішньою архітектурою мікропроцесора. В мову асемблера МП 8080 включені ідентифікатори внутрішніх регістрів В,С,D,E,H,L,M,A з відповідними їм двійковими кодами від 000 до 111.

 

Приклади використання таких ідентифікаторів:

 

 

Мітка Код Операнд Коментар
  MOV A,E ; Передати з регістра Е в А
  ADD L ; Добавити вміст регістра L
  SUB M ; Відняти вміст комірки ; пам’яті, адресованої парою; HL

Замість ідентифікаторів внутрішніх регістрів допускається використання їх адреси в будь-якій системі числення. Наприклад, наступні команди еквівалентні: MOV A,B; MOV 7,0; MOV 111B,0H, тощо.

В командах, які оперують 16-бітовими значеннями, використовуються ідентифікатори внутрішніх 16-бітових регістрів В,D,H,PSW,SP. Приклади таких команд:

Мітка Код Операнд Коментар
  LXI H,0FF00H ; Ініціалізація пари HL
  INX SP ; Інкремент покажчика стека
  PUSH PSW ; Завантаження в стек вмісту; А- і F-регістрів

 

Для однокристальних мікроЕОМ (наприклад МК8051) є певні особливості.Операнд може задаватись безпосередньо або через його адресу (прямо чи опосередковано). Безпосередній операнд задається числом (MOV A, #15) або символьним іменем (ADDC A, #OPER2) з обов’язковим префіксом безпосереднього операнда (#). Пряма адреса операнда може бути задана мнемонічним позначенням (IN A, P1), числом (INC 40), символьним іменем (MOV A, MEMORY). Покажчиком опосередкованої адресації служить префікс @. В командах передачі керування операндом може бути число (LCALL 0135H), (JMP@A+DPTR) (JMP LABEL), (JMP ¤ -2, де ¤ -поточний вміст лічильника команд).

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

 

Мітка Код Операнд Коментар
  JMP DONE ; Перехід до мітки DONE
  ***    
  CALL SWAP ; Виклик підпрограми SWAP
  ***    
SWAP: RAR    
  ***    
  ***    
  MOV A,M  

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

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

¤ і вказаного в операторі зміщення. Зміщення може задаватися в будь-якій із розглянутих форм визначення числових значень. Приклади відносної адресації:

 

Мітка Код Операнд Коментар
  JMP ¤+20H ; Перехід за адресою;GOTO+20H (‘вперед’)
  JNZ ¤-80 ; Адреса переходу= МORE-80; (‘назад’)

 

Вирази. Складнішими конструкціями є вирази. Вони містять, як елементи, всі розглянуті вище типи даних, які зв’язуються арифметичними і логічними операторами. Аргументами виразів служать 15-бітові цілі, а значення виразів визначаються 16-бітовими цілими без знаку. Значення виразу має відповідати змісту операції, що визначена в полі мнемоніки.

Результатами арифметичних операторів додавання (+), віднімання (-), множення (*), ділення (/) вважаються, відповідно, арифметична сума, різниця, добуток і частка аргументів. Результатом операції MOD є ціла частка від ділення першого (лівого) аргумента на другий. Унарний оператор ‘мінус’ означає віднімання аргумента від нуля.

Допустимими логічними операторами є такі:

-унарний оператор NOT, який інвертує кожний біт аргумента;

-оператори AND, OR, XOR, які виконують відповідно, побітну кон’юнкцію, диз’юнкцію і додавання по mod2 аргументів;

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

Приклади допустимих виразів в полі операнда:

 

Мітка Код Операнд Коментар
  MVI B,30+40H/2 ; Завантаження числа 62
  SUI 34 MOD 3 ; Декремент акумулятора

 

Оператори MOD,NOT та інші треба розмежовувати від аргумента пробілом. У виразах іноді допускається використання дужок.

Оператори у виразах підпорядковуються ієрархії: множення, ділення, MOD, зсуви, додавання, віднімання; заперечення, кон’юнкція, диз’юнкція, додавання по mod2.

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

 

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

 

9.2 Директиви асемблера

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

Директиви підпорядковані стандартному формату операторів асемблера, але вміст їх полів дещо інший, наприклад, в полі мітки директив MACRO, EQU i SET має обов’язково знаходитись символьна змінна, яка не завершується двокрапкою. В інших директивах в полі мітки може бути необов’язкова мітка, аналогічна міткам машинних команд. Мітка директиви відноситься до комірки пам’яті, яка іде зразу ж за останньою коміркою попередньої машинної команди. Операнди директив необов’язкові.

 

 

Директива ORG. Директива ORG (початок) має такий формат:

Мітка Код Операнд Коментар
[мітка: ] ORG <вираз> ;формат директиви ORG

Елемент формату в квадратних дужках є не обов’язковим. Значенням виразу директиви ORG є допустима 16-бітова адреса, яка визначає комірку пам’яті, в яку буде завантажуватись перший байт наступної команди або байт даних. До нової директиви ORG команди і дані розміщуються в суміжних комірках пам’яті. Якщо на початку програми відсутня директива ORG, то розуміють наявність директиви ORG з нульовим операндом.

При необхідності в програмі може бути декілька директив ORG:

Мітка Код Операнд Коментар
  ORG 100H ; Задати абсолютну ; адресу 0100Н
  LXI H, AREA1 ; Адреса=100Н
  LXI D, AREA2 ; Адреса=103Н
  MOV A,M ; Адреса=106Н
NEW: ORG 200H ; Задати абсолютну ; адресу 0200Н
  RAL   ; Адреса=0200Н
  ANA D ; Адреса=0201Н

Підкреслимо, що мітка NEW відноситься до комірки з адресою 0107, яка слідкує за коміркою з командою MOV A,M. Комірки 0107-01FF включені в об’єктну програму, але їх вміст не визначений.

Директива ORG може виконувати функції резервування пам’яті, наприклад, в такому фрагменті вона резервує 20 байтів:

 

Мітка Код Операнд Коментар
  MOV A,M  
  RAL    
  JMP LOWER  
  ORG ¤+20  
LOWER: ORA A  

Директива END. Формат директиви END:

Мітка Код Операнд Коментар
[мітка: ] END   ;Формат;директиви END

Ця директива інформує програму асемблер про досягнення фізичного кінця вхідної програми. В кожній програмі в останній строці може бути одна директива END.

Директива EQU. Директива EQU (прирівняти, присвоїти) прямого присвоєння має такий формат:

Мітка Код Операнд Коментар
<ім’я> EQU <вираз> ; формат директиви EQU

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

Мітка Код Операнд Коментар
MASK EQU 0F H ; Змінна MASK
  ***   ; рівна 15
  ANI MASK  
  ***    
  CPI MASK  
  ***    
  MVI A, MASK  
  ***    

В командах ANI,CPI,MVI замість MASK буде фігурувати код 00001111. Якщо з деяких причин в програмі необхідно змінити значення MASK, то необхідно модифікувати операнд однієї директиви EQU і виконати повторне асемблерування програми.

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

Директива SET. Директива SET (установити) має такий же формат і виконує такі ж дії, як і директива EQU. Одначе символьній змінній можна переприсвоїти нове значення за допомогою нової директиви SET:

Мітка Код Операнд Коментар
NAME SET   ; Значення NAME рівне 15
  ***    
  MVI B, NAME ; Завантажити 15 в регістр В
NAME SET 1F H ; Значення NAME стає 31
  ***    
  ADI NAME ; Добавити 31
  ***    
  CPI NAME ; Порівняти з 31
  ***    

 

Директива IF i ENDIF. Директива умовного асемблерування IF (якщо) і ENDIF (кінець якщо) використовується в асемблерних програмах таким чином:

Мітка Код Операнд Коментар
[мітка: ] IF <вираз > ; Директива умовного
  ***    
  Оператори   ; асемблерування
  ***    
[мітка: ] ENDIF    

В процесі асемблерування обчислюється значення виразу із поля операнда директиви IF. Якщо воно рівне нулю, оператори між директивами IF i ENDIF ігноруються і не включаються в об’єктну програму. Коли ж значення виразу відрізняється від нуля, оператори програми асемблеруються так, щоб директиви IF i ENDIF були відсутніми.

Директиви умовного асемблерування корисні в тому випадку, коли програма складається з більшого числа сегментів і при асемблеруванні необхідно деякі сегменти виключити з об’єктної програми, наприклад, із-за наявності зміни в конфігурації МП-системи. Кожний сегмент обмежений директивами IF i ENDIF i для виключення сегменту значення операнда відповідної директиви IF прирівнюється до нуля, наприклад при допомозі директиви EQU.

Директива DB. Директива DB (визначити байт) відноситься до групи директив означення, яка використовується для ініціалізації даних і резервування пам’яті. Формат директиви DB має наступний вигляд:

Мітка Код Операнд Коментар
[мітка: ] DB <список> ; Формат директиви DB

 

Операнд директиви DB може бути послідовністю виразів, розділених комами і такі, що мають 8-бітові значення, або ланцюжок символів, обмежених апострофами. При виконанні директиви DB значення виразів або коди символів запам’ятовуються в суміжних комірках пам’яті (байтах), які починаються за комірками попередньої команди. Приклади використання директиви DB:

Мітка Код Операнд Коментар
M1: DB 3,7,15,31 ; Запам’ятовуються
  ***   ; чотири значення
  DB ‘HELLO’ ; Запам’ятовуються
  ***   ; п’ять символів
OMPL: DB -63 ; Додатковий код -; 63

 

Директива DW. Директива DW (визначити слово - два байти) також відноситься до директив означення і має такий же формат, як і директива DB. Одначе тут списком є послідовність виразів, які мають 16-бітові значення. При виконанні директиви DW обчислюється значення першого виразу і його молодші 8 бітів запам’ятовуються за поточною адресою, а старші 8 бітів запам’ятовуються за адресою на одиницю більшу за попередню. Далі визначається значення другого виразу, процедура запам’ятовування повторюється для наступних комірок пам’яті і т.д.. Приведемо приклад використання директиви DW:

Мітка Код Операнд Коментар
ADDR: DW 0FF00H ; (ADDR)=00H
      ; (ADDR+1)=FFH
DATA: DW 100H,200H ; Ініціалізувати 4 комірки

 

Директива DS. Директива DS (означати пам’ять) має такий формат:

Мітка Код Операнд Коментар
[мітка: ] DS <вираз> ; формат директиви DS

Обчислене значення виразу з поля операнда визначає число комірок (байтів) пам’яті, які резервуються для запам’ятовування даних. Ніякі значення в цих комірках не запам’ятовуються, зокрема, не можна вважати, що ці комірки містять нулі. Адреса наступного оператора рівна сумі адреси оператора, який передує директиві DS i значення виразу директиви DS. Приклади використання директиви DS:

Мітка Код Операнд Коментар
ARRAY: DS   ; Резервується 32 комірки
TABLE: DS   ; Резервується 64 комірки

Асемблер МК51 дозволяє означити символьні імена, як адреси внутрішніх (псевдокоманда DATA), зовнішніх даних (XDATA) або адреси бітів (псевдокоманда ВІТ).

Приклади застосування даних псевдокоманд:

FLAG BIT 25H.3 ;Присвоїти символьне ім’я FLAG 3;біту комірки ОЗП з адресою 25Н
X BIT P1.0 ;і Х-0 біту порту Р1
CODE_EX DATA 20H ;Присвоїти символьне ім’я
  ;адресі 20Н комірки РДП

Для покращення зовнішнього виду і зручності документування в асемблері можуть використовуватись наступні директиви:

SPC (пропуск стрічки), яка означає, що при друці лістінга необхідно пропустити одну строку;

PAGE (сторінка), яка при друці лістінга викликає перехід на наступну сторінку;

TITLE (заголовок), яка викликає перехід на наступну сторінку з друком зверху сторінки заголовку програми, введеного програмістом.

Макрокоманди

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

Розглянемо загальні засади використання макрокоманд на простих прикладах. Нехай в прикладній програмі декілька разів треба передати вміст регістра (D,E) в покажчик стеку SP. Однією командою це здійснити неможливо, оскільки в системі команд МП така команда відсутня. Необхідна передача реалізується ланцюжком команд XCHG,SPHL,XCHG. Визначимо приведену послідовність команд як макрокоманду з мнемонікою SPDE:

Мітка Код Операнд Коментар
SPDE MACRO   ; Макрокоманда SPDE
  XCHG   ; передає вміст (D,E)
  SPHL   ; в покажчик стеку
  XCHG    
  ENDM    
  ***    
  SPDE   ; Передати із (D,E) в SP
  ***    
  SPDE   ; Передати із (D,E) в SP
  ***    

Підкреслимо, що означена мнемоніка SPDE фігурує в полі мітки, а MACRO i ENDM є спеціальними директивами асемблера. Після означення макрокоманду SPDE можна використовувати як звичайну команду, розміщуючи її в полі мнемоніки.

Означимо далі макрокоманду SHV, яка зсуває вміст акумулятора вправо з записом у вільні біти нулів.

Число зсувів міститься в регістрі D:

Мітка Код Операнд Коментар
SHV MACRO    
LOOP: RRC   ;Макрокоманди SHV простого
  ANI 7FH ; зсуву
  DCR D ; акумулятора вправо
  JNZ LOOP ; Константа зсуву в
  ENDM   ; регістрі D

Наступний фрагмент показує використання даної макрокоманди для зсуву вправо вмісту комірки ІТЕМ на три біти:

 

Мітка Код Операнд Коментар
  LDA ITEM ; Завантаження в акумулятор
  MVI D,3 ; Задання числа зсувів
  SHV   ; Зсув на 3 біти
  STA ITEM ; Запам’ятовування в пам’яті

При виконанні даного фрагмента модифікується значення індикатора С (в команді RRC), а вміст регістра D є лічильником зсувів.

Можна розширити можливості макрокоманди SHV, якщо при означенні її не вказувати ні конкретний регістр-лічильник, ні число зсувів, а задати їх при безпосередньому зверненні до макрокоманди. Тобто мати макрокоманду з формальними параметрами. Макрокоманда SHV з двома параметрами (регістр REG, число зсувів VOL) визначається у такий спосіб:

Мітка Код Операнд Коментар
SHV MACRO REG, VOL ; Приклад означення
  MVI REG, VOL ; макрокоманди
LOOP: RRC    
  ANI 7FH ; SHV з двома
  DCR REG ; параметрами
  JNZ LOOP  
  ENDM    

Тепер при зверненні до SHV в різних місцях прикладної програми можна використовувати як лічильник будь-який вільний регістр і задавати змінне число зсувів. Наприклад, для зсуву вмісту комірки ITEM по 5 бітів з регістром-лічильником L, необхідно записати:

Мітка Код Операнд Коментар
  LDA ITEM ; Зсув вмісту
  SHV L, 5 ; комірки з адресою ITEM
  STA ITEM ; на п’ять розрядів вправо

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

 

Означення макрокоманд. Означення макрокоманди має такий формат:

Мітка Код Операнд Коментар
<ім’я> MACRO <список параметрів>  
  ***    
  Тіло макрокоманди  
  ***    
  ENDM    

В полі мітки знаходиться ім’я (символьне позначення або мнемоніка), введена програмістом. А поле операнда-список формальних параметрів, називають також аргументами. Параметри розділюються комами і в загальному випадку можуть бути виразами. Група операторів між директивами MACRO i ENDM, називається тілом макрокоманди, може містити будь-які машинні команди, директиви (крім MACRO i ENDM), коментарі і звернення до інших макрокоманд, коли допускаються вкладені макрокоманди. Параметри визначаються при кожному зверненні до макрокоманди.

Звернення до макрокоманд. Звернення до означеної раніше в програмі макрокоманди має такий вигляд:

Міта Код Операнд  
[мітка: ] <ім’я> <список параметрів>  

В полі мнемоніки міститься ім’я макрокоманди, яке фігурує в полі мітки директиви MACRO, а в полі операнд-список фактичних параметрів. Значення параметрів підставляються в тіло макрокоманди зліва направо у відповідності з полем операнда директиви MACRO. Якщо у зверненні є менше параметрів, ніж у визначенні макрокоманди, то решта параметрів вважаються пустими, а якщо більше-

лишні ігноруються.

Розширення макрокоманд. Оператори, що утворюються в результаті підстановки фактичних параметрів в тіло макрокоманд, називають розширенням макрокоманди. Розширення має містити тільки допустимі оператори мови асемблера. Означимо, наприклад, макрокоманду STACK таким чином:

Мітка Код Операнд Коментар
STACK MACRO R1  
  PUSH R1 ; Завантажити в стек
  ENDM   ; вміст регістра R1

Допустимими значеннями R1 є B,D,H,PSW, тому звернення STACK SP є помилковим.

Для запобігання конфліктам, що пов’язані з багаторазовим визначенням міток, програма-асемблер рахує мітки в макрокомандах локальними, тобто чинними в межах конкретного розширення. При необхідності створення глобальної мітки, необхідно закінчити мітку двома двокрапками замість однієї. Глобальна мітка може зустрічатись тільки один раз.

На завершення розглянемо макрокоманду IXAD індексної адресації. Вона завантажує в регістри (H,L) базову адресу BASE і добавляє до неї значення 16-бітового індекса, який зберігається в регістровій парі RP:

Мітка Код Операнд Коментар
IXAD MACRO RP,BASE  
  LHI H,BASE ; Завантаження базової адреси
  DAD RP ; Індексування
  ENDM    

Якщо базова адреса зберігається в двох суміжних комірках пам’яті з адресою BASE, то замість команди LXI необхідно використати команду LHLD BASE.

Асемблер для 16-розрядного процесора 8086 має свої особливості, які пов’язані з сегментацією пам’яті. Тому базовий асемблер доповнений низкою псевдооператорів для роботи з ними.

 

10 Загальні засади і особливості програмування та відлагодження мікропроцесорних пристроїв

 

Розробка систем пристроїв керування різноманітним промисловим обладнанням та технологічними процесами на базі сучасних мікропроцесорів і однокристальних мікро-ЕОМ представляє собою складний творчий процес, який поєднує в собі розв’язок схемотехнічних питань та проблем розробок програмних засобів. Необхідного забезпечення (ПЗ) значно перевищує трудоємкість розробки апаратурних засобів (АЗ).

Застосування засобів відлагодження та програмування суттєво прискорює процес розробки мікропроцесорних пристроїв та швидкого переналагодження їх для роботи на іншому об’єкті.

10.1 Особливості структури мікропроцесорних пристроїв

 

Типова узагальнена структура мікропроцесорної системи (МПС) містить мікропроцесор, ОЗП або пам’ять даних, ПЗП або пам’ять програм, канали або карти вводу/ виводу, схеми зв’язку і спряження з об’єктом (СЗО) і типи МПС та об’єкта (рис. 10.1.). МПС побудовано на базі однокристальної мікро-ЕОМ (ОЕОМ), передбачає в своїй структурі тільки ОЕОМ і СЗО та відповідні типи, оскільки ОЕОМ об’єднує в одному корпусі мікросхеми МП, ОЗП, ПЗП і порти вводу /виводу. Вказаний структурний склад ПМС є практично типовим і постійним для різних МПС. Функціональну індивідуальність МПС для роботи пристрою або інакше ПЗ МПС. Із апаратурних засобів для конкретного об’єкта спеціально вибирають тип МП, кількість і тип ВІС ОЗП і ПЗП, розробляються схеми вводу/виводу, зв’язку і спряження з об’єктом.

Програмні засоби поряд з апаратурними визначають функції і ефективність роботи МПС. Для незмінного складу АЗ МПС шляхом зміни тільки ПЗ можна одержати різні нові функції для даного об’єкта, тобто мікропроцесор забезпечує властивість програмованості об’єкта керування.

Апаратурні засоби МПС забезпечують можливість зберігання ПЗ, даних для обробки, обробки і виконання програми і даних, зв’язку з об’єктом, а ПЗ шляхом керування АЗ і об’єктом реалізують необхідні функціональні можливості МПС і об’єкта, логічні і часові функції.

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

 


а)

 

 

 

 

б)

 

Рисунок 10.1- Узагальнена структура МПС на базі ВІС мікропроцесорного комплекта (а) на базі ВІС однокристальної мікро-ЕОМ (б).

 

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...