Assembler

Löytyiskö ohjelmapätkää, joka lukee disketin
pintaa oli siellä sitten mitä tahansa???

Niin, assemblerilla tehtyä tarvitsisin.
9795
Äänestä

Muut lukivat myös

Vastaukset 9

Vanhimmat

Eikös sitä voi lukea vaikka DOSin DEBUGilla?
Eli dosissa kirjoittaa DEBUG
sitten "?" niin saa ohjeen. Helpommin asia käy tietty vaikka WinHex illä.
Jos nyt edes tätä tarkoitit?

Äänestä
  • ...tarkoittanut.

    Tarvitsisin nimenomaan assembler -koodin.

    Valmisohjelmia on kyllä tarjolla, mutta niissäpä
    ei tule koodia mukana...!

    Äänestä

  • original kirjoitti:

    ...tarkoittanut.

    Tarvitsisin nimenomaan assembler -koodin.

    Valmisohjelmia on kyllä tarjolla, mutta niissäpä
    ei tule koodia mukana...!

    > Valmisohjelmia on kyllä tarjolla, mutta
    niissäpä
    > ei tule koodia mukana...!

    sitä varten on disassemblerit.

    Äänestä

on monille eri prosessoriperheille, mitä niistä
tarkoitit???

Äänestä
  • Ei väliä. Laitatko ohjelmalistauksen?

    Äänestä

Helpoiten se käy Bios:sin int 13h/2 kutsulla,
etsi käsiisi kirja josta löytyy noi interruptit..
niin siintä vaan koodaamaan, vai haluatko että
lähetän valmiin koodin?

Äänestä
  • esim. tänne

    Äänestä

  • original kirjoitti:

    esim. tänne

    Tässä tämä koodi sitten on, aika yksinkertainen.
    Pitää kääntää Tasm:lla ja ajaa Dossissa
    (Tai Windows-Dossin kautta).
    Esimerkki lukee A-asemasta ensim. sektorin,uralta
    ja lukupäältä nolla (joka on muuten buuttisektori)
    Yksi sektori on 1,44 mb levykkeillä 512 tavua.
    Jotta tästä ohjelmasta olisi jotain hyötyä
    niin toi muistialue "luetut_tavut" pitää saada
    näkymään ruudulla,(ellet sitten aja tätä
    debuggerilla)
    Lisäksi kannattasi heti INT 13h käskyn jälkeen
    tarkkailla CF:ää (carry lippua) koska luku voi
    joskus epäonnistua.
    TÄRKEÄÄ!! pidä huoli että AH:ssa on aina 2, koska
    jos siinä on 3 niin silloin tämä interrupt
    KIRJOITTAA sektoreita massamuistiasemalle.

    Ja sitten ei muuta kun koodaamaan.
    *******************
    IDEAL
    MODEL SMALL
    P386
    DATASEG

    LUETUT_TAVUT DB 512 DUP (0)

    CODESEG
    START:
    MOV AX,@DATA
    MOV ES,AX


    MOV AH,2
    MOV AL,1
    MOV CH,0
    MOV CL,1
    MOV DH,0
    MOV DL,0 ;<--A:asema
    MOV BX,OFFSET LUETUT_TAVUT
    INT 13H

    MOV AH,4CH
    INT 21H ;<--paluu Dossiin

    END START
    ********************
    Huomaat että data on alustettu ES:sään, koska
    INT 13h kirjoittaa tavut ES:BX:n.

    AL:n laitetaan luettavien sektorien määrä.
    CH:n uran n:o mistä luku aloitetaan,eka on 0.
    CL:n sektorinumero mistä luku aloitetaan
    eka on 1.
    DH:n lukupään n:o, eka on 0.
    DL:n aseman n:o A=0, B=1, C=80h, D=81h jne.

    Interruptin palautusarvot
    CF=0 luku onnistui
    AH=toiminnan virhekoodi
    AL=luettujen sektorien määrä

    -------
    Huomaa, kiintolevyillä uran n:o voi olla suurempi
    kun CH-rekisterin koko..255 niin luvun
    kaksi ylimenevää bittiä laitetaan CL:n kahteen
    ylempään bittiin.

    Äänestä

  • Cnvt kirjoitti:

    Tässä tämä koodi sitten on, aika yksinkertainen.
    Pitää kääntää Tasm:lla ja ajaa Dossissa
    (Tai Windows-Dossin kautta).
    Esimerkki lukee A-asemasta ensim. sektorin,uralta
    ja lukupäältä nolla (joka on muuten buuttisektori)
    Yksi sektori on 1,44 mb levykkeillä 512 tavua.
    Jotta tästä ohjelmasta olisi jotain hyötyä
    niin toi muistialue "luetut_tavut" pitää saada
    näkymään ruudulla,(ellet sitten aja tätä
    debuggerilla)
    Lisäksi kannattasi heti INT 13h käskyn jälkeen
    tarkkailla CF:ää (carry lippua) koska luku voi
    joskus epäonnistua.
    TÄRKEÄÄ!! pidä huoli että AH:ssa on aina 2, koska
    jos siinä on 3 niin silloin tämä interrupt
    KIRJOITTAA sektoreita massamuistiasemalle.

    Ja sitten ei muuta kun koodaamaan.
    *******************
    IDEAL
    MODEL SMALL
    P386
    DATASEG

    LUETUT_TAVUT DB 512 DUP (0)

    CODESEG
    START:
    MOV AX,@DATA
    MOV ES,AX


    MOV AH,2
    MOV AL,1
    MOV CH,0
    MOV CL,1
    MOV DH,0
    MOV DL,0 ;<--A:asema
    MOV BX,OFFSET LUETUT_TAVUT
    INT 13H

    MOV AH,4CH
    INT 21H ;<--paluu Dossiin

    END START
    ********************
    Huomaat että data on alustettu ES:sään, koska
    INT 13h kirjoittaa tavut ES:BX:n.

    AL:n laitetaan luettavien sektorien määrä.
    CH:n uran n:o mistä luku aloitetaan,eka on 0.
    CL:n sektorinumero mistä luku aloitetaan
    eka on 1.
    DH:n lukupään n:o, eka on 0.
    DL:n aseman n:o A=0, B=1, C=80h, D=81h jne.

    Interruptin palautusarvot
    CF=0 luku onnistui
    AH=toiminnan virhekoodi
    AL=luettujen sektorien määrä

    -------
    Huomaa, kiintolevyillä uran n:o voi olla suurempi
    kun CH-rekisterin koko..255 niin luvun
    kaksi ylimenevää bittiä laitetaan CL:n kahteen
    ylempään bittiin.

    Ok, kiitokset. Täytyy "varovasti" tutkia koodi
    ennen käyttöä. Ihan silä varalta, että olisi
    tullut vähän kusetettua.... :)

    Hauska juttu, että vastanneista vain yksi todella
    sai aikaiseksi koodia. Muut heittelivät jotain
    yleispäteviä paskanjauhamiskysymyksiä!

    Äänestä

Kommentoi aloitusta


unikko kirjoitti:

Löytyiskö ohjelmapätkää, joka lukee disketin
pintaa oli siellä sitten mitä tahansa???

Niin, assemblerilla tehtyä tarvitsisin.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu