Obliczanie adresów skoków w ASM51: AJMP i ACALL na przykładach hex

asm51: acall i ajmp





Poprzedni Następny
Wiadomość
Spis treści
From: "Bartosz Waleska" <combosoft_at_nospam_poczta.onet.pl>
Subject: asm51: acall i ajmp
Date: Fri, 4 Apr 2003 18:33:35 +0200


czesc!
Szukam informacji jak policzyc adres skoku tych polecen.

przyklady:

0001: 0106 -> AJMP pod adres 00006h
0017: 3186 -> ACALL pod adres 0186h
002D: 0132 -> AJMP pod adres 0032h

Jesli dobrze rozumiem to drugi bajt jest adresem, ale skad wiedziec czy skok
jest do przodu czy do tylu?

pozdrawiam,
Bartek.

PS. adres przed ":" oznacza bajt tego polecenia w kodzie zrodlowym, bajty
podawane w hex.



========
Path: news-archive.icm.edu.pl!news.icm.edu.pl!news.polbox.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "Pawel \"O'Pajak\"" <pavel(malpa)klub.chip.pl_at_nospam_niechciana.poczta.out>
Subject: Re: asm51: acall i ajmp
Date: Fri, 4 Apr 2003 19:54:07 +0200


Powitanko,
Szukam informacji jak policzyc adres skoku tych polecen.
0001: 0106 -> AJMP pod adres 00006h (...)

Zaraz, zaraz, adres jest chyba bezwzglednie podawany, zarowno dla AJMP, jak
i dla ACALL i obejmuje 2kB pamieci

Jesli dobrze rozumiem to drugi bajt jest adresem, ale skad wiedziec czy
skok
jest do przodu czy do tylu?

A ma to znaczenie? No dobra, moze ma, ale leci pod konkretny adres (11bitow)
przynajmiej jesli chodzi o '51.
Pozdroofka,
Pawel Chorzempa
--
"-Tato, po czym poznać małą szkodliwość społeczną?
-Po wielkiej szkodzie prywatnej" (kopyrajt: S. Mrożek)
Przy odpowiadaniu na priv zastanow sie nad moim adresem;-)


========
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsfeed.gazeta.pl!newsfeed.tpinternet.pl!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!sn-xit-03!sn-xit-01!sn-post-01!supernews.com!corp.supernews.com!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: Greg Sz <greg_sz_at_nospam_dsuper.net>
Subject: Re: asm51: acall i ajmp
Date: Fri, 04 Apr 2003 14:07:13 -0500


Bartosz Waleska wrote:

czesc!
Szukam informacji jak policzyc adres skoku tych polecen.

przyklady:

0001: 0106 -> AJMP pod adres 00006h
0017: 3186 -> ACALL pod adres 0186h
002D: 0132 -> AJMP pod adres 0032h

Jesli dobrze rozumiem to drugi bajt jest adresem, ale skad wiedziec czy skok
jest do przodu czy do tylu?

Drugi bajt jest mniejs znaczaca czescia adresu a bardziej znaczaca czesc jest
brana z PC (Program Counter) wiec jezeli nastepna instrukcja po AJMP czy ACALL
ma mniej znaczaca czesc adresu wieksza niz to ten adres skoku to skoczy do tylu.

W podanym przykladzie mniemam ze skok bedzie do przodu.
Pozdro
grzechu


========
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsfeed.gazeta.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "Zbino" <zew_at_nospam_NOSPAMpoczta.onet.pl>
Subject: Re: asm51: acall i ajmp
Date: Fri, 4 Apr 2003 22:54:56 +0200


Szukam informacji jak policzyc adres skoku tych polecen.

przyklady:

0001: 0106 -> AJMP pod adres 00006h
0017: 3186 -> ACALL pod adres 0186h
002D: 0132 -> AJMP pod adres 0032h

Jesli dobrze rozumiem to drugi bajt jest adresem, ale skad wiedziec czy
skok
jest do przodu czy do tylu?

Rozkaz AJMP składa się z dwu bajtów
pierwszy A10 A9 A8 0 0 0 0 1
drugi A7 A6 A5 A4 A3 A2 A1 A0

Rozkaz ACALL
pierwszy A10 A9 A8 1 0 0 0 1
drugi A7 A6 A5 A4 A3 A2 A1 A0

Skok następuje w obrębie 2K zaczynając od rozkazu następnego po rozkazie
AJMP
więc bity od A11 w górę nie są używane i zostają ustawione tak jak licznik
rozkazów ma na początku następnego rozkazu po AJMP czy ACALL natomiast do
licznika rozkazów przepisywana jest zawartość rozkazu AJMP czyli bity od A0
do A10
Zbyszek W


========
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: J.F. <jfox_at_nospam_poczta.onet.pl>
Subject: Re: asm51: acall i ajmp
Date: Sat, 05 Apr 2003 15:44:23 +0200


On Fri, 4 Apr 2003 18:33:35 +0200, Bartosz Waleska wrote:
0001: 0106 -> AJMP pod adres 00006h
0017: 3186 -> ACALL pod adres 0186h
002D: 0132 -> AJMP pod adres 0032h

Jesli dobrze rozumiem to drugi bajt jest adresem,

Drugi bajt i trzy najstarsze bity pierwszego - razem 11 bitow
adresujesz.

ale skad wiedziec czy skok jest do przodu czy do tylu?

To jest Absolute Jump - czyli skok pod podany adres. Czy to jest
"w przod" czy "w tyl" to zalezy od polozenia tej instrukcji.

Uwaga - te 11 bitow wchodzi do PC - starsze nie ulegaja zmianie,
czyli np "01 06" polozone pod adresem 1934h skocza pod
adres 1806h

J.


========
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsfeed.gazeta.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai