Oznámení

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

Assembler - všeobecná logika

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

  • Lisiak4
    odpověděl
    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í?

    Vložit komentář:


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

    Bolo to v tom nastavení farieb, ale to chovanie miatlo... . Díky!

    Vložit komentář:


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

    Skontroluj nastavenie farieb. Alebo napis program a spusti kompilaciu.
    Len pre kontrolu

    Vložit komentář:


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

    Autorem citovaného textu je Lisiak4 Přejít na původní příspěvek
    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.

    Vložit komentář:


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

    Pre spresneneie, najake moje nastavenia.


    Klikni pro plné zobrazení obrázku

Jméno: Pic1.jpg
Počet zobrazení: 1
Velikost: 120,8 KB
ID: 108662

    Klikni pro plné zobrazení obrázku

Jméno: Pic2.jpg
Počet zobrazení: 1
Velikost: 108,8 KB
ID: 108663

    Klikni pro plné zobrazení obrázku

Jméno: Pic3.jpg
Počet zobrazení: 1
Velikost: 81,4 KB
ID: 108664

    Vložit komentář:


  • Lisiak4
    odpověděl
    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... .

    Vložit komentář:


  • ObiWanKen
    odpověděl
    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).

    Vložit komentář:


  • Lisiak4
    odpověděl
    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.

    Vložit komentář:


  • Lisiak4
    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ář:


  • Lisiak4
    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
    D.T.A. Software Studio

  • 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"
    DJM
    D.T.A. Software Studio
    Naposledy upravil DJM; 31.10.2015, 18:30:19.

    Vložit komentář:


  • Lisiak4
    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:
    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?
Zpracovávám...
X