Welcome, Guest. Please login or register.


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

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13313
  • Country: hu
    • View Profile
    • http://enterprise.iko.hu/
Assembly programozás
« on: 2005.December.23. 11:35:37 »
Ide jöhet mindenféle kérdés-válasz a témában :)

Elsõként EPROM lebegés vizsgáló Povinak:
[asm]
          ORG 1000H
          LD A,SZEGMENSSZAM
          OUT (0B1H),A
          LD HL,4000H
          LD B,L
LEBEG1    LD A,(HL)
LEBEG2    CP (HL)
          RET NZ
          DJNZ LEBEG2
          INC HL
          BIT 7,H
          JR NZ,LEBEG1
          RET
          END
[/asm]

Offline MrPrise

  • Administrator
  • EP addict
  • *
  • Posts: 2517
  • Country: hu
    • View Profile
    • Enterprise Forever
Re: Assembly programozás
« Reply #1 on: 2006.January.05. 14:43:25 »
Quote from: "Zozosoft"
[asm]LEBEG1    LD A,(HL)
LEBEG2    CP (HL)
[/asm]

Hivatalosan a címkék után nem kell kettõspont?
Nem errõl ismeri fel a fordító?

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13313
  • Country: hu
    • View Profile
    • http://enterprise.iko.hu/
Re: Assembly programozás
« Reply #2 on: 2006.January.05. 15:23:10 »
Quote from: "MrPrise"
Nem errõl ismeri fel a fordító?

Az EP-s fordítók szerintem onnan ismerik fel, hogy a sor elsõ karakterén kezdõdõ szó :)

Offline MrPrise

  • Administrator
  • EP addict
  • *
  • Posts: 2517
  • Country: hu
    • View Profile
    • Enterprise Forever
Re: Assembly programozás
« Reply #3 on: 2006.January.05. 15:27:40 »
Quote from: "Zozosoft"
Quote from: "MrPrise"
Nem errõl ismeri fel a fordító?

Az EP-s fordítók szerintem onnan ismerik fel, hogy a sor elsõ karakterén kezdõdõ szó :)

Hm. Ok. Csak mert most írom a regex-eket ;-)

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13313
  • Country: hu
    • View Profile
    • http://enterprise.iko.hu/
Re: Assembly programozás
« Reply #4 on: 2006.January.05. 18:37:52 »
Meg is néztem most, Asmon, Fenas, Heass mind így kezeli. Heass-ben lehet kettõspont, de nem kötelezõ.

Offline MrPrise

  • Administrator
  • EP addict
  • *
  • Posts: 2517
  • Country: hu
    • View Profile
    • Enterprise Forever
Re: Assembly programozás
« Reply #5 on: 2006.January.05. 18:39:32 »
Quote from: "Zozosoft"
Meg is néztem most, Asmon, Fenas, Heass mind így kezeli. Heass-ben lehet kettõspont, de nem kötelezõ.

Ok. Köszi. Már régen volt mikor még assembly-ben programoztam Enterprise-on. Azóta már megszoktam teljesen a PC-s assemblereket.

Offline Povi

  • EP addict
  • *
  • Posts: 1847
  • Country: hu
    • View Profile
    • http://povi.fw.hu
Re: Assembly programozás
« Reply #6 on: 2006.January.05. 18:48:25 »
Az asmonban és a fenasban is lehet kettõspont, de nem kötelezõ. (mostanság fenas-t használok, de ha lenne heass-om romban, akkor azt használnám...). Az a baj, hogy a heass.ext-tel nem tudok fordítani. (nem tudom, miért)
*** Speicherplatz zu klein

Offline MrPrise

  • Administrator
  • EP addict
  • *
  • Posts: 2517
  • Country: hu
    • View Profile
    • Enterprise Forever
Re: Assembly programozás
« Reply #7 on: 2006.January.05. 19:08:05 »
Quote from: "Povi"
Az asmonban és a fenasban is lehet kettõspont, de nem kötelezõ. (mostanság fenas-t használok, de ha lenne heass-om romban, akkor azt használnám...). Az a baj, hogy a heass.ext-tel nem tudok fordítani. (nem tudom, miért)

De a kettõsponttól függetlenól azt nézi, hogy ez az elsõ szó a sorban?
Tehát hiába raksz utána :-ot, ha bentebb kezdõdik akkor nem címkeként értelmezi?
Az assembly forrás kiemelõ miatt kérdem. Hogy hogyan mûködjön.

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13313
  • Country: hu
    • View Profile
    • http://enterprise.iko.hu/
Re: Assembly programozás
« Reply #8 on: 2006.January.05. 20:33:54 »
Quote from: "MrPrise"
Tehát hiába raksz utána :-ot, ha bentebb kezdõdik akkor nem címkeként értelmezi?

Így van!

Offline hsoft

  • EP fan
  • *
  • Posts: 113
    • View Profile
Re: Assembly programozás
« Reply #9 on: 2006.January.10. 02:58:15 »
Quote from: "Zozosoft"
Quote from: "MrPrise"
Tehát hiába raksz utána :-ot, ha bentebb kezdõdik akkor nem címkeként értelmezi?

Így van!


Elnézést a kotnyelességért: Az EP-s asseblerek a sor elsõ karakterét figyelik, mely  megadja hogy mit kell értelmezni a továbbiakban.
Betü után címke jön, mely kettõspont, szóköz, enter határolással csonkolva lesz.
Szóköz és tab után ltrim(utasitás) jöhet.
; után csak megjegyzés várható, tehát a sor maradéka át lesz ugorva.
(kivéve ha idézõjelmódban van)

Offline MrPrise

  • Administrator
  • EP addict
  • *
  • Posts: 2517
  • Country: hu
    • View Profile
    • Enterprise Forever
Re: Assembly programozás
« Reply #10 on: 2006.January.13. 10:44:21 »
A rendszerszegmensen hol kezdõdik a karakterkészlet? Nem találom ez Enterpress-eimet.

Offline MrPrise

  • Administrator
  • EP addict
  • *
  • Posts: 2517
  • Country: hu
    • View Profile
    • Enterprise Forever
Re: Assembly programozás
« Reply #11 on: 2006.January.13. 11:07:34 »
Quote from: "MrPrise"
A rendszerszegmensen hol kezdõdik a karakterkészlet? Nem találom ez Enterpress-eimet.

0x3480-0x38ff Kinyomoztam ;-)

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13313
  • Country: hu
    • View Profile
    • http://enterprise.iko.hu/
Re: Assembly programozás
« Reply #12 on: 2006.January.13. 13:00:27 »
Itt a "vinyószimulátor" forráskódja:
Code: ASM
  1.                 ORG 0C000H
  2.                 VAR 64,EXDEXT.ROM
  3.                 DB "EXOS_ROM"
  4.                 DW 0
  5.                 LD A,C
  6.                 CP 7
  7.                 JR NZ,NEMRAM
  8.                 LD DE,DARAB*60H+3
  9.                 LD BC,100H
  10.                 RET
  11. NEMRAM          IN A,(0B1H)
  12.                 OR A
  13.                 RET Z
  14.                 LD A,C
  15.                 CP 2
  16.                 JR Z,COM1 ;PARANCSFUZER
  17.  
  18.                 CP 3
  19.                 RET NZ
  20.                 LD A,B
  21.                 OR A
  22.                 JR Z,ALTAL
  23.                 LD HL,EXDEXT
  24.                 CALL KERD
  25.                 RET NZ
  26.                 LD BC,HOSSZ2
  27.                 LD DE,HH2
  28.                 LD A,255
  29.                 EXOS 8
  30.                 LD C,0
  31.                 RET
  32. ALTAL           PUSH DE
  33.                 PUSH BC
  34.                 LD DE,HH2
  35.                 LD BC,HOSSZ1
  36.                 LD A,255
  37.                 EXOS 8
  38.                 POP BC
  39.                 POP DE
  40.                 RET
  41.  
  42. COM1            LD HL,EXDOSFF
  43.                 CALL KERD
  44.                 RET NZ
  45.                 LD A,(IY+0)
  46.                 OR A
  47.                 RET NZ
  48.                 PUSH IY
  49.                 POP DE
  50.                 IN A,(0B2H)
  51.                 LD B,A
  52.                 LD (IY+0),DARAB
  53.                 LD HL,KEZELOP
  54.                 LD (IY+1),L
  55.                 LD (IY+2),H
  56.                 IN A,(0B3H)
  57.                 LD (IY+3),A
  58.                 XOR A
  59.                 LD C,A
  60.                 RET
  61.  
  62.  
  63. KERD            LD A,B
  64.                 CP (HL)
  65.                 RET NZ
  66.                 INC HL
  67.                 PUSH BC
  68.                 PUSH DE
  69.                 INC DE
  70.  
  71. AZONOS          LD A,(DE)
  72.                 CP (HL)
  73.                 JR NZ,NEMA
  74.                 INC HL
  75.                 INC DE
  76.                 DJNZ AZONOS
  77. NEMA            POP DE
  78.                 POP BC
  79.                 RET
  80. KEZELOP         CP 3
  81.                 JR NZ,NEMBOOT
  82.                 LD HL,DISK+0C000H
  83.                 LD BC,512
  84.                 PUSH IX
  85.                 POP DE
  86.                 LDIR
  87.                 XOR A
  88.                 RET
  89. NEMBOOT         CP 4
  90.                 JR NZ,NEMOLVAS
  91.                 DI
  92.                 PUSH BC
  93.                 PUSH IX
  94.                 POP HL
  95.                 EXX
  96.                 LD C,0B0H
  97.                 IN E,(C)
  98.                 INC C
  99.                 IN D,(C)
  100.                 INC C
  101.                 IN L,(C)
  102.                 OUT (C),D
  103.                 EXX
  104.                 INC DE
  105.                 LD A,D
  106.                 LD C,E
  107.                 SLA C
  108.                 RLA
  109.                 SLA C
  110.                 RLA
  111.                 SLA C
  112.                 RLA
  113.                 LD C,A
  114.                 IN A,(0B3H)
  115.                 ADD A,C
  116.                 OUT (0B0H),A
  117.                 INC A
  118.                 OUT (0B1H),A
  119.                 LD H,E
  120.                 SLA H
  121.                 RES 7,H
  122.                 RES 6,H
  123.                 LD L,0
  124.                 LD D,XH
  125.                 LD E,XL
  126.                 SET 7,D
  127.                 RES 6,D
  128.                 SLA B
  129.                 LD C,0
  130.                 LDIR
  131.                 EXX
  132.                 OUT (C),L
  133.                 DEC C
  134.                 OUT (C),D
  135.                 DEC C
  136.                 OUT (C),E
  137.                 EXX
  138.                 EI
  139.                 PUSH DE
  140.                 POP IX
  141.                 POP BC
  142.                 XOR A
  143.                 RET
  144. NEMOLVAS       ;LD A,186
  145.                 RET
  146.  
  147. EXDEXT          DB 6,"EXDEXT"
  148. EXDOSFF         DB 6,"EXDOS",0FFH
  149.  
  150. DARAB           EQU 1
  151.  
  152. HH2             DB "EXDEXT version 1.0",13,10
  153. HOSSZ1          EQU $-HH2
  154.                 DB "ROMDISK EXDOS bovites",13,10
  155. HOSSZ2          EQU $-HH2
  156.                 .PRINTX #$
  157.  
  158. VEGEE           EQU $
  159.                 DF 0C200H-$,255
  160.                 ORG 200H
  161. DISK            MERGE DISKIMG
  162.                 END
  163.  
Érdeklõdés esetén el is magyarázhatom, hogy mit csinál :-)
« Last Edit: 2007.January.03. 12:31:53 by MrPrise, Reason: Geshi update »

Offline Povi

  • EP addict
  • *
  • Posts: 1847
  • Country: hu
    • View Profile
    • http://povi.fw.hu
Re: Assembly programozás
« Reply #13 on: 2006.February.05. 21:36:18 »
Új alkalmazói program indulásakor a funkcióbillentyúkre van valami alapértelmezett string? Azért kérdem, hogy KEYBOARD: eszközzel vajon hogyan lehetne õket olvasni? Ha jól emlékszem, csak az ALT+, és a CTRL+funkcióbillentyúkhöz van ASCII-kód. Vagy marad a portokon lekérdezés?
*** Speicherplatz zu klein

Offline Povi

  • EP addict
  • *
  • Posts: 1847
  • Country: hu
    • View Profile
    • http://povi.fw.hu
Re: Assembly programozás
« Reply #14 on: 2006.April.24. 21:33:25 »
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õ.
*** Speicherplatz zu klein