Stránka 1 z 6 123456 PosledníPoslední
Zobrazuji výsledky 1 až 20 z 103
  1. #1
    amiga autista Lisiak4's Avatar
    Datum registrace
    13.04.2009
    Město
    Brno - Bystrc
    Věk
    40
    Příspěvků
    1879
    Post Thanks / Like

    Výchozí 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:
    http://amigareview.amiga.sk/atlantid...ler-a-system-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?
    Amiga - PMD 85

  2. #2
    D.T.A. Software Studio DJM's Avatar
    Datum registrace
    03.02.2013
    Město
    Nitrianske Rudno
    Věk
    37
    Příspěvků
    907
    Post Thanks / Like

    Výchozí 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 v 18:30:19
    Amiga 1200T (E/Box)+BlizzardPPC 603p/363+060/66+BVision PPC+256MB+KS3.1+Cocolino+Lyra 2+Fast Ata MK-IV+320GB WD Blue 3200AAJB PATA HDD(PFS3)+dvdrw+dvd+cf2ide
    Amiga 1200+BlizzardPPC 603e/210+040/25+128MB+KS3.1+CF4GB(PFS3)

  3. Poděkovat Lisiak4 - tito lidé za příspěvek poděkovali
  4. #3
    amiga autista Lisiak4's Avatar
    Datum registrace
    13.04.2009
    Město
    Brno - Bystrc
    Věk
    40
    Příspěvků
    1879
    Post Thanks / Like

    Výchozí 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.
    Amiga - PMD 85

  5. Líbí se mi DJM - těmto lidem se příspěvek líbí
  6. #4
    ObiWanKen's Avatar
    Datum registrace
    25.01.2012
    Město
    Handlova
    Věk
    44
    Příspěvků
    498
    Post Thanks / Like

    Výchozí 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.

    Klikněte na obrázek pro zobrazení větší verze

Název: Pic01.jpg
Zobrazeno: 89
Velikost: 35,7 KB
ID: 6533
    MiST | Amiga 600 Furia EC020 | Amiga 1200 ACA 1231 | Sharp MZ800 | ZX Spectrum 48k | Didaktik M | Didaktik Gama | C64 U1541II | Atari 800XL | Atari 130XE U1MB+SIDE2.

  7. #5
    amiga autista Lisiak4's Avatar
    Datum registrace
    13.04.2009
    Město
    Brno - Bystrc
    Věk
    40
    Příspěvků
    1879
    Post Thanks / Like

    Výchozí 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.
    Amiga - PMD 85

  8. #6
    amiga autista Lisiak4's Avatar
    Datum registrace
    13.04.2009
    Město
    Brno - Bystrc
    Věk
    40
    Příspěvků
    1879
    Post Thanks / Like

    Výchozí O: Assembler - všeobecná logika

    Jak donutím ten editor v Asm-Pro, aby mi psal zdrojový text, tedy text černým písmem, když nechci uvést návěstí? Mezery tabulátorem dělám. Ale bez návěstí mi vždy začne psát bílý text co je asi špatně. A po startu Asm-Pro musím pořád odkliknout rozlišení. To se nedá nějak obejít, aby jsem nemusel udělat ten 1 klik? Je to prkotina, ale ptám se.
    Amiga - PMD 85

  9. #7
    ObiWanKen's Avatar
    Datum registrace
    25.01.2012
    Město
    Handlova
    Věk
    44
    Příspěvků
    498
    Post Thanks / Like

    Výchozí O: Assembler - všeobecná logika

    Farby si nastavujes v Preferences/Syntax colors, mozno mas nastavene ine ako je na mojom obrazku. Preto ine farby.
    V zaklade:
    V prvom stlpci (celkom vlavo) pises navestia.
    Dalej ked stlacis TAB pises instrukcie, mozes pouzit aj 2xTAB alebo aj 3xTAB.
    Ja osobne pouzivam 2xTAB.

    Aj rozlisenie nastavujes v Preferences, ako aj typ CPU a dalsie veci.
    Ak chces potom zapisat nastavenie, kliknes na SAVE/USE alebo z príkazového riadku zadas WP (Write Preferences).
    MiST | Amiga 600 Furia EC020 | Amiga 1200 ACA 1231 | Sharp MZ800 | ZX Spectrum 48k | Didaktik M | Didaktik Gama | C64 U1541II | Atari 800XL | Atari 130XE U1MB+SIDE2.

  10. #8
    amiga autista Lisiak4's Avatar
    Datum registrace
    13.04.2009
    Město
    Brno - Bystrc
    Věk
    40
    Příspěvků
    1879
    Post Thanks / Like

    Výchozí O: Assembler - všeobecná logika

    Ano všimol som si, že používaš 2 krát TAB, ale pletie ma, že keď začnem písať návestie ktoré je v bielej farbe ako u Teba a dám TAB, prejde sa v editore na čiernu farbu - tak ako u Teba. Ale keď nenapíšem návestie a dám TAB ostane mi farba písma biela, ako keby sa stále jednalo o návestie... .
    Amiga - PMD 85

  11. #9
    ObiWanKen's Avatar
    Datum registrace
    25.01.2012
    Město
    Handlova
    Věk
    44
    Příspěvků
    498
    Post Thanks / Like

    Výchozí O: Assembler - všeobecná logika

    Pre spresneneie, najake moje nastavenia.


    Klikněte na obrázek pro zobrazení větší verze

Název: Pic1.jpg
Zobrazeno: 68
Velikost: 120,8 KB
ID: 6549

    Klikněte na obrázek pro zobrazení větší verze

Název: Pic2.jpg
Zobrazeno: 57
Velikost: 108,8 KB
ID: 6550

    Klikněte na obrázek pro zobrazení větší verze

Název: Pic3.jpg
Zobrazeno: 62
Velikost: 81,4 KB
ID: 6551
    MiST | Amiga 600 Furia EC020 | Amiga 1200 ACA 1231 | Sharp MZ800 | ZX Spectrum 48k | Didaktik M | Didaktik Gama | C64 U1541II | Atari 800XL | Atari 130XE U1MB+SIDE2.

  12. Poděkovat Lisiak4 - tito lidé za příspěvek poděkovali
  13. #10
    ObiWanKen's Avatar
    Datum registrace
    25.01.2012
    Město
    Handlova
    Věk
    44
    Příspěvků
    498
    Post Thanks / Like

    Výchozí O: Assembler - všeobecná logika

    Quote Lisiak4 původně napsal: View Post
    Ano všimol som si, že používaš 2 krát TAB, ale pletie ma, že keď začnem písať návestie ktoré je v bielej farbe ako u Teba a dám TAB, prejde sa v editore na čiernu farbu - tak ako u Teba. Ale keď nenapíšem návestie a dám TAB ostane mi farba písma biela, ako keby sa stále jednalo o návestie... .
    Tomu nerozumiem, mne to po TAB zacne hned pisat Ciernou.
    MiST | Amiga 600 Furia EC020 | Amiga 1200 ACA 1231 | Sharp MZ800 | ZX Spectrum 48k | Didaktik M | Didaktik Gama | C64 U1541II | Atari 800XL | Atari 130XE U1MB+SIDE2.

  14. #11
    ObiWanKen's Avatar
    Datum registrace
    25.01.2012
    Město
    Handlova
    Věk
    44
    Příspěvků
    498
    Post Thanks / Like

    Výchozí O: Assembler - všeobecná logika

    Skontroluj nastavenie farieb. Alebo napis program a spusti kompilaciu.
    Len pre kontrolu
    MiST | Amiga 600 Furia EC020 | Amiga 1200 ACA 1231 | Sharp MZ800 | ZX Spectrum 48k | Didaktik M | Didaktik Gama | C64 U1541II | Atari 800XL | Atari 130XE U1MB+SIDE2.

  15. #12
    amiga autista Lisiak4's Avatar
    Datum registrace
    13.04.2009
    Město
    Brno - Bystrc
    Věk
    40
    Příspěvků
    1879
    Post Thanks / Like

    Výchozí O: Assembler - všeobecná logika

    Bolo to v tom nastavení farieb, ale to chovanie miatlo... . Díky!
    Amiga - PMD 85

  16. #13
    amiga autista Lisiak4's Avatar
    Datum registrace
    13.04.2009
    Město
    Brno - Bystrc
    Věk
    40
    Příspěvků
    1879
    Post Thanks / Like

    Výchozí O: Assembler - všeobecná logika

    Jen by mne něco zajímalo. Pokud pracujeme v rámci 1 byte se záporným číslem, máme k dispozici rozsah:
    -128 až 127

    Jeden datový registr je nám schopen uložit číslo maximálně o rozsahu 4 byte. To je když nepracujeme se záporným číslem:
    0 až 4,294,967,295 (to je OK)

    Pokud ale pracujeme se záporným číslem a tohle info je uvedeno v článku o Assembleru v Amiga Review tak pracujeme s maximálním rozsahem:
    -2,147,483,647 až +2,147,483,647
    tedy rozsah byl ukrácen o jedničku. Dle toho, jak se s záporným číslem pracuje v rozsahu 1 byte (tedy -128 až 127) by jsem čekal, že rozsah v rámci 4 byte bude:
    -2,147,483,648 až +2,147,483,647

    Né že by se v programování muselo pracovat zrovna s číslem -2,147,483,648 .
    Je tahle info z Amiga Review v pořádku? Nejaký logický důvod, proč tomu tak je, proč je práce se záporným číslem v rozsahu 4 byte ponížena o 1, když tomu tak s prací v rozsahu 1 byte není?
    Amiga - PMD 85

  17. #14
    ObiWanKen's Avatar
    Datum registrace
    25.01.2012
    Město
    Handlova
    Věk
    44
    Příspěvků
    498
    Post Thanks / Like

    Výchozí O: Assembler - všeobecná logika

    Je jedno co sa pise.

    V assemblery chod do príkazového riadku a zadaj:

    ? $7fffffff

    Vypise ti výsledok vo formate -> HEX DEC ASCI BIN. A toto cislo je aj najvacsie kladne cislo. Bit 31 je 0.

    Potom zadaj:
    ? $80000000

    a dostanes najmensie zaporne cislo, aj ked to vyzera na zapornu nulu.
    A zistis ci je chyba v AR alebo nie.
    Naposledy upravil ObiWanKen : 02.11.2015 v 11:26:08
    MiST | Amiga 600 Furia EC020 | Amiga 1200 ACA 1231 | Sharp MZ800 | ZX Spectrum 48k | Didaktik M | Didaktik Gama | C64 U1541II | Atari 800XL | Atari 130XE U1MB+SIDE2.

  18. Poděkovat Lisiak4 - tito lidé za příspěvek poděkovali
  19. #15
    amiga autista Lisiak4's Avatar
    Datum registrace
    13.04.2009
    Město
    Brno - Bystrc
    Věk
    40
    Příspěvků
    1879
    Post Thanks / Like

    Výchozí O: Assembler - všeobecná logika

    OK, je tam chyba. Najmenšie záporné číslo, ktoré sa nám vojde do datového registru je:
    -2,147,483,648
    Amiga - PMD 85

  20. #16
    amiga autista Lisiak4's Avatar
    Datum registrace
    13.04.2009
    Město
    Brno - Bystrc
    Věk
    40
    Příspěvků
    1879
    Post Thanks / Like

    Výchozí O: Assembler - všeobecná logika

    Je zaujímavé, že záporné čísla začínaju v druhej polovine celkového rozsahu hexa. Najnižšie číslo je ako prvé v tejto druhej polovine a ide to až do -1, čo je samozrejme FFFFFFFF.
    Amiga - PMD 85

  21. #17
    amiga autista Lisiak4's Avatar
    Datum registrace
    13.04.2009
    Město
    Brno - Bystrc
    Věk
    40
    Příspěvků
    1879
    Post Thanks / Like

    Výchozí O: Assembler - všeobecná logika

    OK,

    Vrátme sa k 2 príkladu z Amiga Review.
    Rozumiem tomu, že keď pretečie zásobník, že sa začne počítať znova od spodnej hranice ako mi to vysvetlil DJM (u -255ky som použil Lisiakovu logiku ). Zatiaľ neviem, ako povedať assembleru, že má pracovať so záporným číslom a teda s polovičným rozsahom (na to kľudne časom prídem ale riešim iné). Tomu prvému príkladu, kde je práca so záporným číslom použitá mám za to že rozumiem. No ale v druhom príklade pracujeme s rozsahom 0-255 a keď pripočítame k číslu 126 číslo 3, tak sme stále v rozsahu a výsledok je 129 bez príznaku.

    V ASM-PRO sú príznaky v mieste SR zobrazené takto "_ _ ..._ _... _ _ _ _ _" - tých 5 posledných podtržítok by malo patriť k 5 príznakom (X, N, Z, V, C). Pokiaľ mi stačí toto sledovať, tak keď pripočítam k číslu 254 číslo 3 pomocou ADD:

    Code:
    MOVE.B #$FE, D0
    MOVE.B #$3, D1
    ADD D0,D1; Lisiakova logika
    Tak sa mi zobrazí príznak N, teda "_ _... _ _..._ N _ _ _".
    Pracujem teda s ASM-PRO.

    Dajú sa vymazať tie registre aj nejako cez editor? Zatiaľ to robím pomocou MOVE, že do nich dám späť 0. Pred tým som vypínal a zapínal Assembler .
    Naposledy upravil Lisiak4 : 03.11.2015 v 10:57:47
    Amiga - PMD 85

  22. #18
    ObiWanKen's Avatar
    Datum registrace
    25.01.2012
    Město
    Handlova
    Věk
    44
    Příspěvků
    498
    Post Thanks / Like

    Výchozí O: Assembler - všeobecná logika

    Na nulovanie SR staci: MOVE.W #$0000,CCR

    Tvoj priklad ti nemeni SR pretoze pouzivas len

    ADD D0,D1

    a assembler takto zapisanu instrukciu kompiluje ako Word. Teda ADD.W D0,D1
    Nauc sa vzdy zapisovat o aku velkost sa jedna. Takze si to zmen na ADD.B D0,D1 a mas to aj so stavom SR.
    MiST | Amiga 600 Furia EC020 | Amiga 1200 ACA 1231 | Sharp MZ800 | ZX Spectrum 48k | Didaktik M | Didaktik Gama | C64 U1541II | Atari 800XL | Atari 130XE U1MB+SIDE2.

  23. Poděkovat Lisiak4 - tito lidé za příspěvek poděkovali
  24. #19
    amiga autista Lisiak4's Avatar
    Datum registrace
    13.04.2009
    Město
    Brno - Bystrc
    Věk
    40
    Příspěvků
    1879
    Post Thanks / Like

    Výchozí O: Assembler - všeobecná logika

    Sakra, mám za to, že som to skúšal a hodilo mi to chybu, teda som použil nejaký zlý zápis. OK!
    Amiga - PMD 85

  25. #20
    amiga autista Lisiak4's Avatar
    Datum registrace
    13.04.2009
    Město
    Brno - Bystrc
    Věk
    40
    Příspěvků
    1879
    Post Thanks / Like

    Výchozí O: Assembler - všeobecná logika

    Šmarjá, asi mi to už klaplo na mozog. To ako bol pojatý ten článok v Amiga Review ma strašne doplietlo, keď som sa snažil prácu so znamienkom a bez znamienka stále chápať ako 2 rozne príklady. Viem že vo vysvetlení tu to bolo písané, ale aj tak ma to úplne zmagorilo. To je tak krásne vymyslené! Tá práca s číslom s a bez znamienka!
    Amiga - PMD 85

Podobná témata

  1. Assembler tutorial
    By ObiWanKen in forum Ostatní
    Odpovědí: 22
    Poslední příspěvek: 21.08.2019, 19:18:18
  2. Vývojové prostředí - Assembler 68k
    By premo in forum Aplikace
    Odpovědí: 44
    Poslední příspěvek: 24.01.2016, 12:41:15
  3. Assembler App.path
    By ObiWanKen in forum Aplikace
    Odpovědí: 7
    Poslední příspěvek: 17.01.2013, 21:30:31

Povolení psaní zpráv

  • Nemůžete otevírat nová témata
  • Nemůžete odesílat odpovědi
  • Nemůžete připojovat přílohy
  • Nemůžete upravovat své příspěvky
  •  
Thumbnail Screenshots by Thumbshots