Oznámení

Sbalit
Aktuálně žádná oznámení.

Assembler - všeobecná logika

Sbalit
X
 
  • Filtr
  • Čas
  • Zobrazit
Vymazat vše
new posts

  • Lisiak
    odpověděl
    O: Assembler - všeobecná logika

    Dočítam si to čo je v Amiga Review a budem sa snáď hrať ďalej (a možno aj skor a nebudem čítať do konca). Ale neboj Obi, pokiaľ sa budem hrať ďalej k tomu tvojemu príkladu sa vrátim! Vďaka! Beriem to všetko, ako to príde a sa mi chce. Teraz už som kaput. Som chorý a mám migrénu už o moc viac nedám.

    Vložit komentář:


  • ObiWanKen
    odpověděl
    O: Assembler - všeobecná logika

    Skus jednoduchy cyklus:

    moveq #$00,d0
    Loop:
    add.b #$01,d0
    bpl loop

    rts

    Tento cyklus bude trvat pokial v D0 nebude zaporne cislo.
    Spusti si debugger/trasovanie prikazom AD a sipkou dole krokujes.

    Klikni pro plné zobrazení obrázku

Jméno: Pic01.jpg
Počet zobrazení: 1
Velikost: 35,7 KB
ID: 108661

    Vložit komentář:


  • Lisiak
    odpověděl
    O: Assembler - všeobecná logika

    Tvojmu vysvetleniu rozumiem. Ja som neskoncil s C len idem do toho, comu najmenej rozumiem. C, C++ a Assembler mám v hladáčiku a plánujem sa s týmito jazykmi hrať. Takže podľa chuti se budem venovať jednému z týchto 3 programovacích jazykov. Keď teda nebudem mať chuť na Assembler, začnem so základmi C++, alebo budem pokračovať s C kde som skončil. To že som sem dlhšie ohľadom C nenapísal neznamená, že som sa mu vobec nevenoval. V rámci klasického C sa nemám čo pýtať, alebo si vážne myslíš, že sa musím vždy na všetko pýtať? .

    Keď skončím s C tak skončím so všetkým a nie len s C. To by som ale urobil radosť pár ľudom. Ale nemáš šainu, ako veľmi to chcem zvládnuť tak aký koniec doprdele!

    Veľmi si vážim tvojich rád. Máš horúcu krv, ale to je len dobre. To je veľmi dobre! Najlepší predpoklad k tomu aby si si išiel svoju cestu. Nejlepší predpoklad k tomu, aby si nám tu zostal čo najdlhšie.

    Vložit komentář:


  • DJM
    odpověděl
    O: Assembler - všeobecná logika

    Tak uz si sa dal na asm ? Si robis srandu, nie ?

    Scitanie aj odcitanie sa na 68k robi rovnako aj so znamienkom aj bez znamienka.

    Cize ked das 126+3, tak vysledok je stale 129 ($81).
    Zalezi na tebe s akymi hodnotami robis (ci so znamienkom=signed alebo bez znamienka=unsigned).
    V Cecku si si dal bud BYTE alebo UBYTE.
    V Asm, ak mas na mysli so znamienkom kontrolujes si V priznak. Ak mas na mysli bez znamienka kontrolujes si C priznak v SR.

    K tej 1) :
    Ked mas rozsah od -128 do +127, tak 126+3 = -127 preto lebo si presiahol hornu hranicu rozsahu (overflow) a zvysok priratavas od spodnej hranice rozsahu. Keby si mal 126+4, tak ti vyjde -126, 126+5=-125, atd...
    Keby si bol v rozsahu, napr 123+3=126, tak ti nenastavi priznak pretecenia (overflow = V)

    k tej 2):
    Priznak prenosu sa nemeni z C na V ! Len sa nastavuje priznak V (pretecenie) a N (negativne). Je to koli tomu ako som pisal na zaciatku, 68k procesor scita 126+3 a vysledok je 129 a nastavi priznaky. Zalezi na programatorovi ako s tym nalozi, ci to bude brat ako 129 alebo ako -127.
    Ked si das napr. 254+3, tak ti vyjde 1 a nastavi sa priznak C a priznak X, lebo si prekrocil rozsah 255.
    Neviem ako si dostal -255, ked robis v rozsahu od 0 do 255.

    Plati, co si sa docital aj v AR: Rozdiel je len ten, akym sposobom hodnoty INTERPRETUJEME !
    Zase ti mozem odporucit, ak uz mas nainstalovany AsmOne alebo AsmPro, sprav si jednoduchy program, skompiluj a spust ho a pozri si hodnoty v registroch a priznaky...
    Neviem naco ti to tu vlastne pisem, aj tak sa na to vyprdnes ako na C....

    Au revoir !

    PS: Mal si dat nadpis: "Assembler - Lisiakova logika"
    Naposledy upravil DJM; 31.10.2015, 19:30:19.

    Vložit komentář:


  • Lisiak
    založil téma Assembler - všeobecná logika

    Assembler - všeobecná logika

    OK,

    dotaz, nějak mi nedává logiku to jak je zde něco vysvětleno. Použiji tedy svou zvrácenou logiku a omlouvám se, když napíšu pitomost, začínám a učím se!

    Článek Assembler a systém z Amiga Review 5:


    Citace z odstavce pro "Stavový registr SR"
    Nejlépe to ozřejmí příklad: Mějme BYTE SE ZNAMÉNKEM (A) a BYTE BEZ ZNAMÉNKA (B). Jak víte, rozsah (A) je od -128 do +127, rozsah (B) od 0 do 255. Jak (A) tak i (B) budou mít hodnotu 126 ($7E). Co se stane, když k (A) i (B) přičteme 3? V případě (A) dostaneme 126($7E)+3=129($81),což je mimo rozsah. Bude tedy nastaven příznak přenosu (overflow) a výsledná hodnota (A) bude po operaci -127($81). V případě (B) dostaneme 126($7E)+3 = 129($81), což je v platném rozsahu, takže příznak přenosu (carry) nastaven nebude. Všimněte si, že v obou případech je šestnáctková reprezentace čísel stejná, rozdíl je pouze ve způsobu, jakým tyto hodnoty interpretujeme.
    1) Citace: "V případě (A) dostaneme 126($7E)+3=129($81),což je mimo rozsah. Bude tedy nastaven příznak přenosu (overflow) a výsledná hodnota (A) bude po operaci -127($81)"
    Rozumím tomu, že jsme v prvním prípadě použili Byte se znaménkem (overflow). To "-" před 127 je tam kvůli tomu přetečení? Výslední hodnota "A" bude po operaci -127, proč je tedy zatím v závorce 129ka? (Hexa $81 = 129). Hodnota 129 bude ztracena?

    2) Citace: "V případě (B) dostaneme 126($7E)+3 = 129($81), což je v platném rozsahu, takže příznak přenosu (carry) nastaven nebude."
    Zde jsme použili Byte bez znaménka (příznak carry "C"). Proč se nám příznak přenosu změní z "C" na "V"? Jak se píše "takže příznak přenosu (carry) nastaven nebude."

    Dle mne ve 2) zůstane příznak přenosu "C". Jsme přeci pořád v rozsahu 1 Byte s příznakem "C" tedy v rozsahu 0-255 ne? Příznak "C" nebude nastaven, kdyby hodnota čísla přesáhla v případe 2) číslo 255 a pak by se změnil příznak z "C" na "V"? A pak by měla hodnota Bytu B číslo -255?
Zpracovávám...
X