kalabanga Opublikowano 1 Kwietnia 2005 Zgłoś Opublikowano 1 Kwietnia 2005 Witam. Mam problem, konkretnie do napisania makrodefinicję następującej składni mul src ; A<-(A*src) - czyli mnożenie, wynik trafia do akumulatora Do dyspozycji mam procesor o architekturze akumulatorowo-rejestrowej 8,16 i 32 bitowej. Do dyspozycji mam następujące rejestry: R0 ; 0 - stała 0 R1 ; A akumulator R2..R27 ; ogólnego przeznaczenia R29 ; COND rejestr warunku R30 ; MSW C=R30[0] R31 ; PC - licznik rozkazów Tryby adresowania: bezpośredni ( dst, src ), pośredni ( dst, src ), natychmiastowy ( src ), pośredni indeksowany ( dst, src ), pośredni indeksowany z przesunięciem ( dst, src ), pośredni indeksowany z przesunięciem i skalowaniem ( dst, src ). Oraz już wcześniej napisane rozkazy/składnie: cadc src ; ( COND!=0 ) => ( C||A<-A+src+C ) sta dst ; dst<-A nand src ; A<-not(A&src) or src ; A<-A|src add src ; A<-A+src sub src ; A<-A-src csubb src ; (COND!=0)=>(C||A<-A-src-C) bc #const ; względny skok warunkowy z flagą C xor src ; A<-A+src ( + - odpowiada xorowi ) lda A,#const ; A<-[#const] inc A ; A<-A+1 push Ri ; implementacja stosu, R28 - wskaźnik stosu, położenie elementu na stosie pop Ri ; jw., zdjęcie elementu ze stosu call #const ; wywołanie względne procedury ret ; powrót z procedury Każda pomoc mile widziana. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
^Garth^ Opublikowano 5 Kwietnia 2005 Zgłoś Opublikowano 5 Kwietnia 2005 najprosztsza wersja : mul <-> tutaj nazwa procedurki z parametrem do przekazania pobranie z akumulatora do R2 zapisanie src do R3 test: porownanie src do zera jezeli zero to skok do koniec w innym wypadku dodanie do A liczby z R2 dekrementacja R3 (lub odjecie 1 od niego) skok to test koniec: ret sorki ze tak ogolnie ale nie mam czasu wiecej pisac , byc moze trzeba bedzie stosu uzyc , ale da sie to ominac ,nie wiem tez czy te rozkazy to zamknieta lista czy nie , jezeli nie no to napewno jest rozkaz dekrementacji i przepisanie rejestru do rejestru , bo po strukturze rejestrow sadzac to moze to byc procesor avr aczkolwiek jezeli tak jest to mozna by skorzysac z rejestrow x,y,z (a konkretnie z x bo reszta na cos innego jest przeznaczona w tym wypadku) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...