Skocz do zawartości
XantiO

[Asmembler]Problem z instrukcją JZ

Rekomendowane odpowiedzi

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?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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ę ;/

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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 przez Trawienny

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...