,
[ 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 MCS51, 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 ASEM51 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 ASEM51 generuje pliki w formacie IntelHEX (lub absolutnym OMF51) 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. ASEM51 przedstawia zestaw meta instrukcji, które uzupełniają instrukcje języka MCS51 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 ASEM51 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: ASEM51 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: MCS51 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
|