Dis8051 крос-дизассемблер, керівництво по використанню, msc51, programming

Текстовий файл, де задані мнемоніки для назв SFR, що знаходяться в області DATA.

[1.1. Загальний опис DIS8051]

DIS8051 відноситься до інструментарію крос-дізассеблірованія (cross-disassembly). Слівце "крос" означає, що програма запускається на комп'ютері (процесор 8080, 8086, x86 і т. П.), Але обробляє при цьому код іншого мікроконтролера. У багатьох випадках DIS8051 працює так само, як і відладчик, але з тією відмінністю, що DIS8051 генерує файл вихідного коду, який можна скомпілювати крос-асемблером (і отримати назад двійковий файл).

Примітка від перекладача: DIS8051 за замовчуванням, без якихось додаткових налаштувань генерує файл, повністю сумісний з крос-асемблером IAR [2]. Однак наявність налаштувань TAG-файлу дозволяє адаптувати висновок DIS8051 практично до будь-якого крос-асемблеру.

DIS8051 оснащений корисними функціями, такими як відображення символів ASCII, відповідних байтам коду (це дозволяє простіше розпізнати в коді текстові дані), генерація міток, створення списків перехресних посилань (cross-reference lists). Це спрощує складну задачу по реконструкції або налагодженні коду (іноді цей процес називають реверс-інжинірингом).

Окремий керуючий файл, так званий файл TAG, дозволяє користувачеві позначити (або позначити, tag) спеціальні області програми, які повинні бути дизасемблювати як оператори тексту (Text statements), оператори вставки байтів db (HEX byte statements), або повинні просто ігноруватися при дизассемблирования .

Зовнішні текстові файли мнемонічних операндів (OPERAND.BIT, OPERAND.BYT) дозволяють адаптувати DIS8051 до різних мікроконтролерів великого сімейства 8051.

[1.2. Системні вимоги ]

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

DIS8051 працює під управлінням MS-DOS 2.0 або більш пізньої версії, і використовує при цьому близько 15 кілобайт пам'яті. Додатково задіяно 390 кілобайт пам'яті для тимчасового зберігання символів і таблиць. Типові вимоги до системи - наявність близько 512 кілобайт пам'яті.

Наприклад, BIN файл 8K, який в HEX-форматі займає 23K, може бути дизасемблювати в файл розміром 173K. Незважаючи на те, що можна запустити DIS8051 прямо з флоппі-диска, все ж для прискорення роботи рекомендується використовувати жорсткий диск.

[2.0. Вихідний формат дизассемблера]

Поле коду операції OP CODE обов'язково для кожного рядка програми, яка містить інструкцію мікроконтролера. Код операції знаходиться в полі 2 рядки, і воно відокремлене від поля мітки символом табуляції.

[2.1. Типи вхідних файлів]

DIS8051 може аналізувати код файли в форматі HEX ​​або BIN.

[2.2. Швидкий старт, з чого почати (GETTING STARTED)]

Дані в форматі HEX ​​і BINARY, як вони були показані вище поставляються у вигляді прикладів в пакеті DIS8051. Ці приклади знаходяться в файлах EXAMPLE.HEX і EXAMPLE.BIN. Оригінальний текстовий лістинг ассемблирования EXAMPLE.LST надано для додаткової інформації. Ми будемо використовувати ці файли прикладів для опису команд і синтаксису командного рядка DIS8051.

Для того, щоб аналізувати код програму EXAMPLE.HEX в найпростішому форматі, просто введіть у командному рядку наступне (якщо Ви перебуваєте в середовищі Windows, то для введення команди запустіть інтерпретатор CMD і перейдіть в каталог, де знаходиться розпаковані файли пакета DIS8051):

DIS8051 EXAMPLE.HEX

Після цього в консолі з'явиться наступний текст:

Файл EXAMPLE.HEX буде аналізувати код, і буде створений файл EXAMPLE.SRC. Цей новий файл (вихідний файл) містить вихідний код програми EXAMPLE.HEX на мови асемблера 8051.

Створений файл вихідного коду (EXAMPLE.SRC) вийде наступний:

Поява нерозпізнаних посилань (Unresolved References) в дизасемблювати коді відбувається через наявність текстових (наприклад символи ASCII), табличних даних програми, або при доступі до невизначеним пристроїв введення / виводу I / O або до іншої зовнішньої пам'яті. Якщо Ви знаєте такі місця в коді, то можете використовувати спеціальний файл (так званий Tag-файл), щоб керувати процесом дизассемблирования - області даних можуть бути помічені і виключені з інтерпретації їх як коду програми (вони не будуть сприйматися як інструкції виконуваного коду).

[2.4. Опис формату файлу TAG]

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

Букви опцій в командному рядку повинні бути вказані разом з попереднім символом слеша "/", і їх можна групувати між собою (наприклад, DIS8051 EXAMPLE.HEX / LCTR).

Списки перехресних посилань (CROSS-REFERENCE LISTS)

[2.6. Екскурс в практичне використання]

DIS8051 EXAMPLE.HEX / RC

В результаті виведеться наступне повідомлення:

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

DIS8051 EXAMPLE.HEX / TCL

КРОК 5 - ми використовували опцію нижнього регістра, щоб задовольнити загальноприйнятого серед програмістів стилю написання лістингу коду. Результуючий файл EXAMPLE.SRC буде виглядати так:

[2.7. Опис дизасемблювати вихідного лістингу]

Директива асемблера ORG була вставлена ​​на підставі інформації, взятої з HEX-файлу.

[2.8. Зміна формату дизассемблирования "(ALTERING DISASSEMBLER FORMAT)]

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

[2.9. Лістинг перехресних посилань (CROSS REFERENCE LISTS)]

[2.10. Тестові файли операндів (OPERAND)]

[2.11. Правила модифікації текстових файлів]

[2.12. Повідомлення про помилки (ERROR MESSAGES)]

Error - No Input File Specified. У командному рядку пропущено вказівку імені файлу. Синтаксис командного рядка: DIS8051 [.ext] [/ options]

Error - Input File Did Not Open. Вхідний файл не знайдений. Перевірте в шляху файлу диск, шлях (імена папок) або ім'я файлу.

Error - Input File Empty. У вхідному файлі не знайдено жодних дані. Перевірте вміст файлу.

Error - Insufficient Disk Space. Диск або директорія переповнені. Вставте новий диск або видаліть файли, які не потрібні.

Load Error In HEX File. У вхідному файлі зустрілася помилка контрольної суми. Спробуйте інший HEX-файл.

Error When Loading Operand Text Files. Або неприпустима довжина файлу, або файл порожній, або файл не знайдено. Перевірте наявність файлів OPERAND.BIT і OPERAND.BYT, вони повинні знаходитися в тому ж каталозі, що виконуваний файл DIS8051.COM.

Ще одна помилка пов'язана з тим, що під таблиці перехресних посилань виділено занадто багато пам'яті (A large amount of memory has been allocated for Cross-reference tables). Якщо таке малоймовірне подія все-таки трапиться, і відбудеться переповнення, то з'явиться попередження, і окремий список посилань буде обрізаний до свого максимального розміру з 32766 посилань.

[3.1. Команди 8051 - арифметичні операції (ARITHMETIC OPERATIONS)]

Примітки до таблиць:

[3.6. Карта пам'яті SFR (SPECIAL FUNCTION REGISTER MAP)]

[3.7. Карта пам'яті бітів в регістрах (BIT ADDRESSABLE REGISTER MAP)]

[3.8. Біти регістрів SFR (SPECIAL FUNCTION REGISTER ASSIGNMENTS)]

[3.10. Вектори і пріоритети переривань (INTERRUPT VECTORS PRIORITY LEVELS)]

Зовнішнє переривання INT0

Найвищий пріоритет

Counter / Timer 0

Зовнішнє переривання INT1

Counter / Timer 1

Timer 2 і зовнішнє переривання External 2

Найнижчий пріоритет

[3.11. Карта пам'яті ОЗУ користувача (USER RAM MEMORY MAP)]

Acc. A скорочення від accumulator (застосовується в таблицях команд 8051). Це спеціальний регістр 8051, з вмістом якого проводяться всі основні операції асемблера.

CY скорочення від Carry (застосовується в таблицях команд 8051).

Дизасемблювання процес перекладу двійкового коду програми (firmware) в файл вихідного коду на мові асемблера (в нашому випадку це мікроконтролер 8051). Двійковий код зазвичай буває в форматі BIN або HEX.

1. Формат Intel HEX site: ru.wikipedia.org.
2. 130528mcs-51-tools.zip - основні утиліти для роботи з кодом MCS-51 (дизассемблер DIS8051, асемблер MCS-51 IAR ver. 4.05, утиліти bin2hex і hex2bin, документація), пароль на архів mcs51tools.