<
V druhém díle, který bude navazovat, popíąeme moľnosti citovanéhooriginálu
od INTELu, protoľe se na ně často odkazujeme. Pro zájemce o popiskódu procesorů
rodiny x51, přikládám ZDE.pdf
soubor, staľený z WWW.ATMEL.COM, kde
je popsán v angličtině kompletní zdrojový kód.
Na úvod
Toto srovnání vzniklo vlastně náhodou, potřeboval jsem totiľ rychle přeloľitprogram pro Atmel 89C2051 a neměl jsem překladač. Při hledání jsem narazilna různé přístupy a tak jsem se posléze snaľil vybrat ten nejlepąí promé potřeby.Překladače jsou řazeny abecedně podle jmen. U kaľdého je přiloľen krátkýprogram na blikání diody připojené na P1.0. Na konci jsou vąechny údajeshrnuty do přehledné tabulky.
8051 CrossAssembler
Tento cross assembler je dílem firmy Metalink. Testoval jsem jeho verzi1.2h. Assembler podporuje standardní Intelskou syntaxi. Má podporu pro21 klonů procesoru 51 definovanou pomocí souborů. Výstupní formát je IntelHex. Program při chybě nevrací errorlevel a popis chyby se objeví pouzev listingu, coľ ztěľuje zakomponování do integrovaných prostředí. K assembleruje velmi rozsáhlý manuál (200kB) a assembler jako jeden z mála podporujemakra.Příklad
$MOD51 LEDPIN BIT P1.0 START CODE 0000H TIME EQU 8 ORG STARTBLINK: CPL LEDPIN MOV R3,#TIME MOV R2,#0 MOV R1,#0LOOP: DJNZ R1,LOOP DJNZ R2,LOOP DJNZ R3,LOOP SJMP BLINK END
as31 -An 8031/8051 assembler
Tento assembler je dílem KenaStauffera. Lze jej získat pouze jako zdrojové soubory pro yacc a jazykC. Přeloľit tyto zdrojové kódy pomocí DJGPP pod MS DOSem dá trochu prácikvůli absenci dlouhých jmen a drobné nepřesnosti v souboru lexer.c. Výhodoutohoto asembleru je právě moľnost provozování assembleru na různých platformách.Při chybě assembler hlásí nic neříkající hláąku "Parse error on line XX".Výstupní formát je jakýsi podivný nedodělek Hex formátu (s příponou obj).Pseudopříkazy mají tečkovou notaci, zápis číselných konstant je stejnýjako v jazyce C. Vstupní soubor musí mít povinně příponu asm.Příklad
.EQU TIME, 8 .ORG 0BLINK: CPL P1.0 MOV R3,#TIME MOV R2,#0 MOV R1,#0LOOP: DJNZ R1,LOOP DJNZ R2,LOOP DJNZ R3,LOOP SJMP BLINK.END
ASEM-51
Testoval jsem verzi 1.2 tohoto assembleru od W.W. Heinze. Assembler má předdefinované symboly, ale pouľívá i mcu tabulky.Součástí balíku jsou tabulky pro 35 klonů procesoru 51 včetně Philips 83C75x.Zápis assembleru má Intelskou syntaxi, je moľné vkládat soubory pomocídirektivy $INCLUDE. Výstupní formát je Intel Hex a součástí balíku je programhexbin pro převod na binární formát. Program vrací errorlevel a chyby vypisujena standardní výstup ve tvaru podobném překladačům firmy Borland. Obsahujedokonce program asem2msg pro plné integrování překladače do IDE Turbo Pascalu.Příklad
LEDPIN BIT P1.0 START CODE 0000H TIME EQU 8 ORG STARTBLINK: CPL LEDPIN MOV R3,#TIME MOV R2,#0 MOV R1,#0LOOP: DJNZ R1,LOOP DJNZ R2,LOOP DJNZ R3,LOOP SJMP BLINK END
Macrocross assembler
Velmi pěkný shareware assembler. Výpis chyb je na obrazovku, podporujemakra, podmíněný překlad. Má varianty pro procesory 8044, 8048, 8051, 8080,8085, 8096 a Z80. Pokud si je vąak budete chtít registrovat zaplatíte zakaľdý z nich 20 $. Autorem je Micept InstrumentsINC.. Neregistrovaná verze dvakrát čeká na stisk klávesy.START data 0000HTIME data 8LED data P1.0 ORG STARTBLINK: CPL LED MOV R3,#TIME MOV R2,#0 MOV R1,#0LOOP: DJNZ R1,LOOP DJNZ R2,LOOP DJNZ R3,LOOP SJMP BLINK END
MCS-51 Macro Assembler A51
Testoval jsem verzi 5.28 tohoto assembleru firmy KeilSoftware, Inc.. Assembler je součástí celého vývojového prostředí proMCS-51. Assembler podporuje makra a podle údajů výrobce je moľné překládatprogramy s těmito omezeními: nejsou předdefinovány symboly přeruąovacíchvektorů (RESET, EXTI0, EXTI1, SINT, TIMER0 a TIMER1), vzhledem k daląímrezervovaným slovům (např. IF) je nutná případná změna uľivatelem definovanýchsymbolů a výstupní soubor má některá roząíření (ladicí informace). Nedostatkemtohoto assembleru je výpis chybových hláąení pouze do list souboru, errorlevelje vąak nastavováno. Výstupní formát je roząířený OMF-51, coľ je objektovýsoubor, umoľňující následné linkování několika modulů při větąích projektech.Výstupní formát linkeru je ovąem opět OMF-51. Tento formát je moľné dodávanýmprogramem konverovat na Intel HEX. Zkuąební verze tohoto assembleru jek dispozici na http://www.keil.com/demo/ek51.htmnebo u prodejců (seznam je na www serveru firmy). Pokud vám nevadí vývojprogramů pod Windows, je k dispozici pěkné integrované prostředí, kterébohuľel umí syntax highlight pouze pro C.Příklad
$MOD51 LEDPIN BIT P1.0 START CODE 0000H TIME EQU 8 ORG STARTBLINK: CPL LEDPIN MOV R3,#TIME MOV R2,#0 MOV R1,#0LOOP: DJNZ R1,LOOP DJNZ R2,LOOP DJNZ R3,LOOP SJMP BLINK END
PseudoSam 51 assembler
Tento překladač je dílem firmy PseudoCorp. Autoři sami jej označují jakoLevel I. K dispozici jsem měl verze 1.2.03, 1.4.09 a 1.6.00. Rozdíl mezinimi byl v mnoľství a úrovni dokumentace a příkladů, kdy v nejnovějąímbalíku nebyla dokumentace skoro ľádná a příklad chyběl vůbec. K překladačije ale nabízen placený upgrade na Level II, která je roząířena o makra,bitovou aritmetiku při překladu a podobně (vąe podle dokumentace, protoľejsem Level II neměl k dispozici). Velkou nevýhodou tohoto překladače jetečková notace zápisu pseudo-instrukcí, jak je ostatně vidět na příkladěa podivný zápis binárních a hexadecimálních číslic (b'1001 resp. h'1A).Program chyby vypisuje na standardní výstup i s číslem řádku a sloupce.Nevrací errorlevel.Příklad
.EQU TIME, 8 .ORG 0BLINK: CPL P1.0 MOV R3,#TIME MOV R2,#0 MOV R1,#0LOOP: DJNZ R1,LOOP DJNZ R2,LOOP DJNZ R3,LOOP SJMP BLINK.END
TASM
TASM je tabulkami řízený assembler podporující kromě 51 také procesory8048, Z80, 6800, 8080, TMS32010 a TMS7000. Autorem je Thomas N. Anderson,Speech Technology Incorporated. Výstupní formát je Intel Hex (default),MOS Technology Hex, Motorola Hex a binární. Program má tečkovou notacizápisu pseudo-instrukcí, podporuje makra. Program při chybě vrací errorlevela popis chyby vypisuje na standardní výstup. Program nemá předdefinovanésymboly, uľivatel si je můľe sám dodělat, v nejnovějąí verzi 3 jsou k dispozicipouze pro 8051 a Motorolu. Registrovaní uľivatelé dostanou zdrojové kódy.Příklad
.ORG 0000BLINK: CPL 90h MOV R3,#8 MOV R2,#0 MOV R1,#0LOOP: DJNZ R1,LOOP DJNZ R2,LOOP DJNZ R3,LOOP SJMP BLINK .END
UASM -Universal Cross Assembler
UASM je shareware, jeho autorem je Bruce Graham, Custom Computer Consultants.Assembler podporuje Intel 8051/8031, Motorola 6805 a Zilog Z8. Jsou dodáványzdrojové soubory v jazyce C, program opět nemá předdefinovány symboly.Výstupní formát je buď Intel Hex nebo listing. Popis chyb je pouze v listingu,program nevrací errorlevel.Příklad
ORG 0BLINK: CPL 90h MOV R3,#8 MOV R2,#0 MOV R1,#0LOOP: DJNZ R1,LOOP DJNZ R2,LOOP DJNZ R3,LOOP SJMP BLINK
XASM- Universal Cross Assembler
XASM je cross assembler, jeho autorem je Dave Dunfield. Assembler podporujeIntel 8051/8031, 8086, 8096 a Motorola 680x. Nejsou předdefinovány symboly,a nepodařilo se mi napsat číselnou konstantu hexadecimálně. Výstupní formátje buď Intel nebo Motorola Hex. Popis chyb je pouze v listingu, programvrací errorlevel při chybě překladu.Příklad
ORG 0BLINK CPL 144 MOV R3,#8 MOV R2,#0 MOV R1,#0LOOP DJNZ R1,LOOP DJNZ R2,LOOP DJNZ R3,LOOP SJMP BLINK
Srovnávací tabulka
Autor | Výstupní formát | Chybová hláąení | Cena | Pseudoinstrukce
a konstanty |
Makra |
---|---|---|---|---|---|
8051 cross assembler | Intel Hex | listing | ? | Intel | Ano |
as31 | Podivnost | standardní výstup | Public domain | Tečková notace | Ne |
ASEM-51 | Intel Hex | standardní výstup | Freeware | Intel | Ne |
Macro cross assembler | Intel Hex | standardní výstup | 20 $ | Intel | Ano |
MCS-51 Macro Assembler A51 | OMF-51 | listing | Komerční 11 600,- Kč (IDE+debbuger) | Intel - úplná kompatibilita | Ano |
PseudoSam 51 assembler | Intel Hex | standardní výstup | Freeware | Tečková notace
nezvyklý zápis čísel |
Ne |
TASM | Intel, Motorola,
MOS Hex, binární |
standardní výstup | 40 $ | Tečková notace | Ano |
UASM | Intel Hex | listing | 20 $ | Intel | ?Ne |
XASM | Intel, Motorola Hex | listing | ? | Intel | ?Ne |
Na závěr
Je vidět, ľe mnoho autorů si vytvořilo vlastní definici, jak psát programypro
8051, to velice ztěľuje přechod mezi jednotlivými assemblery. Protoje vhodné
si vybrat jeden a ten pak stále pouľívat.
Pokud pouľíváte jeątě nějaký jiný assembler pro 51 a máte pocit, ľeje vhodné, aby o něm věděli i ostatní, napiąte mi o něm více.
Firma Intel dává volně k dispoziciprogram
ApBuilder,coľ
je skoro integrované prostředí pro psaní programů pod Windows 3.1.Je to
kombinace elektronického manuálu a klikacího průvodce, kde např.nastavení
sériového kanálu se nakliká a přes clipboard přesune zdrojovýkód v assembleru
nebo C do editoru. Hlavní výhodou je podpora asi vąechintelských procesorů
(natěstí ne najednou na disku) a podpora vývojovýchdesek firmy Intel, kde
je moľnost program krokovat, spouątět a podobně.
Napsal : Tomáą Kouba