Właśnie siedzę i uczę sie asemblera na AVRy. Wszystko narazie idzie ładnie, wspomagam sie kilogramami dokumentacji, ale czegoś w niej nie rozumiem. Dokłądniej to chodzi o intrukcje skoków. Np. taka instrukcja RJMP. Jako argument podajemy jej adres pod jaki ma skoczyć. Wszystko ładnie pięknie. Ale dlaczego w AVR Instruction Set oraz w manualu do ATiny26 (na nim będę ćwiczył, narazie symulacja w AVR Studio) w sekcji Operations dla instrukcji RJMP jest napisane: PC <- PC + k + 1 Ja rozumiem to tak że do aktualnego stanu PC dodawany jest argument k oraz 1, i wartosć tego jest nowym licznikiem rozkazów. A tymczasem działa to tak ze licznik rozkazów zastępowany jest zinkrementowanym argumentem k. Gdybym miał opisać jak w rzeczywistosci działa instrukcja RJMP to napisałbym: PC <- k + 1 Gdzie tkwi błąd w moim rozumowaniu? I przy okazji zapytam się, czy jest jakiś sposób na ominięcie iluś rozkazów korzystajac z porównań i skoków, czy też muszę grupę rozkazów zetykietować i pomijać w programie skok do tej etykiety? Z góry dziękuje za pomoc :)
- posted
19 years ago