XantiO Opublikowano 22 Maja 2011 Zgłoś Opublikowano 22 Maja 2011 Witam Chodzi o to, że po dopisaniu nowej instrukcji JZ wyskakuje problem przy kompilowaniu wskazujący na linie z tą instrukcją LJMP START ORG 100HSTART: LCALL LCD_CLR MOV A, #'P' LCALL WRITE_DATA MOV A, #'i' LCALL WRITE_DATA MOV A, #'s' LCALL WRITE_DATA MOV A, #'z' LCALL WRITE_DATASTARTN: LCALL WAIT_KEY MOV R0, A LCALL PISZ_BCD MOV R5, A LCALL LCD_CLR MOV A, #'1' LCALL WRITE_DATA MOV A, #'+' LCALL WRITE_DATA MOV A, #' ' LCALL WRITE_DATA MOV A, #'2' LCALL WRITE_DATA MOV A, #'-' LCALL WRITE_DATA MOV A, #' ' LCALL WRITE_DATA MOV A, #'3' LCALL WRITE_DATA MOV A, #'*' LCALL WRITE_DATA MOV A, #' ' LCALL WRITE_DATA MOV A, #'4' LCALL WRITE_DATA MOV A, #'/' LCALL WRITE_DATA MOV A, #' ' LCALL WRITE_DATA MOV A, #' ' LCALL WRITE_DATA MOV A, #' ' LCALL WRITE_DATA MOV A, #' ' LCALL WRITE_DATA MOV A, #' ' LCALL WRITE_DATA MOV R4, A MOV A, R5 LCALL WRITE_HEX ;wyświetl na LCD MOV A, R4 LCALL WAIT_KEY MOV R7, A MOV A, R0 MOV A, #' ' LCALL WRITE_DATA MOV A, R7 SUBB A, #10 JZ DODAJ MOV A, R7 SUBB A, #11 JZ ODEJMIJ MOV A, R7 SUBB A, #12 JZ MNOZ MOV A, R7 SUBB A, #13 JZ DZIEL LJMP STARTWYNIKI: MOV R3, A MOV A, R1 LCALL PISZ_BCD MOV A, #' ' LCALL WRITE_DATA MOV A, #'=' LCALL WRITE_DATA MOV A, #' ' LCALL WRITE_DATA MOV A, R3 LCALL PISZ_BCD LCALL WAIT_KEY LJMP STARTNDODAJ: MOV A, #'+' LCALL WRITE_DATA MOV A, #' ' LCALL WRITE_DATA LCALL WAIT_KEY MOV R1, A MOV B, R1 MOV A, R0 ADD A, B LJMP WYNIKIODEJMIJ: MOV A, #'-' LCALL WRITE_DATA MOV A, #' ' LCALL WRITE_DATA LCALL WAIT_KEY MOV R1, A MOV B, R1 MOV A, R0 CLR C SUBB A, B LJMP WYNIKIMNOZ: MOV A, #'*' LCALL WRITE_DATA MOV A, #' ' LCALL WRITE_DATA LCALL WAIT_KEY MOV R1, A LCALL PISZ_BCD MOV A, #' ' LCALL WRITE_DATA MOV A, #'=' LCALL WRITE_DATA MOV A, #' ' LCALL WRITE_DATA MOV B, R1 MOV A, R0 MUL AB MOV B, #100 DIV AB LCALL PISZ_BCD MOV A, B LCALL PISZ_BCD LCALL WAIT_KEY LJMP STARTNDZIEL: MOV A, #'/' LCALL WRITE_DATA MOV A, #' ' LCALL WRITE_DATA LCALL WAIT_KEY MOV R1,A LCALL PISZ_BCD MOV A, #' ' LCALL WRITE_DATA MOV A, #'=' LCALL WRITE_DATA MOV A, #' LCALL WRITE_DATA MOV B, R1 MOV A, R0 DIV AB LCALL PISZ_BCD MOV A, B LCALL PISZ_BCD LCALL WAIT_KEY LJMP STARTNPISZ_BCD: PUSH B MOV B,#10 ;\ DIV AB ; \ ; > zamiana na BCD SWAP A ; / ADD A,B ;/ PUSH ACC LCALL WRITE_HEX POP ACC POP B RET Błąd pojawia się w tej lini JZ DZIEL Prosił bym o pomoc Czym może być to spowodowane? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Quad Opublikowano 23 Maja 2011 Zgłoś Opublikowano 23 Maja 2011 Nie wiem na co ten program (uc jakis?) i nikt jeszcze nie odpowiedzial wiec strzele - za daleki skok ;) ? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
XantiO Opublikowano 23 Maja 2011 Zgłoś Opublikowano 23 Maja 2011 Problem został rozwiązany. Tak był to za daleki skok :D program jest na DSM-51 więc nic specjalnego ale w szkole to jest "super" sprzęt :D Teraz męczę się z obsługą wyświetlacza 7-segmentowego Przeklęty asembler ;/ jak bym mógł to zrobić w c++ to 20 minut i gotowe a tak to siedzę i się męczę ;/ Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
XantiO Opublikowano 24 Maja 2011 Zgłoś Opublikowano 24 Maja 2011 Pomoże mi ktoś w uporaniu się z wyświetlaczem 7-segmentowym prosił bym o wytłumaczenie co i jak robić aby wyświetlić zawartość akumulatora czyli w moim przypadku wynik z działania Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Trawienny Opublikowano 24 Maja 2011 Zgłoś Opublikowano 24 Maja 2011 (edytowane) Najprosciej zrobic sobie w pamieci tablice cyfr - dla 0 zapalone sa segmenty A0 A1 A2 A5 A6 A7 (strzelam bo nie wiem jak sobie je oznaczysz), dla 1 zapalone sa segmenty... itd. Potem juz tylko rozbicie wyniku na jednostki, dziesiatki i setki. Nastepnie - wyswietl setki - zaswiec pierwszy wyswietlacz segmentowy odpowiednimi wartosciami (pobranymi z tabeli - jump do poczatku tabeli + przesuniecie o wartosc setek/dziesiatek/jednostek), potem wyswietl dziesiatki - zaswiec drugi wyswietlacz segmentowy odpowiednimi wartosciami... itd Dasz rade :) Edytowane 24 Maja 2011 przez Trawienny Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
XantiO Opublikowano 24 Maja 2011 Zgłoś Opublikowano 24 Maja 2011 dzięki za wskazówki miejmy nadzieje że się uda Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...