Skocz do zawartości
kalabanga

Makrodefinicje

Rekomendowane odpowiedzi

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.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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)

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ę...