[ Pobierz całość w formacie PDF ]
$RESTORE G $RS przywraca�poprzedni�stan�$LIST/$GEN/$COND IV�Kompatybilność�z�asemblerem�firmy�Intel Wraz�z�kompilatorem�ASM51�intel�zdefiniował�i�zaimplementował�język�asemblera�dla�mikrokontrolerów� rodziny�MCS�51,�który�zawsze�był�jedynym�prawdziwym�standardem�w�świecie�8051. Niestety�Intel�ogłosił� koniec�życia �ASM51�(wersja�finalna�2.3)�wszystkich�pozostałych�narzędzi� programistycznych�do�końca�1993�roku. Asembler�ASEM�51�jest�podzbiorem�standardu�Intel,�który�gwarantuje�maksymalną�kompatybilność�z� istniejącymi�plikami�zródłowymi�8051.�Posiada�on�implementację�wszystkich�instrukcji�mnemonicznych�8051� podobnie,�jak�bogaty�i�użyteczny�zestaw�pseudo�instrukcji�i�kontrolek�kompilatora�Intel. IV.1�Obostrzenia Od�czasu,�gdy�ASEM�51�generuje�pliki�w�formacie�Intel�HEX�(lub�absolutnym�OMF�51)�zamiast�relokowanych� modułów,�cały�kod�dla�8051�musi�znajdować�się�w�jednym�pojedynczym�pliku.�W�konsekwencji�wszystkie� pseudo�instrukcje,�które�współdziałają�z�relokowanymi�segmentami,�zewnętrznymi�lub�publicznymi�symbolami,� nie�zostały�zaimplementowane: PUBLIC EXTRN SEGMENT RSEG Intelowski�styl�makr�nie�jest�wspierany!�(Więc�znak�'%'�może�być�używany�w�komentarzach.) Do�teraz�tylko�następujące�kontrolki�asemblera�i�ich�skróty�zostały�zaimplementowane: |�kontrolki�główne skrót. |�kontrolki�ogólne skrót ����������+�����������������������������������������+������������������������������������������������������� |�$DATE�() $DA |�$EJECT $EJ |�$DEBUG $DB |�$GEN $GE |�$NODEBUG $NODB |�$NOGEN $NOGE |�$MACRO�()�$MR |�$GENONLY $GO Kontlol� |�$NOMACRO $NOMR|�$INCLUDE�() $IC ki |�$MOD51 $MO |�$LIST $LI |�$NOMOD51 $NOMO|�$NOLIST $NOLI Intel |�$PAGING $PI |�$SAVE $SA |�$NOPAGING $NOPI |�$RESTORE $RS |�$SYMBOLS $SB |�$TITLE $TT |�$NOSYMBOLS $NOSB | |�$PAGELENGHT�()�$PL | |�kontrolki�główne skrót. |�kontrolki�ogólne skrót ����������+�����������������������������������������+������������������������������������������������������� |�$PAGEWIDTH�()�$PW| ����������+�����������������������������������������+������������������������������������������������������� |�$NOBUILTIN ����� |�$COND ����� Kontrol�|�$NOTABS ����� |�$NOCOND ����� ki |�$PHILIPS ����� |�$CONDONLY ����� ASEM� | |�$ERROR�() ����� 51 | |�$WARNING�() ����� IV.2�Wyrażenia Kontrolki�asemblera�nie�muszą�się�zaczynać�w�kolumnie�nr�1,�ale�mogą�być�poprzedzone�przez�dowolną�ilość� spacji�lub�znaków�tabulacji.�Kontrolki�główne�mogą�być�również�poprzedzone�przez�linie�komentarza�i� wyrażenia�$INCLUDE,�dołączone�pliki�include�zawierają�tylko�kolejne�wyrażenia�kontrolne�oraz�komentarze. Plik�zródłowy�może�zawierać�puste�linie�i�linie�komentarza�za�wyrażeniem�END.�Aańcuchy�znaków�mogą�być� również�zawarte�w�podwójnych�cudzysłowach. Symbol�DATA�dla�rejestru�funkcji�specjalnych�PCON�jest�predefiniowany. Operator�bitu�'.'�jest�legalny�we�wszystkich�wyrażeniach,�nie�tylko�w�tych,�które�pasują�do�segmentu�typu�BIT. ASEM�51�przedstawia�zestaw�meta�instrukcji,�które�uzupełniają�instrukcje�języka�MCS�51�firmy�Intel,�alenie�są� jego�cześcią. Meta�instrukcje�IFxx,�ELSEIFxx,�ELSE�oraz�ENDIF�pozwalają�na�kompilację�warunkową,�do�czasu,�gdy� wystąpią�meta�instrukcje�MACRO,�REPT,�ENDM,�EXITM�oraz�LOCAL�(i�niektóre�znaki�kontrolne)�z� potężnego�języka�makr. Po�szczegółowe�informacje�dotyczące�meta�instrukcji�zobacz�do�rozdziału� III.10�Kompilacja�warunkowa �oraz� III.11�Makroprocesor . IV.3�Dalsze�różnice By�uczynić�semantykę�unikalną,�szczególnie�w�odniesieniu�do�stosowania�operatorów�ogólnych�w�wyrażeniach� jest�inna.�Dalej,�wyrażenia�z�operacjami�bitowymi� . �przechodzą�jako�wynik�do�typu�BIT,�a�nie�do�NUMBER.� Typ�segmentów,�które�są�definiowane�przy�użyciu�EQU�lub�SET�zawsze�rozwijane�są�do�NUMBER. W�przeciwnym�razie�może�być�trudne,�w�niektórych�wypadkach,�wymuszenie�definicji�symbolu�bez�typu.�Jest�to� opisane�w�szczegółach�w�rozdziałach� III.4� oraz�w� III.7 . Poza�instrukcją�DB,�łańcuch�stałej�zerowej�długości�'�'�jest�niedozwolony. Kontrolka�$NOMOD51�blokuje�także�predefiniowane�adresy�w�przestrzeni�CODE. Symbole�specjalne�AR0...AR7�są�predefiniowane�dla�banku�0�zanim�pierwszy�raz�pojawi�się�wyrażenie�USING. V�Format�pliku�"List�File" Plik�listy�(listingu)�kompilatora�ASEM�51�został�zaprojektowany�tak,�by�dostarczyć�użytkownikowi�tak�wiele� informacji�na�temat�generowanego�kodu,�jak�to�możliwe. Poza�listą�kodu�zródłowego,�występuje�pięć�podstawowych�struktur�w�listingu: ��nagłówek�strony ��nagłówek�pliku ��nagłówki�linii ��diagnostyka�błędu ��tabela�symboli�lub�powiązań�krzyżowych Normalnie,�każda�strona�listingu�zaczyna�się�od�nagłówka�strony�w�formacie: ASEM�51�V1.3 Copyright�(c)�2002�by�W.W.�Heinz PAGE�1 Identyfikuje�on�kompilator,�zawiera�informację�o�prawach�autorskich�i�pokazuje�informację�o�aktualnym� numerze�strony�w�prawym�górnym�marginesie.�Po�nagłówku�strony,�linie�zródłowe�są�wypisywane�w�formacie� listy.�Gdy�osiągnięta�zostaje�maksymalna�ilość�linii�na�stronę,�następny�nagłówek�strony�jest�wstawiany�po� znaku�nowej�strony. Jeśli�drukarka�nie�obsługuje�znaków�nowej�strony,�nagłówek�może�zostać�zablokowany�przy�pomocy�kontrolki� $NOPAGING.�Ilość�linii�na�stronę�może�zostać�dostosowana�do�formatu�papieru�przy�pomocy�kontrolki� $PAGELENGHT.�Szerokość�nagłówka�(i�wszyskich�innych�linii)�może�być�ustawiona�przy�pomocy�kontrolki� $PAGEWIDTH. Nagłówek�pliku�pojawia�się�tylko�na�pierwszej�stronie.�Identyfikuje�on�kompilator,�wypisuje�listę�wszystkich� plików�wejściowych�i�wyjściowych�i�oznacza�kolumny�dla�nagłówków�linii.�Typowy�nagłówek�pliku�wygląda�w� następujący�sposób: MCS�51�Family�Macro�Assembler�A�S�E�M� �5�1�V�1.3 ======================================== Source�File: demo.a51 Object�File: demo.hex List�File: demo.lst Line I Addr Code Source Bezpośrednio�po�nagłówku�pliku�następuje�lista�linii�kodu�zródłowego. Każda�linia�kodu�zródłowego�jest�poprzedzona�nagłówkiem�linii.�Nagłówek�linii�składa�się�z�czterech�kolumn:� numeru�linii,�pliku�dołączanego�lub�poziomu�makra,�adresu�linii�i�generowanego�kodu. Domyślnie�nagłówki�linii�zawierają�znaki�tabulacji,�by�zaoszczędzić�przestrzeń�dyskową. Jeśli�drukarka�lub�przeglądarka�plików�nie�obsługuje�znaków�tabulacji,�można�je�zastąpić�spacjami�przy�użyciu� kontrolki�$NOTABS. Kolumna� Line �zawiera�globalny�numer�linii.�Nie�jest�konieczny�lokalny�numer�linii�w�poszczególnych�plikach� zródłowych,�ale�globalny�numer,�który�jest�zliczany�przez�główny�plik�zródłowy,�pliki�dołączane�i�wszystkie� linie�ekspansji�makr. Od�czasu,�gdy�pliki�dołączane�i�makra�mogą�być�zagnieżdżane�arbitralnie,�numer�linii�globalnej�jest�przerywany� przez�znak� : dla�głównego�pliku�zródłowego,�wszystkich�poziomów�plików�dołączanych�i�przez�znak� + dla� poziomów�ekspansji�makr. Kolumna� I �zawiera�flagi�z�poziomem�zagnieżdżenia�plików�dołączanych�lub�makr.�W�głównym�pliku� zródłowym,�kolumna�ta�jest�pusta.�Pierwszy�plik�dołączony�otrzymuje�poziom�1.�Jeśli�w�tym�pliku�dołączanym� znajduje�się�kolejny�plik�dołączany,�otrzymuje�on�poziom�2,�itd.�Zasada�jest�identyczna�dla�zagnieżdżania�makr.� Jeśli�makro�jest�wywoływane�z�głównego�pliku�zródłowego,�otrzymuje�ono�poziom�1.�Jeśli�makro�wywołuje� kolejne�makro,�wywoływane�makro�otrzymuje�poziom�2,�itd. [ Pobierz całość w formacie PDF ] |
Odnośniki
|