Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: Piipitystä Assemblylla

Sivun loppuun

HtH [08.07.2002 19:40:36]

#

Tein yksinkertaisen ohjelman, jossa käsitellään piipparia. Piippari pistetään päälle outtaamalla porttiin 61h arvo 3h. Tämä tekee sen, että dos alkaa soittamaan piipparia portin 42h sisällön mukaisesti. Lopuksi sitten pistetään piippari pois päältä outtaamalla samaan 61h porttiin arvo 0h. Tämän ohjelman alunperinen tarkoitus oli, että se soittaa skaalan 0-FF, mutta ohjelma olikin liian nopea, eikä piippari pysynyt perässä, alkoikin kuuluumaan FF:stä alaspäin skaalaa. Tämä tietysti riippuu koneen, ja piipparin nopeudesta, mutta hauskan kuuloista silti :)

.model tiny
.code

;Piippari ON
mov al, 1fh
out 61h, al

mov al, 0h

loopp:
inc al ;Lisätään al:llää yhdellä
out 42h, al ;Outataan al 42h porttiin
cmp al, 0FFh ;Onko al FFh?
je nollaa ;Kyllä, joten tee al:llästä 0
jmp ohi ;Ei, joten ei nollata al:llää
nollaa:
xor al, al ;XOR on nopeampi tapa tehdä rekisteristä 0 kuin mov al, 0h
ohi:
push ax ;ax pinoon...
;Onko jotain nappia painettu?
mov ah, 1h
int 16h
pop ax ;...ja pois pinosta
jz loopp ;Ei, joten takaisin loopin alkuun

xor ah, ah ;Kyllä, joten "kaapataan" painettu nappi, että se ei vaikuta enää
int 16h    ;kun ollaan dosissa.

;Piippari OFF
mov al, 0h
out 61h, al

;Poistutaan ohjelmasta
mov ax, 4c00h
int 21h
end

Rykker [09.07.2002 21:19:51]

#

se on piippEri ei piippAri :P

HtH [09.07.2002 21:32:47]

#

Aivan sama

Heikki [17.02.2004 19:30:10]

#

Kääntyy nasmilla jos poistaa rivit:
.model tiny
.code

atomimalli [14.07.2005 20:42:35]

#

mun koneessa ei oo piipperiä :(
EDIT: oi jee oi jee, otin yhdestä vanhasta ja rikkinäisestä koneesta piipperin.
Testasin vähän hidastamalla tota ja huomasin että ff on kaikkein matalin ääni eikä korkein eikä toiste päin...

Dude [19.08.2007 22:36:05]

#

mulla ei kuulu mitää.
Edit: sitte kuuluu ku outtaa porttiin 43h vaikka 1

Abaliini [11.02.2008 17:06:52]

#

Mihin muotoon tallennan?

Marope [26.07.2008 02:48:40]

#

.asm ja käännät jollain assemblerilla.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta