Tak sobie wlasnie przepisuje procedurki na asm i nadszedl szalony pomysl. Jak mikroprocesor zareaguje na taki oto kod?? Niestety nie moge sprawdzic :-/. Oczywiscie wykorzystuje zerowy bank rejestrow.
mov r0, #0 mov @r0, 0
Pozdrawiam Thomek
Tak sobie wlasnie przepisuje procedurki na asm i nadszedl szalony pomysl. Jak mikroprocesor zareaguje na taki oto kod?? Niestety nie moge sprawdzic :-/. Oczywiscie wykorzystuje zerowy bank rejestrow.
mov r0, #0 mov @r0, 0
Pozdrawiam Thomek
MOV RN,#data Move immediate data to register (12xclk) Czyli wyzeruje pierwszy rejestr zu¿ywaj±c na to 12 taktów zegara.
MOV @Ri,direct Move direct byte to indirect RAM (24xclk) Czyli w Twoim przypadku, odczyta to co w zerze i wpisze pod adres zero.
Na mój gust, te dwie instrukcje to tylko zmarnowane 36 taktów zegara. Byæ mo¿e celowo wprowadzone opó¼nienie wykonania nastêpnych instrukcji? Ale w 8051 asemblerze ju¿ daaaawno siê nie bawi³em - mo¿e to jaki¶ myk? :-)
Użytkownik Pszemol napisał: [..]
tylko z pozoru moze to wygladac na kruczek, w rzeczywistosci jest jak napisales, rownie "nielogiczne" jest polecenie x=x+1
momencik... x=x+1 to jest inkrementacja warto¶ci x o 1... nie widzê tu niczego nielogicznego :-) Natomiast przepisanie warto¶ci do tej samej komórki pamiêci z której ta warto¶æ zosta³a w³a¶nie odczytana to jakby d³ugi NOP. Nawiasem mówi±c, w niektórych procesorach nie ma specjalnej instrukcji NOP tylko do tych celów w³a¶nie wykorzystuje siê takie kombinacje rozkazów które nie robi± nic, np. w procesorach MIPS za NOPa robi zdaje siê wpisanie zera do rejestru zerowego (w którym i tak zawsze jest zero). Albo operacja typu "AND A,A" :-)
Tak sie wlasnie zastanawialem co sie stanie szkoda ze nie moge sprawdzic tego. Pewnie nic czyli w r0 nadal bedzie 0. Hmm a pytanie zadalem troche z nudow i czystej ciekawosci.
Pozdrawiam Thomek
Ok ;] Toche za wczenie wyslalem zanim hamster sciagnal inne wiadomosci. Dla mnie to jakies dziwne jednak kopiowac z tej samej komorki do tej samej dobrze wiedziec ze to dziala.
Pozdrawiam Thomek
Dlaczego ma nie dzia³aæ? Przecie¿ komputer to nie jest inteligentna maszyna - robi co siê mu ka¿e... To programista, uk³adaj±c kod programu ma wiedzieæ co program robi... Je¶li programista u³o¿y kod tak, aby ca³y czas procesor mozolnie wyci±ga³ z adresu zero warto¶æ i pod ten sam adres zero j± pakowa³, to procesor pos³usznie i bez glêdzenia bêdzie wykonywa³ te rozkazy, mimo i¿ ani sensu w tym nie ma, ani ¿adnego po¿ytku... Ale przecie¿ procesor "nie wie" co ma sens a co go nie ma - to maszyna która wykonuje rozkazy, nie zadaje przy tym zbêdnych pytañ, nie mêczy siê, nie bêdzie znu¿ony - o to w³a¶nie chodzi.
Użytkownik Pszemol napisał:
[..]dobrze ze dodales usmieszek bo bym se pomyslal ;) dla niezorientowanych - matematyk by dostal szalu :)
osobiscie z takimi sie dotad nie spotkalem, zapewne za malo ich rozgryzalem :)
Powtarzam, tym razem ca³kowicie powa¿nie - tu nie ma nic nielogicznego. Operator '=' w jêzyku C nie jest operatorem równo¶ci, jest operatorem PRZYPISANIA warto¶ci zmiennej... Matematyk ¿aden nie dosta³by sza³u, tylko zapyta³by czy przypadkiem operator '=' w tym zapisie nie oznacza czego¶ innego ni¿ w "normalnej" matematyce... We¼ pod uwagê, ¿e jêzyki programowania komputerów maj± niewiele wspólnego z zapisami matematycznymi... W szczególno¶ci, w jêzyku C++, mo¿esz sobie dowolnie definiowaæ operatory, i dla np. klasy obiektów jakiego¶ typu dowolny operator zdefiniowaæ sobie aby znaczy³ cokolwiek Ci przyjdzie do g³owy... Free up your mind! :-)
Tu zasadniczo nie ma nic nadzwyczajnego. instrukcje wykonujemy cyklicznie, dana zostanie pobrana, i potem zapisana, problemow nie ma.
w '51 jest pare rozkazow ktore moglyby budzic watpliwosci:
INC @R0 .. gdy R0 zawiera 0 XCH/XCHD A,@R0 .. . gdy R0 zawiera 0 XRL A,ACC
POP SP PUSH SP POP/PUSH gdy SP jest ustawiony .. na SP..
J.
Użytkownik Pszemol napisał: [..]
wiem to doskonale, niemniej gdy zglebialem tajniki BASIC'a na timex'ie mialem problemy ze zrozumieniem takiego "dzialania matematycznego" za co wowczas to bralem. i osoby nie myslace dwojkowo rowniez nad tym sie dluzej zastanowia o co w tym zapisie chodzi ;) [..]
Użytkownik J.F. napisał:
oto co zrobil symulator:
R0=01
dla XCH zawartosc A i R0 zostaja zamienione dla XCHD mlodsze 4 bity A i R0 zostaly zamienione
zeruje akumulator
jesli pod adresem 81h jest ram to powinno zadzialac, moj symulator sie wylozyl na tym "Wrong internal RAM address"
jak wyzej
Ja w ogóle nie wiedzia³em o co Ci chodzi jak pierwszy raz to napisa³e¶ w³a¶nie dlatego, ¿e od razu mi siê to odczyta³o w g³owie jako operacja przypisania a nie przyrównania :-)
AlexY <alexy@irc.-cut_this-.pl> napisał(a):
W Spectrun(Timexi) pisało sie: Let x=x+1 co ja rozumiałem jako :Niech x= tylo co w nim jest i do tego dodaj jeszcze 1 He he he.To były czasy :)
Pzdr. Piotrek Sz.
To były wspaniałe czasy. Dyskutowało się o wyższości Commodore na Spectrum i na odwrót. I oba stronnictwa mniej więcej zgodnie psioczyły na Atari 800 ;-)
Chyba co¶ ci sie pomyli³o... ZX Spectrum nie mia³o szans ani do Commodore ani do Atari 800. ¦wiête wojny by³y miedzy Atarowcami i Commodorowcami... Spectrumowcy zawsze byli w tyle :-)
Użytkownik Pszemol napisał:
uzylbym raczej zwrotu: na uboczu spectrumny byly dobre do sterowania C64 do tego uzywalem dosc namietnie i do tej pory posiadam ze 2-3 dzialajace sztuki, spalony uklad I/O (user portu) zastapilem mala plytka z paroma TTLami :) eh... a teraz pisze sie programy nie dbajac o takie rzeczy jak rozmiar ram czy szybkosc proca :(
Użytkownik Pszemol napisał:
[..]a to juz jest objaw zaawansowanego zboczenia informatycznego i trzeba pacjenta izolowac ;)
Na pecety mo¿e tak, ale elektronika to nie tylko pecety... Wci±¿ robi siê przecie¿ kompy "embedded" i tam zarówno czas wykonania programu jak i zajêto¶æ pamiêci jest wa¿na. W innym w±tku opisujê dwa projekty w których biorê udzia³, jeden ma motorolkê 68SEC000@18MHz i 8M flasha i 4M sram, inny ma proca nios2@20MHz i 4M flasha i 4M dram.
Użytkownik AlexY napisał:
Nie mam pod ręką... zaraz... nie mam pod ręką. Ale czy nie była ta instrukcja krótsza (pod wzgl. bajtowym) lub szybsza (mniej cykli) niż mov a|acc, #0 ?
W paru programach w assemblerze widziałem namiętnie używaną taką właśnie
- nie pamiętam czy pod '51 czy x86.
eL eS
Have something to add? Share your thoughts — no account required.
Ask the community — no account required