DSM-51 v2 Dydaktyczny System Mikroprocesorowy DSM51ASS (Asembler 8051) wersja 1.01 Producent: 'MicroMade' Systemy Mikroprocesorowe ul. Sikorskiego 33 64-920 Piˆa www.micromade.com.pl Program DSM51ASS jest asemblerem mikrokontrolera 8051 przeznaczonym do stosowania przy nauce programowania tego mikrokontrolera z wykorzystaniem Dydaktycznego Systemu Mikroprocesorowego DSM-51. Program DSM51ASS jest dostarczany ˆ¥cznie z systemem DSM-51 oraz rozprowadzany na dyskietce zawartej w ksi¥¾ce "Podstawy programo- wania mikrokontrolera 8051. Pracownia system¢w mikroprocesorowych na bazie DSM-51", MIKOM, Warszawa 1995. Producent programu zezwala na swobodne kopiowanie i u¾ytkowanie programu DSM51ASS do cel¢w niekomercyjnych, pod warunkiem, ¾e razem z asemblerem kopiowane b(c)d¥ wszystkie towarzysz¥ce mu pliki (caˆa dyskietka) w oryginalnej postaci dostarczonej przez MicroMade. Opis programu: ============== Podstawowe cechy asemblera DSM51ASS: - jest makroasemblerem jednoprzebiegowym, - komunikaty wypisuje w j(c)zyku polskim (DOS strona kodowa 852), - pozwala asemblowa† tylko pojedyäczy plik wej˜ciowy (nie ma fazy linkowania), - asemblowany program mo¾e liczy† maksymalnie okoˆo 20,000 linii listingu (zale¾nie od dost(c)pnej pami(c)ci), - zezwala na stosowanie rozbudowanych wyra¾eä arytmetycznych o postaci zbli¾onej do wyra¾eä j(c)zyka C, - wszystkie wyra¾enia arytmetyczne liczy na liczbach 32 bitowych ze znakiem, - warto˜ci wszystkich symboli pami(c)ta w postaci liczb 16 bitowych bez znaku. Wywoˆanie programu: =================== DSM51ASS gdzie jest nazw¥ pliku zawieraj¥cego kod "r¢dˆowy programu. Je˜li w nazwie nie zawarto rozszerzenia to domy˜lnie przyjmowane jest rozszrzenie .asm. W wyniku dziaˆania programu powstaj¥ nast(c)puj¥ce zbiory: .hex - zbi¢r zawieraj¥cy kod wynikowy w formacie Intel HEX. .lst - listing programu Format linii programu: ====================== Typowa linia programu w asemblerze wygl¥da nast(c)puj¥co: [] [] [] [;] Znaczenie poszczeg¢lnych p¢l linii programu jest nast(c)puj¥ce: - symbol umieszczony na samym pocz¥tku linii (pierwszy znak etykiety musi by† pierwszym znakiem w linii). Etykieta musi zaczyna† si(c) od litery lub znaku podkre˜lenia '_', i mo¾e zawiera† dowoln¥ kombinacj(c) liter, cyfr i podkre˜leä. Je˜li etykieta jest zakoäczona dwukropkiem to nadawana jest jej warto˜† okre˜laj¥ca jej pozycj(c) w kodzie "r¢dˆowym (adres rozkazu z tej linii programu). Etykiety (symbole) stosowane z dyrektywami nadaj¥cymi im warto˜† nie s¥ zakoäczone dwukropkiem. - mnemonik kodu maszynowego procesora, dyrektywa asemblera lub makro. - informacje wymagane przez mnemonik, dyrektyw(c) asemblera lub makro. Poszczeg¢lne operandy s¥ oddzielane przecinkami. - wszystkie znaki wyst(c)puj¥ce po ˜redniku s¥ traktowane jako komentarz i ignorowane przez asembler. Poszczeg¢lne pola linii programu musz¥ by† oddzielone mi(c)dzy sob¥ co najmniej jednym znakiem spacji (lub tabulacji). W programie mog¥ wyst(c)powa† puste linie lub linie zawieraj¥ce wyˆ¥cznie komentarz. Wyra¾enia arytmetyczne. ======================= Wyra¾enia arytmetyczne sˆu¾¥ do okre˜lenia warto˜ci parametr¢w wymagaj¥cych podania warto˜ci liczbowej. Wyra¾enia skˆadaj¥ si(c) ze staˆych liczbowych i symboli (etykiety, nazwy staˆych lub zmiennych) poˆ¥czonych operatorami arytmetycznymi. Skˆadnia wyra¾eä asemblera DSM51ASS zostaˆa zaczerpni(c)ta z j(c)zyka C. Wprowadzono kilka dodatkowych operator¢w stosowanych powszechnie w asemblerach oraz zmieniono priorytet operacji bitowych - s¥ one wykonywane przed operacjami por¢wnaä. Operatory por¢wnaä daj¥ warto˜† 1 je¾eli warunek jest prawdziwy oraz 0 je¾eli jest faˆszywy. Operatory logiczne ( !,&&,|| ) ka¾d¥ warto˜† r¢¾n¥ od zera traktuj¥ jako prawd(c), a warto˜† 0 jako faˆsz. Jako wynik operacji logicznych r¢wnie¾ uzyskujemy warto˜† 1 lub 0. W asemblerze DSM51ASS wszystkie obliczenia wykonywane s¥ na liczbach 32 bitowych ze znakiem. Oznacza to, ¾e warto˜† wyra¾enia jest wyliczona prawidˆowo dop¢ki wyniki po˜rednie mieszcz¥ si(c) w zakresie -2,147,483,648 do 2,147,483,647. Przekroczenie tego zakresu w czasie obliczeä nie jest sygnalizowane. Warto˜ci symboliczne u¾ywane w programie s¥ przechowywane jako liczby 16 bitowe bez znaku. Asembler kontroluje warto˜† i typ wyra¾enia. Je¾eli warto˜† wyra¾enia arytmetycznego wykracza poza zakres dopuszczony dla aktualnego parametru lub typ wyra¾enia jest nieodpowiedni to generowany jest bˆ¥d. Staˆe liczbowe. =============== Staˆa liczbowa musi zaczyna† si(c) od cyfry. DSM51ASS akceptuje nast(c)puj¥ce typy staˆych liczbowych: Typ Skˆadnia Przykˆad ========================================================= Dziesi(c)tny 125 Szesnastkowy H 0FFFFH àsemkowy O 7777O Binarny B 10101B Znakowy '' 'A' ========================================================= Symbole. ======== Symbole reprezentowane s¥ przez ci¥g znak¢w zaczynaj¥cy si(c) od litery lub znaku podkre˜lenia '_' i skˆadaj¥cy si(c) z dowolnej sekwencji liter,cyfr i podkre˜leä. Asembler rozpoznaje pierwsze 32 znaki symbolu. W asemblerze DSM51ASS zdefiniowano standardowe symbole reprezentuj¥ce poszczeg¢lne rejestry i bity procesora 8051. Poza tym asembler rozpoznaje symbole okre˜laj¥ce adresy urz¥dzeä systemu DSM-51 i zawartych w jego pami(c)ci EPROM podprogram¢w standardowych. List(c) tych symboli umieszczono w rozdziale 'Predefiniowane symbole' w koäcowej cz(c)˜ci tego pliku. Operatory arytmetyczne. ======================= Operatory w/g priorytetu ich wykonywania: (), Nawiasy !, ~, +, -, <, > Modyfikacje warto˜ci .0, .1, .2, .3, .4, .5, .6, .7 Selekcja bit¢w *, /, % Mno¾enie, dzielenie +, - Dodawanie, odejmowanie <<, >> Przesuni(c)cia bitowe & Bitowe AND ^ Bitowe XOR | Bitowe OR <, <=, >, >=, =, ==, != Por¢wnania && Logiczne AND || Logiczne OR Znaczenie poszczeg¢lnych operator¢w: () - Nawiasy okre˜laj¥ kolejno˜† wykonywania dziaˆaä. Nie ma ograniczenia liczby zastosowanych zagˆ(c)bionych nawias¢w. Operatory modyfikuj¥ce warto˜† nastepuj¥cego po nich operandu. ! - Negacja logiczna. Zmienia warto˜† r¢¾n¥ od 0 na 0, a warto˜† r¢wn¥ 0 na 1. ~ - Negacja bitowa. Zmienia wszystkie 32 bity w operandzie na odwrotne. + - Nie zmienia warto˜ci. - - Zmienia znak operandu na przeciwny. < - Najmˆodszy bajt operandu ( wyra¾enie '< operand' jest r¢wno- wa¾ne wyra¾eniu '( operand & 0FFH )' lub '( operand % 256 )' ). > - Strsze 3 bajty opernadu ( wyra¾enie '> operand' jest r¢wnowa¾ne wyra¾eniu '( operand >> 8 )' lub '( operand / 256 )'). Operatory selekcji bit¢w w bitowo adresowalnych rejestrach. .n - Wyst(c)puj¥c po adresie (nazwie) rejestru oblicza adres wskazanego bitu tego rejestru. Je¾eli dany adres nie jest adresem bitowo adresowalnego rejestru sygnalizowany jest bˆ¥d. 'n' jest cyfr¥ z zakresu 0..7. Operatory mno¾enia i dzielenia. * - Mno¾enie. / - Dzielenie. % - Dzielenie 'modulo' (reszta z dzielenia). Operatory dodawania i odejmowania. + - Dodawanie. - - Odejmowanie. Operatory przesuni(c)† bitowych. << - Przesuni(c)cie w lewo. Operand wyst(c)puj¥cy z lewej strony operatora jest przesuwany w lewo o liczb(c) bit¢w okre˜lon¥ przez operand wyst(c)puj¥cy z prawej strony. Na zwalniane bity wchodz¥ zera. >> - Przesuni(c)cie w prawo. Operand wyst(c)puj¥cy z lewej strony operatora jest przesuwany w prawo o liczb(c) bit¢w okre˜lon¥ przez operand wyst(c)puj¥cy z prawej strony. Na zwalniane bity wchodz¥ zera. Operatory bitowe. & - AND mi(c)dzy bitami operand¢w. Odpowiedni bit w wyniku ma warto˜† '1' tylko wtedy, gdy odpowiadaj¥ce mu bity w obu operandach maj¥ warto˜† '1'. W pozostaˆych przypadkach ma warto˜† '0'. Operacja ta jest wykonywana dla wszystkich 32 bit¢w. Operand1 Operand2 | Wynik ---------------------------------- 0 0 | 0 0 1 | 0 1 0 | 0 1 1 | 1 ---------------------------------- ^ - XOR mi(c)dzy bitami operand¢w. Odpowiedni bit w wyniku ma warto˜† '1' tylko wtedy, gdy jeden z odpowiadaj¥cych mu bit¢w w operandach ma warto˜† '1', a drugi '0'. W pozostaˆych przypadkach ma warto˜† '0'. Operacja ta jest wykonywana dla wszystkich 32 bit¢w. Operand1 Operand2 | Wynik ---------------------------------- 0 0 | 0 0 1 | 1 1 0 | 1 1 1 | 0 ---------------------------------- | - OR mi(c)dzy bitami operand¢w. Odpowiedni bit w wyniku ma warto˜† '1', gdy co najmniej jeden z odpowiadaj¥cych mu bit¢w w operandach ma warto˜† '1'. W przeciwnym przypadku ma warto˜† '0'. Operacja ta jest wykonywana dla wszystkich 32 bit¢w. Operand1 Operand2 | Wynik ---------------------------------- 0 0 | 0 0 1 | 1 1 0 | 1 1 1 | 1 ---------------------------------- Operatory por¢wnaä. < - Mniejszy. Prawda (=1) gdy warto˜† lewego operandu jest mniejsza od warto˜ci prawego operandu. <= - Mniejszy lub r¢wny. Prawda (=1) gdy warto˜† lewego operandu jest mniejsza od lub r¢wna warto˜ci prawego operandu. > - Wi(c)kszy. Prawda (=1) gdy warto˜† lewego operandu jest wi(c)ksza od warto˜ci prawego operandu. >= - Wi(c)kszy lub r¢wny. Prawda (=1) gdy warto˜† lewego operandu jest wi(c)ksza od lub r¢wna warto˜ci prawego operandu. = - R¢wny. Prawda (=1) gdy warto˜† lewego operandu jest r¢wna warto˜ci prawego operandu. == - R¢wny. Prawda (=1) gdy warto˜† lewego operandu jest r¢wna warto˜ci prawego operandu. != - R¢¾ny. Prawda (=1) gdy warto˜† lewego operandu jest r¢¾na od warto˜ci prawego operandu. Operatory logiczne. && - AND logiczne. Prawda (=1) gdy oba operandy maj¥ warto˜ci r¢¾ne od zera. || - OR logiczne. Prawda (=1) gdy co njmniej jeden z operand¢w ma warto˜† r¢¾n¥ od zera. Dyrektywy asemblera. ===================== W poszczeg¢lnych liniach programu opr¢cz mnemonik¢w oznaczaj¥cych poszczeg¢lne rozkazy procesora mog¥ wyst¥pi† dyrektywy asemblera. Umo¾liwiaj¥ one wstawianie danych w tre˜† programu, przypisywanie warto˜ci symbolom, sterowanie przebiegiem asemblacji i budowanie makr (zestaw¢w poleceä wywoˆywanych pojedyäcz¥ nazw¥). Asembler DSM51ASS akceptuje nast(c)puj¥ce dyrektywy: Dyrektywy danych: DB - wstawienie w kod warto˜ci numerycznych i tekstowych, DW - wstawienie w kod dwubajtowych warto˜ci numerycznych, EQU - definiowanie staˆej, BIT - definiowanie staˆej typu bit, REG - definiowanie staˆej typu rejestr, SET - definiowanie zmiennej. Dyrektywy steruj¥ce: IF - pocz¥tek bloku warunkowej asemblacji, ELSE - pocz¥tek alternatywnego bloku warunkowej asemblacji, ENDIF - koniec bloku warunkowej asemblacji, ORG - ustawienie adresu dla nast(c)pnego bloku kodu, END - koniec programu. Dyrektywy makrodefinicji: MACRO - pocz¥tek definicji makra, ENDM ( MACEND ) - koniec definicji makra. Dyrektywy danych. ----------------- DB - wstawienie w kod warto˜ci numerycznych i tekstowych -------------------------------------------------------- Skˆadnia: [] DB Wpisuje w tre˜† programu warto˜ci parametr¢w. Poszczeg¢lne parametry oddzielane s¥ przecinkami. Parametry mog¥ by† wyra¾eniami arytmetycznymi lub ci¥gami znak¢w uj(c)tymi w znaki ' lub ". Warto˜ci kolejnych parametr¢w b(c)d¥cych wyra¾eniami arytme- tycznymi s¥ wpisywane w kolejne bajty tre˜ci programu. Parametry b(c)d¥ce ci¥gami znak¢w s¥ wpisywane w caˆo˜ci do tre˜ci programu. W ci¥gu znak¢w uj(c)tym w znaki " mo¾e wyst¥pi† znak ' i odwrotnie. DW - wstawienie w kod dwubajtowych warto˜ci numerycznych -------------------------------------------------------- Skˆadnia: [] DW Wpisuje w tre˜† programu warto˜ci parametr¢w. Poszczeg¢lne parametry oddzielane s¥ przecinkami. Parametry s¥ wyra¾e- niami arytmetycznymi. Warto˜† ka¾dego parametru jest wpisywana w dwa kolejne bajty tre˜ci programu (najpierw starszy). EQU - definiowanie staˆej. -------------------------- Skˆadnia: EQU Symbolowi przypisywana jest warto˜† wyra¾enia. Typ symbolu ustalany jest na podstawie wyra¾enia. Ka¾da warto˜† zdefiniowana dyrektyw¥ EQU jest staˆ¥ i nie mo¾e by† zmieniana w trakcie asemblacji. BIT - definiowanie staˆej typu bit. ----------------------------------- Skˆadnia: BIT Symbolowi przypisywana jest warto˜† wyra¾enia. Kontroluje typ wyra¾enia. Zdefiniowany symbol mo¾e by† u¾ywany wyˆ¥cznie jako adres bitu. Warto˜† symbolu nie mo¾e by† zmieniana w trakcie asemblacji. REG - definiowanie staˆej typu rejestr. --------------------------------------- Skˆadnia: REG Symbolowi przypisywana jest warto˜† wyra¾enia. Kontroluje typ wyra¾enia. Zdefiniowany symbol mo¾e by† u¾ywany wyˆ¥cznie jako adres rejestru wewn(c)trznego mikrokontrolera lub kom¢rki wewn(c)trznej pami(c)ci RAM. Warto˜† symbolu nie mo¾e by† zmieniana w trakcie asemblacji. SET - definiowanie zmiennej. ---------------------------- Skˆadnia: SET Symbolowi przypisywana jest warto˜† wyra¾enia. Typ symbolu ustalany jest na podstawie wyra¾enia. Warto˜ci zdefiniowane dyrektyw¥ SET mog¥ by† dowolnie wiele razy modyfikowane przez ponowne u¾ycie dyrektywy SET. Zmiana typu symbolu w trakcie kolejnego przypisania powoduje wygenerowanie ostrze¾enia. Dyrektywy steruj¥ce. -------------------- IF - pocz¥tek bloku warunkowej asemblacji. ------------------------------------------- Skˆadnia: IF Je¾eli warto˜† wyra¾enia jest r¢¾na od '0' (prawda) to kod wyst(c)puj¥cy za t¥ dyrektyw¥ jest asemblowany. Je¾eli warto˜† wyra¾enia jest r¢wna '0' (faˆsz) i istnieje dyrektywa ELSE to kod wyst(c)puj¥cy po ELSE jest asemblowany. Dyrektywa ENDIF zamyka blok kodu asemblowanego warunkowo. Dopuszczalne jest zagˆ(c)bianie dyrektyw IF do 16 poziom¢w. ELSE - pocz¥tek alternatywnego bloku warunkowej asemblacji. ------------------------------------------------------------ Skˆadnia: ELSE U¾ywana w poˆ¥czeniu z dyrektyw¥ IF. Je˜li wyra¾enie testowane w dyrektywie IF ma warto˜† '0' to alternatywny kod zaznaczony przez ELSE jest asemblowany. ENDIF - koniec bloku warunkowej asemblacji. -------------------------------------------- Skˆadnia: ENDIF Zakoäczenie bloku warunkowej asemblacji rozpocz(c)tego dyrektyw¥ IF. ORG - ustawienie adresu dla nast(c)pnego bloku kodu. -------------------------------------------------- Skˆadnia: ORG Ustawienie adresu dla nast(c)puj¥cego po tej dyrektywie bloku kodu. Adres dla nast(c)pnej instrukcji procesora jest ustalany poprzez wyliczenie warto˜ci wyra¾enia. Mo¾liwe jest jedynie zwi(c)kszanie aktualnego adresu kodu. Pr¢ba zmniejszenia adresu jest sygnalizo- wana jako bˆ¥d. Standardowo kod programu jest umieszczany rozpoczynaj¥c od adresu 0. END - koniec programu. ---------------------- Skˆadnia: END Zaznaczenie koäca programu. Linie wyst(c)puj¥ce w pliku "r¢dˆowym po tej dyrektywie nie s¥ asemblowane. U¾ycie tej dyrektywy w programie nie jest konieczne. Przy jej braku koäcem programu jest koniec pliku. Dyrektywy makrodefinicji. ------------------------- MACRO - pocz¥tek definicji makra. --------------------------------- Skˆadnia: MACRO Makro to zestaw instrukcji asemblera. Ci¥g instrukcji wyst(c)puj¥cy po linii zawieraj¥cej dyrektyw(c) MACRO, a¾ do najbli¾szej dyrektywy ENDM, tworzy makro o nazwie . Po zdefiniowaniu caˆy taki zestaw mo¾e by† wˆ¥czony w kod "r¢dˆowy programu poprzez wywoˆanie makra. W tre˜ci makr mog¥ wyst(c)powa† bez ograniczeä wywoˆania innych makr, ale nie mo¾e wyst¥pi† definicja innego makra. Pr¢ba wywoˆania przez makro samego siebie (lub innego zap(c)tlenia wywoˆywaä prowadz¥cego do nieskoäczonego rozwijania makr) jest wykrywana i sygnalizowana jako bˆ¥d. Parametry to oddzielone przecinkami symbole (parametry formalne makra), kt¢re mog¥ by† wykorzystywane w tre˜ci makra. Makro jest wywoˆywane poprzez umieszczenie jego nazwy w polu rozkazu danej linii programu. Przy wywoˆaniu podawane s¥ parametry aktualne makra. W czasie wstawiania makra w kod programu asembler zast(c)puje wszystkie parametry formalne parametrami aktualnymi. Asembler nie umo¾liwia tworzenia etykiet lokalnych w makrach. Je˜li wyst(c)puje taka potrzeba to mo¾na podawa† etykiet(c) (lub jej fragment) jako jeden z parametr¢w makra. Jest to mo¾liwe, gdy¾ zast(c)powanie parametr¢w formalnych parametrami aktualnymi odbywa si(c) na drodze podmieniania tekst¢w przed asemblacj¥ linii programu. Teksty te s¥ podmieniane niezale¾nie od tego, czy wyst(c)puj¥ w etykiecie, nazwie mnemonika, czy w tre˜ci operandu. ENDM (MACEND) - koniec definicji makra. --------------------------------------- Skˆadnia: ENDM Dyrektywa ENDM koäczy definicj(c) makra. Alternatywn¥ nazw¥ tej dyrektywy jest MACEND. Predefiniowane symbole. ======================= Rejestry funkcji specjalnych: Symbol Nazwa (opis) Adres ===================================================== ACC akumulator 0E0H B rejestr B 0F0H PSW rejestr stanu 0D0H SP wska"nik stosu 81H DPTR dwubajtowy wska"nik danych DPL mˆodszy bajt 82H DPH starszy bajt 83H P0 Port 0 80H P1 Port 1 90H P2 Port 2 0A0H P3 Port 3 0B0H IP rejestr kontroli priorytet¢w przerwaä 0B8H IE rejestr zezwoleä na przerwania 0A8H TMOD timery - tryby pracy 89H TCON timery - sterowanie 88H TH0 timer 0 starszy bajt 8CH TL0 timer 0 mˆodszy bajt 8AH TH1 timer 1 starszy bajt 8DH TL1 timer 1 mˆodszy bajt 8BH SCON sterownie transmisj¥ szeregow¥ 98H SBUF bufory transmisji szeregowej 99H PCON sterowanie trybami 'power down' 87H Bity adresowalne bezpo˜rednio Symbol Nazwa (opis) Adres ===================================================== P PSW.0 0D0H OV PSW.2 0D2H RS0 PSW.3 0D3H RS1 PSW.4 0D4H F0 PSW.5 0D5H AC PSW.6 0D6H CY PSW.7 0D7H RXD P3.0 0B0H TXD P3.1 0B1H INT0 P3.2 0B2H INT1 P3.3 0B3H T0 P3.4 0B4H T1 P3.5 0B5H WR P3.6 0B6H RD P3.7 0B7H PX0 IP.0 0B8H PT0 IP.1 0B9H PX1 IP.2 0BAH PT1 IP.3 0BBH PS IP.4 0BCH EX0 IE.0 0A8H ET0 IE.1 0A9H EX1 IE.2 0AAH ET1 IE.3 0ABH ES IE.4 0ACH EA IE.7 0AFH IT0 TCON.0 88H IE0 TCON.1 89H IT1 TCON.2 8AH IE1 TCON.3 8BH TR0 TCON.4 8CH TF0 TCON.5 8DH TR1 TCON.6 8EH TF1 TCON.7 8FH RI SCON.0 98H TI SCON.1 99H RB8 SCON.2 9AH TB8 SCON.3 9BH REN SCON.4 9CH SM2 SCON.5 9DH SM1 SCON.6 9EH SM0 SCON.7 9FH Urz¥dzenia zewn(c)trzne systemu DSM-51 Symbol Nazwa (opis) Adres ===================================================== CSIC sterownik przerwaä 00H CSDA przetwornik cyfrowo/analogowy 08H CSAD przetwornik analogowo/cyfrowy 10H CSMX multiplekser analogowy 18H CSKB0 klawiatura matrycowa, klawisze 0..7 21H CSKB1 klawiatura matrycowa, klawisze 8.. 22H CS55A ukˆad 8255 rejestr portu A 28H CS55B ukˆad 8255 rejestr portu B 29H CS55C ukˆad 8255 rejestr portu C 2AH CS55D ukˆad 8255 rejestr steruj¥cy 2BH CSDS wy˜wietlacz 7-segm, wyb¢r wska"nika 30H CSDB wy˜wietlacz 7-segm, bufor danych 38H CSMOD dekoder adres¢w (przeˆ¥czanie trybu) 40H LCDWC wy˜wietlacz LCD, wpis rozkaz¢w 80H LCDWD wy˜wietlacz LCD, wpis danych 81H LCDRC wy˜wietlacz LCD, odczyt stanu 82H LCDRD wy˜wietlacz LCD, odczyt danych 83H CSX zewn(c)trzna magistrala systemowa 0C0H Podprogramy standardowe w pami(c)ci EPROM systemu DSM-51 Symbol Nazwa (opis) Adres ===================================================== WRITE_TEXT wypisanie tekstu na LCD 8100H WRITE_DATA wypisanie znaku na LCD 8102H WRITE_HEX wypisanie liczby hex na LCD 8104H WRITE_INSTR wysˆanie rozkazu do LCD 8106H LCD_INIT inicjalizacja LCD 8108H LCD_OFF wygaszenie LCD 810AH LCD_CLR ustawienie w stan pocz¥tkowy 810CH DELAY_US op¢"nienie (2*A+6)*12/11.059 us 810EH DELAY_MS op¢"nienie A ms 8110H DELAY_100MS op¢"nienie A * 100ms 8112H WAIT_ENTER "PRESS ENTER." i czeka na ENTER 8114H WAIT_ENTER_NW czekanie na klawisz ENTER 8116H TEST_ENTER sprawdzenie klawisza ENTER 8118H WAIT_ENT_ESC czekanie na ENTER lub ESC 811AH WAIT_KEY czekanie na dowolny klawisz 811CH GET_NUM wczytanie liczby BCD (4 cyfry) 811EH BCD_HEX zamiana BCD na HEX 8120H HEX_BCD zamiana HEX na BCD 8122H MUL_2_2 mno¾enie liczb 2 bajtowych 8124H MUL_3_1 mno¾enie 3bajty * 1bajt 8126H DIV_2_1 dzielenie 2bajty / 1bajt 8128H DIV_4_2 dzielenie 4bajty / 2bajty 812AH Kolejne wersje programu: ======================== Data,wersja Opis -------------------------------------------------------- 1994 Asembler dwuprzebiegowy. v 0.90 12.09.95 Asembler jednoprzebiegowy. v 1.00 2.10.95 Zmiana opisu: 'Plik wyj˜ciowy:' v 1.01 na 'Plik wynikowy:'