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 :-)