Welcome, Guest. Please login or register.


Author Topic: Assembly programozás (Read 199605 times)

Offline Ferro73

  • EP lover
  • *
  • Posts: 819
  • Country: hu
  • OS:
  • Linux (Ubuntu) Linux (Ubuntu)
  • Browser:
  • Firefox 39.0 Firefox 39.0
    • View Profile
Re: Assembly programozás
« Reply #930 on: 2015.July.21. 21:22:11 »
Én másképp közelítem, nem egyesével vonom ki a 10 000, 1 000, 100, 10, 1

 LD IX,tizes számrendsze
 LD HL=nnnn
 LD DE=8000 ;decimális
 LD B,4
ezeres
   IF HL-DE>=0 THEN
     SET 0,(IX)
     HL=HL-DE
     (IX)=(IX)*2
   ENDIF
  DE=DE/2
  DJNZ  ezeres

 INC IX
 LD DE=800 ;decimális
 LD B,4
százas
   IF HL-DE>=0 THEN
     SET 0,(IX)
     HL=HL-DE
     (IX)=(IX)*2
   ENDIF
  DE=DE/2
  DJNZ  százas
  INX IX

 LD DE=80 ;decimális
 LD B,4
tízes
   IF HL-DE>=0 THEN
     SET 0,(IX)
     HL=HL-DE
     (IX)=(IX)*2
   ENDIF
  DE=DE/2
  DJNZ  tízes

 INC IX
 LD DE=8 ;decimális
 LD B,4
egyes
   IF HL-DE>=0 THEN
     SET 0,(IX)
     HL=HL-DE
     (IX)=(IX)*2
   ENDIF
  DE=DE/2
  DJNZ egyes

Még nem minden tiszta de valami ilyesmi
Úgy vélem ez gyorsabb megoldás lenne.
Remélem azért érthető.

Offline Attus

  • EP addict
  • *
  • Posts: 1231
  • Country: hu
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 39.0 Firefox 39.0
    • View Profile
Re: Assembly programozás
« Reply #931 on: 2015.July.22. 12:47:32 »
Ez milyen assembler?
A simában nincs osztás, szorzás, "if  then", legfeljebb makrózva.
Ez már egy magasabb szint.
A HL=HL-DE megfelelője is: sbc hl,de.
« Last Edit: 2015.July.22. 12:51:01 by Attus »

Offline Povi

  • EP addict
  • *
  • Posts: 2120
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 39.0 Firefox 39.0
    • View Profile
    • http://povi.fw.hu
Re: Assembly programozás
« Reply #932 on: 2015.July.22. 13:33:04 »
Csináltam egy érdekes statisztikát, hogy melyek a leggyakrabban használt utasítások.
Először is megírtam az Intel 8008 emulációt PC-re is. Itt futtattam a SCELBI-t, majd egy nagyon egyszerű BASIC program futása után megnéztem, melyik utasításból hány futott le a "bekapcsolás" óta.

139508 utasítást darált le a proci:

11963 - CAL a16       // CALL
 9874 - LAM              // LD A,(HL)
 9706 - INL              // INC L
 7527 - RET
 6839 - LLI              // LD L, xx
 5010 - DCB           // DEC B

Z80-nál nyílván más lenne az eredmény, főleg az INC L sokkal hátrébb foglalna helyet, de mivel itt nincs INC HL, kénytelenek külön növelni az alsó- és felső-bájtot (ha kell)

Az EP emu-ba érdekes lenne egy ilyen statisztikát számoló részt belerakni...
*** Speicherplatz zu klein

Offline lgb

  • EP addict
  • *
  • Posts: 3555
  • Country: hu
  • æðsta yfirmaður
  • OS:
  • Linux (Ubuntu) Linux (Ubuntu)
  • Browser:
  • Firefox 39.0 Firefox 39.0
    • View Profile
    • http://lgb.hu/
Re: Assembly programozás
« Reply #933 on: 2015.July.22. 15:16:33 »
Ez milyen assembler?
A simában nincs osztás, szorzás, "if  then", legfeljebb makrózva.
Ez már egy magasabb szint.
A HL=HL-DE megfelelője is: sbc hl,de.

Szerintem ez kb "pseudo-kod" akart lenni, azaz kozvetlenul persze nem fordithato igy le, ilyet csinal az ember, ha pl csak fejben kepzeli el elso lepesben, es meg ki sem probalta :) Gondolom en ....

Offline lgb

  • EP addict
  • *
  • Posts: 3555
  • Country: hu
  • æðsta yfirmaður
  • OS:
  • Linux (Ubuntu) Linux (Ubuntu)
  • Browser:
  • Firefox 39.0 Firefox 39.0
    • View Profile
    • http://lgb.hu/
Re: Assembly programozás
« Reply #934 on: 2015.July.22. 15:24:58 »
Csináltam egy érdekes statisztikát, hogy melyek a leggyakrabban használt utasítások.

Kicsit off, de pl allitolag a 68060 (talan ...) tervezesenel is elemeztek rengeteg software-t, hogy megis milyen opcode-okat hasznalnak, es azt probaltak gyorsabba tenni, amik gyakrabban fordultak elo.

Offline Attus

  • EP addict
  • *
  • Posts: 1231
  • Country: hu
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 39.0 Firefox 39.0
    • View Profile
Re: Assembly programozás
« Reply #935 on: 2015.July.22. 16:22:53 »
Szerintem ez kb "pseudo-kod" akart lenni, azaz kozvetlenul persze nem fordithato igy le, ilyet csinal az ember, ha pl csak fejben kepzeli el elso lepesben, es meg ki sem probalta :) Gondolom en ....
Értem.:)

Offline Ferro73

  • EP lover
  • *
  • Posts: 819
  • Country: hu
  • OS:
  • Linux (Ubuntu) Linux (Ubuntu)
  • Browser:
  • Firefox 39.0 Firefox 39.0
    • View Profile
Re: Assembly programozás
« Reply #936 on: 2015.July.22. 19:54:19 »
Ez milyen assembler?
A simában nincs osztás, szorzás, "if  then", legfeljebb makrózva.
Ez már egy magasabb szint.
A HL=HL-DE megfelelője is: sbc hl,de.
Nem is kezdtem ORG -al
Ez vázlat volt főleg az osztás és szorzás miatt  RRA vagy RLA nem mindegy.
Mivel már nem nap mint nap programozok ezek össze mosódnak.
Egyébként szerintem meglehetett értani, hogy mit akartam mondani.



Online Z80System

  • EP addict
  • *
  • Posts: 3842
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Chrome 45.0.2454.101 Chrome 45.0.2454.101
    • View Profile
Re: Assembly programozás
« Reply #937 on: 2015.October.05. 23:42:09 »
Na, megint elolvastam a sjasm doksiját, elkezdett végre derengeni mit mire is szánhattak.

Van valakinek tapasztalata (0.42c -ről) mennyire lehet rajta számon is kérni amit a sjasm doksijában írogatnak ?

Mert a doksi mostani olvasásra egész megtetszett:

- Vannak benne ilyen "link -elésre" alkalmas funkciók, vagyis kívánságra kihagy nem használt kódrészeket, nem kell konfigolgatni, meg feltételesen fordítgatni, csak nem hívsz rá, és már nem is fordul be, meg bináris file -okat vagy azok részeit be tudod fűzni a végső kódba. Tud egy fordítás alatt több binárist is kipökni.

- Lehet benne multipage kódot írni, bármely lap kezdődhet bármely címen és lehet bármilyen hosszú, egy címkéről pedig bármikor megtudhatod hányas indexű lapon van. A kódokat automatizálva is tudja szétszórni a page -ek között.

- Címkéket tud hierarchizálni. Vagyis lehet sok "vissza" nevű címkéd is, ahol annak értelme van, és nem kell feltétlen globális címkeneveket használni, pld: "vissza876734", vagy "SpriteKirako_Atlatszo_MasodikUtem_301"

- Strukturák (és membereik természetesen) méretét és offszetjeit nyilván tarja, itt is van lokális névfeloldás.

- Mindenféle ördöngös makrók, és akár makróra lokális címkék.

- Mindenféle ismétlő funkció, amivel (akár makrókkal kombinálva) feleslegessé válhat a legtöbb esetben a ciklusmagok, egyéb kódok kilóméteres ismételgetése, egyszerűen azért mert fenti dolgokat és ezeket a funkciókat kombinálva ki tudod fejezni akár a módosulgató ismétléseket is. Az egész kicsit mintha el lenne rugaszkodva a direkt ASSEMBLY -től, mikor az ember utasításokat hekkel egymás után mnemonikokkal, inkább amolyan szkripteket írogat az ember, melyek kifejtik az utasításokat. Na nem mintha a pszeudó utasításokat a legegyszerűbb EP assembler is nem ismerte volna, sőt még egyszerűbb makrók is voltak némelyikben, de ezt a gazdagságot nyilván nem érték el.

- Megamitmég kihagytam ... pld. align -olások, meg ilyesmik ...


Szóval tetszik ... ha az ASMON vagy neadjisten a HEASS az egy tüchtig kis kéziszerszámos láda, akkor ez a sjasm egy modern gépesített szerszámműhely, CNC esztergával és maróval ... :)
« Last Edit: 2015.October.05. 23:50:08 by Z80System »
Z80 System

Offline geco

  • EP addict
  • *
  • Posts: 6316
  • Country: hu
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 38.0 Firefox 38.0
    • View Profile
Re: Assembly programozás
« Reply #938 on: 2015.October.06. 08:48:27 »
Már a régebbi verzió is tudta ezek nagy részét, és úgy tudta, hogy nem csak a leírásban :D

Offline lgb

  • EP addict
  • *
  • Posts: 3555
  • Country: hu
  • æðsta yfirmaður
  • OS:
  • Linux (Ubuntu) Linux (Ubuntu)
  • Browser:
  • Firefox 41.0 Firefox 41.0
    • View Profile
    • http://lgb.hu/
Re: Assembly programozás
« Reply #939 on: 2015.October.06. 10:13:56 »
En nem tudok rola, hogy az sjasm tudna linkeleses dolgot, vagy ha igen, nem tudom hogy. Mert ugye a linkeles az lenne, hogy tobb asm forrasbol fordit egyenkent object kodot, az az object kodot tudja aztan linkelni egybe. Ilyet en is szeretnek, de nem tudok rola, hogy sjasm tudna ilyet, marad a fapados amator megoldas, hogy huszmillio include mindenhova :)

Sajna az sjasm doksija nekem kisse misztikus, nem tudom te hol talaltad, de amit weboldalon lattam, nehany oldal kesz sincs, stb ... Pl ez: http://xl2s.eu.pn/sjasmman1.html

Offline sanyike

  • User
  • *
  • Posts: 95
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Chrome 45.0.2454.101 Chrome 45.0.2454.101
    • View Profile
Re: Assembly programozás
« Reply #940 on: 2015.October.07. 21:36:21 »
Gépi kódban, hogy tudok a 254-es szegmensre írni?
spoke 254,n,255 - ezt hogy lehet megoldani?

_S

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1069
  • Country: hu
  • Stray cat from Commodore alley
  • OS:
  • Windows NT 6.3 Windows NT 6.3
  • Browser:
  • Firefox 41.0 Firefox 41.0
    • View Profile
Re: Assembly programozás
« Reply #941 on: 2015.October.08. 06:56:45 »
XI. rész: A DAVE-chip programozása

Feltételezem a Z80 assembly megy. Nem kellene megismerkedni először a géppel mielőtt programozni kezdené az ember? Egyéni szoc probléma, de vércikinek találom amikor olyat kérdezek amit saját magam is kideríthettem volna. Bocsi!

Offline Zozosoft

  • EP addict
  • *
  • Posts: 14083
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 41.0 Firefox 41.0
    • View Profile
    • http://enterprise.iko.hu/
Re: Assembly programozás
« Reply #942 on: 2015.October.08. 09:36:45 »
Gépi kódban, hogy tudok a 254-es szegmensre írni?
spoke 254,n,255 - ezt hogy lehet megoldani?
Pl:
Code: ZiLOG Z80 Assembler
  1. IN A,(0B3h)
  2. PUSH AF
  3. LD A,254
  4. OUT (0B3h),A
  5. LD HL,0C000h+n
  6. LD (HL),255
  7. POP AF
  8. OUT (0B3h),A

Ebben az esetben a 3-as lapra lesz ideiglenesen lapozva, ezért ott ne legyen éppen futó kód vagy verem. Természetesen másik lapra is lehet lapozni, értelemszerű módosítással.

Offline sanyike

  • User
  • *
  • Posts: 95
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Chrome 45.0.2454.101 Chrome 45.0.2454.101
    • View Profile
Re: Assembly programozás
« Reply #943 on: 2015.October.08. 10:40:18 »
XI. rész: A DAVE-chip programozása

Feltételezem a Z80 assembly megy.

Nem megy.

A BASIC is csak dereng, kb. 30 éve nem foglalkoztam vele :-)
Csak egy összehasonlítást szerettem volna végezni a végrahajtási sebesség tekintetében;
BASIC spoke - zippelt BASIC spoke - BASIC-be ágyazott gépikód

- , hogy tudjam melyik irányba induljak majd el.
Ez természetesen hobby, amire van napi kb fél. órám...

XI. rész: A DAVE-chip programozása

Egyéni szoc probléma, de vércikinek találom amikor olyat kérdezek amit saját magam is kideríthettem volna.[/s] Bocsi!

Szerintem egy fórumon nem "vérciki" kérdezni, de igazad van; ez az én szoc problémám...

Offline sanyike

  • User
  • *
  • Posts: 95
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Chrome 45.0.2454.101 Chrome 45.0.2454.101
    • View Profile
Re: Assembly programozás
« Reply #944 on: 2015.October.08. 10:41:33 »