Welcome, Guest. Please login or register.


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

Offline Tuby128

  • EP addict
  • *
  • Posts: 1482
  • Country: hu
Re: Assembly programozás
« Reply #1125 on: 2024.January.04. 16:01:51 »
Tényleg van már eszembe jutott.
 Akkor visziont figyelni kell, hogy ha a gépi kódot basic-ben hajtom végre, akkor nem fog működni, mert már nyitva van az Editor, ugye?

Offline Ferro73

  • EP addict
  • *
  • Posts: 1004
  • Country: hu
Re: Assembly programozás
« Reply #1126 on: 2024.January.04. 20:50:43 »
Code: ZiLOG Z80 Assembler
  1.                 LD DE,fname
  2.                 XOR A ; channel NR 0
  3.                 EXOS 1
  4.  
  5.                 ;page segment F4 to 1.page
  6.                 LD L,0F4h  ; first segment
  7. chpage          LD A,L
  8.  
  9.                 OUT (0B1h),A ; page segments F4..F5..F6.. etc to 1.page
  10.  
  11.                 ;load file to the selected segment
  12.                 LD DE,04000H
  13.                 LD BC,04000H
  14.                 XOR A
  15.                 EXOS 6
  16.  
  17.                 INC L
  18.                 CP 0F9h ; until F8
  19.                 JR  C,chpage
  20.  
  21.                 XOR A ; close channel
  22.                 EXOS 3
  23.                 RET

Összesen 6 bájt megspórolva. Nyilván jelen esetben tök mindegy :lol: de jobb már ez elején rászokni rövidebb és gyorsabb kód írására!
A 17. és a 18. sor közé nem hiányzik egy LD A,L  ?
Úgy emlékszem a CP 0F9h  C flag=A-0F9h A változatlan.

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14773
  • Country: hu
    • http://enterprise.iko.hu/
Re: Assembly programozás
« Reply #1127 on: 2024.January.04. 21:00:03 »
A 17. és a 18. sor közé nem hiányzik egy LD A,L  ?
Úgy emlékszem a CP 0F9h  C flag=A-0F9h A változatlan.
Nyertél :oops:

Offline Ferro73

  • EP addict
  • *
  • Posts: 1004
  • Country: hu
Re: Assembly programozás
« Reply #1128 on: 2024.January.04. 21:12:55 »
A 19. sor  JR NZ,chpage esetleg ?

Offline Tuby128

  • EP addict
  • *
  • Posts: 1482
  • Country: hu
Re: Assembly programozás
« Reply #1129 on: 2024.January.05. 00:08:31 »
Kellene nekem valami, hogy a kép léptetést időzítsem. A video megszakítás 50 Hz-es jele jó lehet alapnak.
Az EXOS-nak nincs valami számlálója a renszerszegmensen, ami minden video megszakítás után eggyel növekszik?
Nekem bőven elég lenne lekérdezni az értékét.

Offline Tuby128

  • EP addict
  • *
  • Posts: 1482
  • Country: hu
Re: Assembly programozás
« Reply #1130 on: 2024.January.05. 00:21:53 »
Ezek mik a 255-es lapon?
FFF0 kb. 1s inkrementjei
FFEC ? Hz inkrementjei

Offline Tuby128

  • EP addict
  • *
  • Posts: 1482
  • Country: hu
Re: Assembly programozás
« Reply #1131 on: 2024.January.05. 01:44:18 »
Még egy kérdés. Kicsit hiányosnak érzem a Z80 utasításkészletet. Ha el akarok számolni 1-től 2115-ig, és közben valamit csinálni, akkor hogyan tudom leellenőrizni, hogy elértem az 2115-öt?
CMP (vagy SUB) utasítást használnék alapból, de ahogy látom ezek csak 8 bitre érvényesek.

Offline Tuby128

  • EP addict
  • *
  • Posts: 1482
  • Country: hu
Re: Assembly programozás
« Reply #1132 on: 2024.January.05. 02:43:03 »
Ha lemezre írni akarok, akkor EXOS 1 vagy EXOS 2 kell? Mi van ha a lemezen a fájl név már létezik?

Offline Ferro73

  • EP addict
  • *
  • Posts: 1004
  • Country: hu
Re: Assembly programozás
« Reply #1133 on: 2024.January.05. 07:27:33 »
Ha lemezre írni akarok, akkor EXOS 1 vagy EXOS 2 kell? Mi van ha a lemezen a fájl név már létezik?
Exos 2

Offline geco

  • EP addict
  • *
  • Posts: 7217
  • Country: hu
    • Támogató Támogató
Re: Assembly programozás
« Reply #1134 on: 2024.January.05. 08:54:57 »
A 19. sor  JR NZ,chpage esetleg ?
Jó a jr c,chpage, ha a számláló eléri az 0f9h-t akkor nem lesz carry, előtte meg de,így az utolsó futás 0f8h-nál lesz.

Offline geco

  • EP addict
  • *
  • Posts: 7217
  • Country: hu
    • Támogató Támogató
Re: Assembly programozás
« Reply #1135 on: 2024.January.05. 09:16:19 »
Még egy kérdés. Kicsit hiányosnak érzem a Z80 utasításkészletet. Ha el akarok számolni 1-től 2115-ig, és közben valamit csinálni, akkor hogyan tudom leellenőrizni, hogy elértem az 2115-öt?
CMP (vagy SUB) utasítást használnék alapból, de ahogy látom ezek csak 8 bitre érvényesek.
Nem hiányos, ha a z80 utasításkészletét érzed hiányosnak, akkor vess egy pillantást a 6502-ére, de akár a 6809-ére is.
egy lehetséges megoldás:
Code: [Select]
        ld bc,2115
loop    push bc
        futtatandó kód
        pop bc
        dec bc
        ld a,c
        or b
        jr nz,loop

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1340
  • Country: hu
  • Stray cat from Commodore alley
Re: Assembly programozás
« Reply #1136 on: 2024.January.05. 11:44:52 »
A Z80 utasításkészletét hiányosnak érezni számomra fundamentális félreértésnek tűnik. Szerintem pontosan kielégíti azokat a tervezési célokat, amit kitűztek a Zilogos fiúk az Intelből történő kiválásuk után. Ha valami hiányos, az az i8080 utasításkészlete. :ds_icon_cheesygrin:

Offline Tuby128

  • EP addict
  • *
  • Posts: 1482
  • Country: hu
Re: Assembly programozás
« Reply #1137 on: 2024.January.05. 16:09:38 »
Nem hiányos, ha a z80 utasításkészletét érzed hiányosnak, akkor vess egy pillantást a 6502-ére, de akár a 6809-ére is.
egy lehetséges megoldás:
Code: [Select]
       ld bc,2115
loop    push bc
        futtatandó kód
        pop bc
        dec bc
        ld a,c
        or b
        jr nz,loop

Geco ez akkor azt jelenti, hogy 0 tól x-ig felejtsem el a számolgatást, és szokjam meg hogy x-től 0-ig kell visszafelé számolni?

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1340
  • Country: hu
  • Stray cat from Commodore alley
Re: Assembly programozás
« Reply #1138 on: 2024.January.05. 16:37:52 »
Nem muszáj, csak így hatékonyabb. Lehet előre is, de akkor külön kell hasonlítgatni a célérték alsó és felső bájtjához a B és C pillanatnyi értékét, ami több helyet foglal és lényegesen lassabb. Azonban előállhat néhanapján olyan helyzet, amikor a számlált értéket még külön fel is akarod használni. Ilyenkor megtörténhet, hogy az előre számlálás járulékos költségei ellenére is érdemes azt használni. De a gyakorlatban a visszafelé számlálás legtöbbször előnyösebb.

Offline BruceTanner

  • EP lover
  • *
  • Posts: 608
  • Country: gb
Re: Assembly programozás
« Reply #1139 on: 2024.January.05. 16:59:49 »
Eg:
Code: [Select]
        ld bc,0
loop    push bc
        futtatandó kód
        pop bc
        inc bc
        ld hl,2115
        or a         ; Clear carry because there isn't SUB HL,rr
        sbc hl,bc
        jr nz,loop