Moi,
Kuinka saan ladattua muuttujaan dossin kelloajan?
Nasmia käytän.
Int 1A
Tuossa voisi olla hyvä keskeytys:
http://heim.ifi.uio.no/~stanisls/helppc/int_21-2c.html
Muoks: kellonaika, ei päivämäärä
Grez kirjoitti:
Int 1A
Johan löyty:
http://lrs.uni-passau.de/support/doc/interrupt-57/INT-1A.HTM
Kiitos hakusanasta :D
Edit: Tälläistä sain aikaan, luulettteko että joku kone on liian hidas suorittamaan 1000 kertaa sekunnissa tuon loopin?
Kello: ;säädetään ohjelman nopeutta push ax ;tallennetaan rekisterit pinoon push bx push cx push dx mov ah,2Ch ;halutaan dossin sekunttikellon tila int 21 ;siirretään kello rekistereihin C ja D mov byte [nopeus],dl ;laitetaan väliaikaisesti nopeus muuttujaan sadasosasekunnit mov cx,1000 ;alustetaan laskuri Looppaa: nop ;tee ei mitään dec cx ;vähennä laskuria cmp cx,0 ;vertaa ja Looppaa ;hyppää jos laskuria on jäljellä int 21 ;kun looppi loppuu otetaan uusi sadasosasekunttiaika mov byte dh,[nopeus] ;dh=vanha sekkariaika, dl=uusi sekkariaika mov byte [nopeus],0 ;alustus Laskenopeus: cmp dh,dl ;if dh<dl -> nopeus=dl-dh ja Pienempi;else -> nopeus=dh+100-dl add byte [nopeus],dl sub byte [nopeus],dh mov byte [nopeus],dh jmp Peli Pienempi: add byte [nopeus],dh add byte [nopeus],100 sub byte [nopeus],dl mov byte [nopeus],dl Peli: pop dx pop cx pop bx pop ax
Vaikutti sitltä että tää vanha konekkin on liian nopea suorittamaan tuota, ei ehdi kulua sadasosa sekuntia :P joten lisäsin looppeja, ja nyt vaikuttaa sopivammalta.
Voit tehdä testistä kaikille koneille sopivan: jos aikaa kuluu alle puoli sekuntia, kaksinkertaista kierrosten määrä ja tee testi uudestaan. Jokainen kone päätyy lopulta kierrosmäärään, jolla suoritus kestää yli puoli sekuntia, ja testi kestää silti yhteensä vain sekunnin. Testin lopuksi jossain rekisterissä on kierrosten määrä ja toisessa kulunut aika.
Aihe on jo aika vanha, joten et voi enää vastata siihen.