Pytanie o asembler na DSM 51

Witam, zrobiłem programik w asemblerze na DSM-51. Ma on za zadanie rozłożyć daną liczbę załadowaną do akumulatora na setki, dziesiątki i jedności do poszczególnych rejestrów. Później program będzie tak przerobiony aby zamieniał liczby z systemy dziesiętnego na bin i hex. Ale póki co jest inny problem. Najpierw listing:

;++++++++ROZKLADATOR+++++++++ LJMP START ;TO MUSI BYC ORG 100H ;TO MUSI BYC START: MOV A,#142 ;laduje zadana liczbe do akumulatora MOV B,#10 ;laduje dzielnik do b czyli 10 DIV AB ;dzieli zawartosc akumulato przez b (10) ;wynik znajdzie sie w b MOV R2,B ;przenosci zawartosc b do R2 MOV B,#10 ;laduje jeszcze raz dzielnik do b DIV AB ;dzieli zawartosc akumulato przez b (10) ;wynik znajdzie sie w b MOV R1,B ;przenosci wynik dzielenia z b do R1 MOV R0,A ;przenosi ostatni wynik dzielenia do R0 LCALL LCD_CLR ;czysci wyswietlacz LCD MOV A,R0 ;przenosi zawartosc R0 do akumulatora LCALL WRITE_HEX ;wyswietla zawartosc akumulatora na LCD MOV A,R1 ;przenosi zawartosc R1 do akumulatora LCALL WRITE_HEX ;wyswietla zawartosc akumulatora na LCD MOV A,R2 ;przenosi zawartosc R2 do akumulatora LCALL WRITE_HEX ;wyswietla zawartosc akumulatora na LCD LJMP $ ;koniec

Dla przykładu wziąłem liczbę 142. Program rozkłada dobrze liczby ale w rejestrach pojawiają się liczby R0=01, R1=04 i R2=02 co po wyświetleniu daje na wyświetlaczu LCD napis "010402". Jak zrobić aby w rejestrach pojawiły się te liczby bez zer? Mam nadzieję, że w miarę jasno opisałem problem ;-) Dzięki z góry za pomoc :-)

Reply to
Robert Niestroj
Loading thread data ...

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.