Програмування в машинних кодах і на мові асемблера - директиви асемблера - коментарі

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

звані ДИРЕКТИВИ Асемблер і зараз, напевно, найзручніший час для того, щоб дати уявлення про те, що це таке.

Ми розглянемо такі директиви: ORG, EQU, DEFB, DEFW, DEFM і END, але перш ніж почати їх розгляд, треба твердо для себе зрозуміти:

1. Директиви асемблера не є командами процесора Z8 0 і в цьому сенсі відносини до машинного коду Z8 0 не мають.

2. асемблер - це програма, яка переводить (транслює) текст, написаний Вами у вигляді мнемонік в об'єктний код, який є машинним. І ці директиви асемблера - це деякі команди ассемблірующей програмі. Вони не транслюються і в об'єктний код не увійдуть, але спростять Вам написання, і найголовніше - читання програми, записаної в мнемоніку.

3. Програм-асемблер існує безліч і кожна з них може мати свої власні директиви. Вони можуть мати і однакові директиви, але пред'являти різні вимоги до їх вживання. Одним словом, конкретно способи використання директив асемблера Вам треба встановлювати по інструкції до ассемблірующей програмі, якій Ви користуєтеся (напр. EDITAS, GENS 3, GENS 4, ZEUS і т.п.). І хоча стандартів не існує, проте деякі засадничі поняття все ж виділити можна, ось на них-то ми і зупинимося.

10 60001 LD E, A 2 0

Як бачите, рядок може

; Завантажили в регістр E содер-; жімое акумулятора. ; Зменшили його на одиницю.

10 60001 BEGIN LD B, 0 4

20 60003 AGAIN INC HL

30 60004 DEC DE

40 60005 DJNZ, AGAIN

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

Отже, в осередках 60016 і 60017 містяться деякі дані, які згодом можуть використовуватися програмою. Ці дані Ви можете заслати в осередку самі перед компіляцією. І зовсім не треба для цього залучати машинний код. Початкові значення в осередках пам'яті Ви можете виставити за допомогою директив DEFB, DEFW і DEFM.

DEFB - DEFINE BYTE - задати байт.

Отже, DEFB задає один одиночний байт (0. 255). DEFW -два поспіль байта (0. 65535), а DEFM - групу поспіль байтів - текстове повідомлення, числова таблиця і т. П.

80 60016 DEFW 5C92H

Код букви "S" Код букви "p" "e" "c" "t" "r"

53H 7 0H 65H 63H 7 4H 72H 75H 6DH

DEFB DEFB DEFB DEFB DEFB DEFB DEFB DEFB

можете його задати парами байтів.

Але простіше і правильніше поставити його як повідомлення:

60135 DEFM 5370656374; "Spect"

60140 DEFM 72756D; "Rum"

Є особливий випадок при програмуванні на асемблері, коли текст програми теж доводиться вводити через DEFB або DEFM. Це випадок, коли Ви пишете програму для вбудованого калькулятора. Адже ассемблірующая програма може перевести в машинний код мнемоніки асемблера, але вона нічого не знає про коди калькулятора і не знає його мнемонік. Код калькулятора це внутрішнє "Сінклеровское" справу, його інтерпретацією

займаються програми, розміщені в ПЗУ і до процесора і до його командам код калькулятора не має ніякого відношення. Тому ввести команди калькулятору в ассемблірующую програму Вам вдасться тільки як послідовність незалежних байтів, т. Е. Через DEFB або DEFM.

Ми з Вами в першій частині книги вживали мнемонічні позначення команд калькулятора, типу add, stk_data s_lt і т. П. І писали їх з маленької літери на відміну від команд процесора. Але робили це раніше і будемо робити надалі тільки заради розуміння і зручності запису. Програма-асемблер таких мнемонік не знає, їх немає в її словнику.

Отже, за допомогою DEFB, DEFW і DEFM задають початкові значення програмним змінним, вводять в програму таблиці, повідомлення та будь-які інші послідовності даних, навіть

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

3.5. Директиви ORG, END.

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

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

Перші кроки в машинних кодах - Самий - найперший крок.

Перші кроки в машинних кодах - Навіщо вивчати програмування в машинних кодах.

Перші кроки в машинних кодах - Архітектура процесора Z-80.

Форми представлення чисел в процесорі Z-80 - Числові системи. Двійкова додаткова форма запису. Десяткова арифметика в довічним вираженні.

Арифметичні і логічні команди - Команди складання. Команди віднімання. Команди порівняння. Команди логіки.

Операції розгалуження - Команди переходу. Операції в циклі. Команди роботи зі стеком. Виклик підпрограм.

Команди звернення до ПЗУ - Точки запуску в ПЗУ. Опис вбудованої калькулятора.

Команди для роботи з бітами - команди зсуву, ротації і перевірки бітів.

Оперативна пам'ять - Команди обробки блоків пам'яті.

Введення-виведення - Команди для роботи з зовнішніми пристроями.

Переривання - опис системи переривань процесора Z80.

Інші команди - опис специфічних команд процесора Z80.

Висновок - закінчення першої частини книги і примітки до неї.

Частина II - "Практикум з програмування в машинних кодах". Вступ.

Особливості процесора Z80 - кілька сторінок короткого повторення матеріалу 1-ої частини, розгляд основних особливостей процесора.

Розширення системи команд процесора - арифметичні конструкції.

Розширення системи команд процесора - логічні конструкції.

Розширення системи команд процесора - конструкції передачі даних.

Розширення системи команд процесора - конструкції розгалуження.

Розширення системи команд процесора - конструкції виклику підпрограм і повернення. Інші конструкції.

Розбір програм в машинних кодах - висновок на бордюр кольорових смуг.

Розбір програм в машинних кодах - висновок даних на екран з машинного коду.

Розбір програм в машинних кодах - управління програмою від Кемпстон-джойстика.

Розбір програм в машинних кодах - управління програмою від клавіатури.

Розбір програм в машинних кодах - перевірка оперативної пам'яті комп'ютера.

Розбір програм в машинних кодах - практичні прийоми роботи з калькулятором.

Розбір програм в машинних кодах - приклади використання переривань 2-го роду.

Канали і потоки - стандартні канали. Інші канали. Область інформації про каналах. Підключення потоків. Практичні прийоми роботи з каналами і потоками.

Додаток 2 - огляд типових помилок, що виникають при програмуванні в машинних кодах.

Частина III - довідник з програмування в машинних кодах. Вступ.

Система команд - зведена таблиця значень кодів від 0 до 255 для Бейсік і Ассемблера.

Система команд - таблиця значень кодів для Ассемблера.

Таблиця 3 - система команд вбудованого калькулятора.

Словник мнемонік асемблера - все мнемоніки машинного коду процесора Z-80 в алфавітному порядку.

Таблиця 5 - таблиця покажчиків переривань з ПЗУ.

Русифікація - русифікація з використанням символів UDG.

Русифікація - русифікація заміною генератора. Русифікація "під принтер" і "під друкарську машинку".

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

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