Disassembler Dis8051, manual de instrucțiuni, msc51, programare

Fișier text unde mnemonicii pentru numele SFR se află în zona DATE.

[1.1. Descriere generala DIS8051]

DIS8051 se referă la instrumentul de dezasamblare încrucișată. Cuvântul "cross" înseamnă că programul este pornit pe computer (procesor 8080, 8086, x86 etc.), dar procesează codul unui alt microcontroler. În multe cazuri, DIS8051 funcționează în același mod ca și debuggerul, dar cu deosebirea că DIS8051 generează un fișier sursă care poate fi compilat de un asamblator încrucișat (și să primească un fișier binar).







Notă din partea traducătorului: DIS8051 în mod implicit, fără setări suplimentare, generează un fișier care este pe deplin compatibil cu asamblarea încrucișată IAR [2]. Cu toate acestea, prezența setărilor pentru fișierele TAG vă permite să adaptați ieșirea DIS8051 la aproape orice asamblare încrucișată.

DIS8051 este echipat cu funcții utile, cum ar fi afișarea caracterelor ASCII corespunzătoare octeților de cod (ceea ce face mai ușor să recunoască datele de text din cod), generarea de etichete, crearea de liste de referință. Acest lucru simplifică sarcina complexă de reconstrucție sau depanare a codului (uneori acest proces se numește inversare).

Un fișier de control separat, așa-numitul dosar TAG, permite utilizatorului să marcheze (sau eticheta, tag-ul) zone specifice ale programului, care trebuie să fie dezasamblate ca operatori de tip text (declarații text), operatorii inserați octeți dB (declarații HEX octeți), sau pur și simplu ar trebui să fie ignorate atunci când dezasambla .

Fișierele text externe ale operanzilor mnemonici (OPERAND.BIT, OPERAND.BYT) vă permit să adaptați DIS8051 la diverse microcontrolere ale familiei extinse de 8051.

[1.2. Cerințe de sistem]

Notă din partea traducătorului: de fapt, nu există cerințe, astfel încât traducerea acestei secțiuni este dată doar ca un omagiu dezvoltatorilor. DIS8051 va funcționa pe orice computer cu sistem de operare DOS sau Windows sau în mediul de simulare, unde este posibilă rularea interpretului de comandă CMD. Rețineți că uneori programele foarte mari trebuie dezasamblate în bucăți (din cauza limitărilor dezmembratorului DIS8051).

DIS8051 rulează MS-DOS 2.0 sau o versiune ulterioară și utilizează aproximativ 15 kilobyte de memorie. În plus, pentru stocarea temporară a simbolurilor și a tabelelor se utilizează 390 kilobați de memorie. Cerințele tipice ale sistemului sunt de aproximativ 512 kilobiți de memorie.

De exemplu, fișierul BIN 8K, care în format HEX ocupă 23K, poate fi dezasamblat într-un fișier de dimensiune 173K. În ciuda faptului că puteți rula DIS8051 direct de pe dischetă, este recomandat să utilizați un hard disk pentru o funcționare mai rapidă.

[2.0. Formatul de ieșire al dezasamblării]

Codul de operare OP CODE este necesar pentru fiecare linie de program care conține instrucțiunea de microcontroler. Codul de operare se află în câmpul 2 al liniei și este separat de câmpul de etichetă de caracterul tab-ului.

[2.1. Tipuri de fișiere de intrare]

DIS8051 poate dezasambla fișiere în format HEX sau BIN.

[2.2. Începeți rapid, unde să începeți (ÎNCEPUT)

Datele din formatul HEX și BINARY, după cum se arată mai sus, sunt furnizate ca exemple în pachetul DIS8051. Aceste exemple sunt în fișierele EXAMPLE.HEX și EXAMPLE.BIN. Lista de text originală a ansamblului EXAMPLE.LST este furnizată pentru informații suplimentare. Vom folosi aceste exemple de fișiere pentru a descrie comenzile și sintaxa liniei de comandă DIS8051.

Pentru a dezasambla programul EXAMPLE.HEX în cel mai simplu format, pur și simplu tastați în linia de comandă următoare (dacă vă aflați într-un mediu Windows, executați CMD promptă și să navigați la directorul unde fișierele extrase DIS8051 pachet pentru intrare de comandă):







DIS8051 EXEMPLU.HEX

După aceea, în consola va apărea următorul text:

Fișierul EXAMPLE.HEX va fi dezasamblat și va fi creat fișierul EXAMPLE.SRC. Acest fișier nou (fișier de ieșire) conține codul sursă al programului EXAMPLE.HEX în limba de asamblare 8051.

Fișierul sursă creat (EXAMPLE.SRC) este după cum urmează:

Apariția unor legături neidentificate (Nerezolvat referințe bibliografice) în codul dezasamblat apare datorită prezenței de text (de exemplu, codul ASCII), datele din tabel program sau a avea acces la un nedefinită dispozitiv de intrare / ieșire I / O sau altă memorie externă. Dacă știi astfel de locuri în codul, puteți utiliza un fișier special (numit Tag-fișier), pentru a gestiona procesul de inginerie inversă - zona de date pot fi marcate și excluse de la a fi interpretat ca și codul de program (nu vor fi percepute ca instrucțiuni de cod executabil).

[2.4. Descrierea formatului de fișier TAG]

Generează numai liste de referință, nu generează codul de asamblare.

Opțiunile de pe linia de comandă trebuie să fie specificate împreună cu caracterul precedent "/" și pot fi grupate unele cu altele (de exemplu, DIS8051 EXAMPLE.HEX / LCTR).

Listele de referință (LISTA DE CROSE DE REFERINȚĂ)

[2.6. Excursul la practică]

DIS8051 EXEMPLU.HEX / RC

Rezultatul este următorul mesaj:

Sfat: dezasamblarea completă și corectă nu trebuie să includă legături nerecunoscute. Pentru a realiza acest lucru, utilizați parsarea logică a codului și aplicați fișierul TAG, care specifică zonele care trebuie dezasamblate într-un mod special.

DIS8051 EXEMPLUL.HEX / TCL

PASUL 5 - am folosit opțiunea cu litere mici pentru a satisface stilul general acceptat de scriere a codurilor între programatori. Fișierul EXAMPLE.SRC rezultat va arăta astfel:

[2.7. Descrierea listei de producție dezasamblate]

Directiva ORG a fost introdusă pe baza informațiilor preluate din fișierul HEX.

[2.8. Schimbați formatul de dezasamblare "(FORMAT DE DEMONSTRAT DE ALIMENTARE)

Deoarece asamblori diferiți furnizori de software, uneori, necesită unele diferențe în formatul de fișier de asamblare și sintaxa declarațiilor, poate fi necesar pentru a schimba liniile directoare de bază și secvența de separatoare. Fișierul TAG poate fi utilizat pentru a modifica valorile implicite pentru acest format. Tabelul de mai jos prezintă formatele de ieșire și valorile lor implicite.

[2.9. Listele de referință (CROSS LISTS OF REFERENCE)]

[2.10. Testați fișierele operand (OPERAND)]

[2.11. Reguli pentru modificarea fișierelor text]

[2.12. Mesaje de eroare (MESAJE DE EROARE)]

Eroare - Nu este specificat niciun fișier de intrare. Linia de comandă omite numele fișierului. Sintaxa liniei de comandă este: DIS8051 [.ext] [/ options]

Eroare - fișierul de intrare nu a fost deschis. Fișierul de intrare nu a fost găsit. Verificați calea fișierului pentru unitate, cale (nume de folder) sau nume de fișier.

Eroare - Golire fișier de intrare. Nu s-au găsit date în fișierul de intrare. Verificați conținutul fișierului.

Eroare - spațiu pe disc insuficient. Discul sau directorul este plin. Introduceți un disc nou sau ștergeți fișierele care nu sunt necesare.

Încărcați eroare în fișierul HEX. Fișierul de intrare a întâmpinat o eroare de sumă de control. Încercați un alt fișier HEX.

Eroare la încărcarea fișierelor text operaționale. Fie lungimea fișierului nu este validă, fie fișierul este gol sau fișierul nu a fost găsit. Verificați fișierele OPERAND.BIT și OPERAND.BYT, acestea trebuie să fie în același director ca și fișierul executabil DIS8051.COM.

O altă eroare este cauzată de faptul că un tabele de alocat prea multă memorie (o cantitate mare de memorie a fost alocată pentru tabele de referință). Dacă acest eveniment puțin probabil încă se întâmplă, și un preaplin, este afișat mesajul de avertizare, precum și o listă separată de referințe vor fi tăiate la dimensiunea maximă de 32,766 link-uri.

[3.1. Comenzi 8051 - operații aritmetice (OPERAȚII ARIMMETICE)

Note de tabel:

[3.6. Cardul de memorie SFR (MAPUL REGISTRULUI DE FUNCȚIONARE SPECIALĂ)]

[3.7. BAP HART REGISTRU ADRESAT

[3.8. Fragmente de înregistrări SFR (NUMĂRUL REGISTRULUI DE FUNCȚIONARE SPECIALĂ)]

[3.10. VECTORI și priorități de întrerupere (VECTORI INTERRUPȚI NIVELURI DE PRIORITATE]]

Întrerupere externă INT0

Prioritate maximă

Counter / Timer 0

Întrerupere externă INT1

Counter / Timer 1

Timer 2 și externe de întrerupere externă 2

Prioritate minimă

[3.11. Card de memorie pentru utilizatori (MEMORY MAP USER RAM)]

Acc. Un scurtcircuit pentru acumulator (utilizat în tabelele de comandă 8051). Acesta este un registru special 8051, al cărui conținut conține toate operațiile majore de asamblare.

CY scurt pentru Carry (utilizat în tabelele de comandă 8051).

Demontarea procesului de traducere a codului binar al programului (firmware) în fișierul sursă în limba de asamblare (în cazul nostru este microcontrolerul 8051). Codul binar este de obicei în format BIN sau HEX.

1. Formatul site-ului Intel HEX: en.wikipedia.org.
2. 130528mcs-51-tools.zip - instrumente de bază pentru lucrul cu cod de MCS-51 (DIS8051 dezasamblor, MCS-51 asamblare IAR ver 4.05, utilități și BIN2HEX HEX2BIN, documentație.), Parola pentru mcs51tools arhiva.







Trimiteți-le prietenilor: