Enterprise Forever  |  :HUN  |  Programozás  |  Topic: Assembly programozás
Author Topic: Assembly programozás  (Read 36022 times)« previous next »
hsoft
EP fan
*
Offline Offline

Posts: 112




View Profile
New Posts
« Reply #15 on: 2006.April.25. 08:27:05 »

Quote from: "Povi"
Hogyan lehet azt megoldani, hogy saját programból, ha kiadom az exdos parancsot, és abból esc-kel visszatérek, ne tűnjöm el a fél képernyő (amit az exdos kitakart).
Konkrétabban: az atomixben csináltam egy olyat, hogy ha megnyomom a kettőspontot, előugorjon az exdos. Ha kilépek, tök jól folytatódik minden ott, ahol abbamaradt, leszámítva azt, hogy üres a képernyő.

Az Exdos parancs egyszerüsítve a következő lépéseket végzi: Nyit egy videó csatornát, display utasítással kiteszi, ez EXOS hivással történik és a videó sorokat az lpt-ben átcímzi. Kilépésnél bezárja a videó csatornát.
Tehát a képernyő helyreállítás egyik módja, hogy végrehajtunk egy display hívást. Amikor nem használjuk az operációs rendszer videó csatornáját, vagyis valami direkt video memória kezelést alkalmazunk, akkor két lehetőség van. Ha tudjuk a videó soraink címeit, csak vissza cimezzük az lpt-sorokat. Amikor virtuális, tehát pl. görgetés miatt kiszámíthatatlanná vált a videócím, akkor célszerű lementeni az exdos parancs elötti lpt-t, és visszatéréskor vissza lehet irni.
Logged

Enterprise Forever
« Reply #15 on: 2006.April.25. 08:27:05 »

 Logged

lgb
EP fan
*
Offline Offline

Hungary

Posts: 238




View Profile WWW
New Posts
« Reply #16 on: 2006.June.14. 09:17:47 »

Hello! Sajat feljleszteseimet a cc65 (www.cc65.org) stuffokkal szoktam csinalni PC-n, ez 65xx cpu-khoz C fordito, assembler, linker, ennek assembler-et (ca65) szoktam hasznalni, mivel olyan dolgokat tud amit semmilyen mas stuff nem.
Persze, Z80-at nem ismer, ezert meg regebben elkezdtem csinalni egy olyan "pre assemblert" ami Z80 asm forrast megeszi, es kikop magabol olyan asm forrasat, amit a ca65 megeszik Smiley Ez ugy muxik gyakorlatilag, hogy .BYTE szekvenciakat hoz letre igy persze a ca65-nek onnantol mindegy hogy az milyen CPU-n ertelmezett vagy nem ... Elonye ennek, hogy ca65 meg az ld65 (a linker) minden jo tulajdonsaga igy rendelkezesre all Z80-as fejlesztesekhez is, ami mas altalam ismert eszkozzel nem lehetne biztositani.

Nos ezen projectem kapcsan utkoztem abba a kerdesbe, hogy milyen Z80 syntaxist szokas hasznalni assemblerekben, ugyis tobb fele is van ... Peldaul az sdcc (sdcc.sf.net) olyasmiket hasznal hogy:

ADC A,#12
LD L,12(IX)

Ahol az ADC-nel eleve az "A" el is hagyhato ugye, a # az viszont nem, mert az jelzi hogy nem memoriara hivatkozil (
lasd: LD A,2 - LD A,(2), ami sdcc assemberenel helyesen: LD A,#2 es LD A,(2) ha jol remlik), mig a "12(IX)" az
Offset(IX) formatumban van, de ugye mashol inkabb az (IX+12) a "normalis" jeloles.

Szoval eleg nagy a kavar, sajnos ninvs olyan nagy foku egyettertes mint pl 65xx asm syntax eseten. Ezert szeretnem osszeszedni az osszes koztudatban levo szintaxist, hogy minnel tobb dologgal elboldoguljon. Ha valakinek ez ugyben van tehat megjegyzese, akkor irjon Smiley
Logged

Zozosoft
EP addict
*
Offline Offline

Hungary

Posts: 5629




View Profile WWW
New Posts
« Reply #17 on: 2006.June.14. 09:24:18 »

Quote from: "lgb"
Peldaul az sdcc (sdcc.sf.net) olyasmiket hasznal hogy:

ADC A,#12
LD L,12(IX)

Ilyet most látok életemben elöször!

Quote
Szoval eleg nagy a kavar, sajnos ninvs olyan nagy foku egyettertes mint pl 65xx asm syntax eseten. Ezert szeretnem osszeszedni az osszes koztudatban levo szintaxist, hogy minnel tobb dologgal elboldoguljon. Ha valakinek ez ugyben van tehat megjegyzese, akkor irjon Smiley

Szerintem egyetértés van, legalábbis én EP-n meg egyébként is csak egyfajtát láttam, azt amit a hivatalos Zilog leírásokban is látni. Éppen ezért döbbentem meg az extrém elvadult példádon, hogy ki lehet olyan örült, hogy ilyet kitalál
Logged


tigrian
EP user
*
Offline Offline

Hungary

Posts: 406




View Profile WWW
New Posts
« Reply #18 on: 2006.June.14. 12:51:30 »

Quote from: "lgb"
...szeretnem osszeszedni az osszes koztudatban levo szintaxist

Ez nem ízlés kérdése.
http://www.z80.info/zip/z80cpu_um.pdf

Edit: Hmmm. Még mindig volt mit javítani benne Cheesy
http://www.zilog.com/docs/z80/um0080.pdf
Logged

re' mi' do' do sol

lgb
EP fan
*
Offline Offline

Hungary

Posts: 238




View Profile WWW
New Posts
« Reply #19 on: 2006.June.15. 08:31:12 »

Quote from: "Zozosoft"
Quote from: "lgb"
Peldaul az sdcc (sdcc.sf.net) olyasmiket hasznal hogy:

ADC A,#12
LD L,12(IX)

Ilyet most látok életemben elöször!

Quote
Szoval eleg nagy a kavar, sajnos ninvs olyan nagy foku egyettertes mint pl 65xx asm syntax eseten. Ezert szeretnem osszeszedni az osszes koztudatban levo szintaxist, hogy minnel tobb dologgal elboldoguljon. Ha valakinek ez ugyben van tehat megjegyzese, akkor irjon Smiley

Szerintem egyetértés van, legalábbis én EP-n meg egyébként is csak egyfajtát láttam, azt amit a hivatalos Zilog leírásokban is látni. Éppen ezért döbbentem meg az extrém elvadult példádon, hogy ki lehet olyan örült, hogy ilyet kitalál


Naja. De ha pl vki C nyelven akar fejleszteni, akkor Z80 eseten az sdcc az jo valasztas lehet, ami viszont ilyen asm output-ot keszit, tehat attol hogy neked (nekem se amugy!) nem tetszik ezzel is foglalkozni kell ;-( Legalabbis en igy erzem.
Logged

lgb
EP fan
*
Offline Offline

Hungary

Posts: 238




View Profile WWW
New Posts
« Reply #20 on: 2006.June.15. 08:32:20 »

Quote from: "tigrian"
Quote from: "lgb"
...szeretnem osszeszedni az osszes koztudatban levo szintaxist

Ez nem ízlés kérdése.
http://www.z80.info/zip/z80cpu_um.pdf

Edit: Hmmm. Még mindig volt mit javítani benne Cheesy
http://www.zilog.com/docs/z80/um0080.pdf


Amugy, a Z80-at egyebkent ismerem (nem dokumentalt dolgait is) a kerdesem nem is erre vonatkozott, hanem arra, hogy tobbfele syntaxis is hasznalatos assembly forrasokban mint a mellekelt abra mutatja ...
Logged

lgb
EP fan
*
Offline Offline

Hungary

Posts: 238




View Profile WWW
New Posts
« Reply #21 on: 2006.June.15. 08:53:32 »

Quote from: "tigrian"
Quote from: "lgb"
...szeretnem osszeszedni az osszes koztudatban levo szintaxist

Ez nem ízlés kérdése.
http://www.z80.info/zip/z80cpu_um.pdf

Edit: Hmmm. Még mindig volt mit javítani benne Cheesy
http://www.zilog.com/docs/z80/um0080.pdf


Masodsorban pedig IGENIS izles kerdese, mert ha van egy olyan cucc ami _ILYEN es OLYAN_ formatumot ad, akkor hiaba nem hivatalos az, hiaba nem tetszik stb stb, kenytelen vagy vele egyutt elni ha hasznalni akarod, ez ilyen egyszeru Smiley Most nem mondthatom meg az sdcc (meg az as-z80) keszitoinek hogy "hulyek vagytok szar a syntaxis" attol valszeg nem lesznek meghatva kulonoskeppen max azt valaszolnak hogy nem kotelezo hasznalni ha nem tetszik. De nekem pont az, hogy szuksegem lenne ra ...

Amugy ez mar eleve nem olyan egyszeru pl x86-on sem, mint ismert ott is ket fo formatum van, az Initel es az AT&T syntaxis, mely utobbit hasznalja pl a gas/gcc is, es elso latasra eleg durva, eleve forditva van a ket operandus, hogy masrol ne is beszeljek):

 __asm__ __volatile__(        
              "1:      mov" "b" " %2,%" "b" "1\n"        
              "2:\n"        
              ".section .fixup,\"ax\"\n"        
              "3:      movl %3,%0\n"        
              "        xor" "b" " %" "b" "1,%" "b" "1\n"        
              "        jmp 2b\n"        
              ".section __ex_table,\"a\"\n"        
              "        .align 4\n"        
              "        .long 1b,3b\n"        
              ".text"        : "=r"(__gu_err), "=q" (__gu_val): "m"((*(struct __large_struct *)
                            (   __gu_addr   )) ), "i"(- 14 ), "0"(  __gu_err  )) ;
              break;      

Ez AT&T syntaxist hasznalno gcc inline assmbler betet volt eppen ;-> Lathato hogy allatira nem trivialis (google-el erdemes rakeresni arra hogy "black magic gcc assembly" ds_icon_wink

Amugy ez az AT&T syntaxis pl tobbe kevesbe kvazi standard UNIX vagy UNIX szeru rendszereken, tobbfele CPU-n is (max ofkoz maguk az opcode-ok masok).

Ezt most csak peldanak mondtam, hogy milyen nehez kerdes is az, hogy mi az "izles kerdese" meg mi nem ...

Raadasul, ha mar x86, az sem egyszeru kerdes, hogy kitalalja az assembler, eppen milyen cimzesmodot hasznalna szerencsetlen programozo, nezzunk egy peldat:

mov ax,label

Namost jo kerdes, hogy most az AX regiszterbe a label cimke cimen levo word-ot kell betolteni, vagy magat a cimet. Itt pl total keveredes van x86 assemblereknek. A NASM (Netwide Assembler) pl ezert ilyet nem is enged, es MEGKOVETELI, hogy a programozo egyertelmuen jelezze mit akar, ott pl a fenti forma a CIMRE vonatkozik, a [label] pedig a cimen levo ertekre. Pl 65xx cpu-kon mar eleve a "hivatalos" syntaxis is felkeszult erre, es # jelet hasznalja arra, hogy jelezze ez bizony egy konstans, es nem cim, azaz pl az "LDA #1" 1-es erteket tolti be az akkumlatorba, mig az "LDA 1" az az 1-es cimmel rendelkezo byte tartalmat ( hasonlo lenne az x86-os mov ax,label vagy mox ax,[label], ahol keveres is van mert nehol pl mov ax,offset label syntaxist is hasznalnak az "offset" szoval jelezve hogy a label offsetje kell, mint lathato minden CPU-n kurva nagy kavarodas van, sot assemblerenkent valtozik)!

Persze ez elvileg Z80 eseten is megvan, ahol ugye ilyesmire szokas hasznalni a (...) jeleket, viszont pl ezt se erzem mindenhol logikusnak. Valoszinuleg az scc/as-z80 keszitoi azert akartak egy EGYERTELMU es konnyeben ertelmezheto jelolesrendszert bevezetni (ami amugy nemikepp az 65xx szintaxisra hasonlit, ami azert is gyanus, mert amugy azt is tamogatja az 65xx procikat legalabbis ami a mellekelt assemblereket as-* illeti).
Logged

Zozosoft
EP addict
*
Offline Offline

Hungary

Posts: 5629




View Profile WWW
New Posts
« Reply #22 on: 2006.June.15. 08:58:16 »

Quote from: "lgb"

Persze ez elvileg Z80 eseten is megvan, ahol ugye ilyesmire szokas hasznalni a (...) jeleket, viszont pl ezt se erzem mindenhol logikusnak.

Hol nem logikus szerinted?
Logged


lgb
EP fan
*
Offline Offline

Hungary

Posts: 238




View Profile WWW
New Posts
« Reply #23 on: 2006.June.15. 09:44:07 »

Quote from: "Zozosoft"
Quote from: "lgb"

Persze ez elvileg Z80 eseten is megvan, ahol ugye ilyesmire szokas hasznalni a (...) jeleket, viszont pl ezt se erzem mindenhol logikusnak.

Hol nem logikus szerinted?


Globalisan pl. Hogy minden CPU-nak miert kell tok mas asm syntaxis, marmint nyilvan az opcode-ok jeloleset leszamitva? Pl az AT&T syntaxis egyik erdekessege hogy ugyanugy jeloli a cimzesmodokat kulonbozo CPU-n is, meg az egyes CPU gyartok altalaban valami sajat format talalnak ki tok hasonlo dolgokra is, pl MOS 65xx esten LDA #1, mig x86 eseten mov ax,1, az hagyjan hogy LDA !=MOV (mert eleve nem lehet egy cpu-n olyan opcode aminek nincs is kozvetlen megfeleltetese) de a cimzesmod jeloles stb is tok mas. Ezert szoktal valasztani hogy valami konnyebben parse-olhato es egysegsebb format hasznaljanak, hogy ne kelljen az embernek 1234943947db syntaxist megjegyeznie ha mondjuk tobb cpu-ra is programozik assembly-ben (a mar soXor emlitett AT&T szintaxis pl pont ezt akarja behozni, hogy nagyjabol hasonlo legyen meg teljesen kulonbozo CPU-k eseten is, es ne legyen tok mas assember/cpu fuggo).

Na ezzel _NEM_ azt akarom mondani hogy a Zilog altal specifikalt formatum ne lenne jo nekem, csak azt akartam bemutatni, hogy milyen indittatasbol vannak esetleg mas formatumok is, amit en azert akarok tamogatni, hogy mas tool-okkal egyutt tudjak mukodni Smiley Pont ezert kerdeztem, hogy talalkozott-e valaki mas "extrem" vagy kevesbe kozismert synataxisokkal amit esetleg megfontolas targyava lehetne tenni hogy tudjak "konvertalni" a mar vazolt modszerrel.

Igazabol a konkret esetre valo logikussag kerdese azert jott elo itt nalam, mert a Zilog prezentalt formatum kozel konzisztens, de ha tobb formatumot pl keverni akarod akkor nem az, ami problemakat vet fel, ha mindegyiket tamogatni akarom Smiley Ez persze nem a Zilog hibaja, nyilvan. Viszont az teny, hogy nekem valahogy meg kell kuzdenem vele, ami egy csomo heurisztikat igenyel emiatt a konverterem reszerol, tehat nem egy egyszeru nota ...
Logged

Zozosoft
EP addict
*
Offline Offline

Hungary

Posts: 5629




View Profile WWW
New Posts
« Reply #24 on: 2006.September.07. 09:59:26 »

Quote from: "Spidermans Friend"
Én sem értem a hívás működését, pl. honna tudja a visszatérési címet, meg ilyesmi.

A visszatérési címet a HL tartalmazza, amelyet a hívás elött a hívó JP utánra állítunk be.
Macró nélkül:
Code:

      LD HL,RETC
      JP rutin
RETC  ...


rutin ...


      JP (HL)


A macro miatt nem lehet cimkét használni, így a fordítási címszámláló segítségével van megadva a visszatérési cím, mivel az LD HL és a JP is 3 bájtos utasítások, így lett az LD HL,$+6 forma. Illetve a másik makroban van még egy JP, így ott $+9

Quote from: "Spidermans Friend"
De úgy általában is érdekelne a Z80 gépi kód, azon belül az EP programozás. PC-n már assemblyztem, utoljára kb. 10 éve... Ha valakinek van türelme válaszolgatni, az Assembly topikban alkalomadtán kérdezgetnék, vagy ajánlhatnátok valami okítóanyagot.

Tessék lehet kérdezgetni

Irodalomból ajánlott a Gépi Kódú Programozás, meg az Enterpress cikksorozatai.
Logged


Spidermans Friend
EP fan
*
Offline Offline

Posts: 103



View Profile
New Posts
« Reply #25 on: 2006.September.07. 12:51:59 »

Köszi, sejtettem, hogy a dollárjel a főszereplő. Még egy kicsit így is magas, de ha átnézem, biztos megértem. Most viszont munka...
Logged

hsoft
EP fan
*
Offline Offline

Posts: 112




View Profile
New Posts
« Reply #26 on: 2006.September.08. 10:13:44 »

Quote from: "Zozosoft"

A macro miatt nem lehet cimkét használni,

Én úgy emléxem, hogy volt rá valami megoldás...
Logged

Zozosoft
EP addict
*
Offline Offline

Hungary

Posts: 5629




View Profile WWW
New Posts
« Reply #27 on: 2006.September.08. 10:24:51 »

Quote from: "hsoft"
Én úgy emléxem, hogy volt rá valami megoldás...

Az jó lenne!
Itt a Heass leírásban nincs szó ilyenről
A második használatánál a macronak már azt írja ki, hogy a szimbólum már létezik.
Logged


hsoft
EP fan
*
Offline Offline

Posts: 112




View Profile
New Posts
« Reply #28 on: 2006.September.08. 19:07:37 »

Sajnos én sem találtam benne, tehát marad a dolláros kifejezés. Viszont akkor a GEN-ből emlékeztem ilyenre.
Logged

Zozosoft
EP addict
*
Offline Offline

Hungary

Posts: 5629




View Profile WWW
New Posts
« Reply #29 on: 2006.September.09. 20:43:28 »

Quote from: "hsoft"
Sajnos én sem találtam benne, tehát marad a dolláros kifejezés. Viszont akkor a GEN-ből emlékeztem ilyenre.

És a Heass 1.1.-ben benne lesz?
Logged


Enterprise Forever
« Reply #29 on: 2006.September.09. 20:43:28 »

 Logged
Tags:
Enterprise Forever  |  :HUN  |  Programozás  |  Topic: Assembly programozás

Powered by SMF 1.1.2 | SMF © 2006-2007, Simple Machines LLC
Seo4Smf v0.2 © Webmaster's Talks

Template made by Mr.Prise
Page created in 0.104 seconds with 25 queries.
Google visited last this page 2012.May.18. 10:03:50
Follow ep4ever_news on Twitter