Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Onko asm-ohjelmia turvallista ajaa?

Sivun loppuun

ErroR++ [03.09.2011 20:40:26]

#

Mietin tossa vaan, että voiko assemblyllä ja C++:salla tehyjä ohjelmia ajaa ilman mitään erikoistapauksia, esim. kone kaatuu tai ram -muisti sotkeentuu.
käytän assemblyä C++:sassta näin:

_asm {
;koodi esim.
mov ah, 09h
	lea dx, "Moikatimoi!!!"
	int 21h ;tulosta merkkijono
}

Metabolix [03.09.2011 21:02:42]

#

Jos tiedot ovat tuolla tasolla, ohjelman kaatuminen on hyvin todennäköistä. (Esim. tuo koodi näyttää epäilyttävästi 16-bittiselle MS-DOSille tarkoitetulta.) Käyttöjärjestelmät onneksi tehdään nykyään niin, että tavallinen ohjelma ei voi niitä kaataa, ellei käyttiksessä itsessään ole bugia. Aiemmin, kun ohjelmat vielä toimivat reaalitilassa, oli toki mahdollista vaikka tyhjentää levy ja sammuttaa kone.

ErroR++ [03.09.2011 21:14:51]

#

Eli voi ajaa, mutta järjetöntä osaksi tommonen.

ErroR++ [04.09.2011 10:37:06]

#

Sitten jos sen exen ajaa niin tulee joku ihme virhe. Yritin merkkijonon tulostusta BIOS -palvelulla.

nörtti [04.09.2011 11:36:06]

#

Se johtuu siitä, että käyttöjärjestelmät suoritetaan nykyään 32bit suojatussa tilassa, josta ei pääse käsiksi 16bit reaalitilan BIOS palveluihin.

ErroR++ [04.09.2011 12:32:55]

#

Ja koneeni on 64-bit. Mites noita palveluita voi käyttää? Pitääkö itse käydä käsiksi näyttömuistiin?

jalski [04.09.2011 13:05:11]

#

Miksi sotkea assemblyä tuohon, jos tarkoituksena on vain saada tekstiä näytölle? C:n standardi kirjasto hoitaa tuon homman paljon paremmin ja joustavammin.

ErroR++ [04.09.2011 13:18:58]

#

Haluan vain tehdä jotain assemblyllä. Ja nyt jo meinasin saada textiä näytölle, kun päätin vaihtaa koodin näin:

_asm {
	  mov ax, 0B800h
	  mov es, ax
	  xor di,di
	  mov ah, 1Eh
	  mov al, 69
	  mov cx, 10
	  cld
	  rep stosw
	}

ja sitten yritin ajaa exeä yhteensopivuustilassa. Sitten tuli käyttäjätilien valvonnan sanoma ja en suorittanutkaan sitä.

Kannataako tuota ajaa?

Deffi [04.09.2011 14:13:40]

#

Noh, Windows-ohjelmointi assemblyllä on mahdollista. Et kylläkään näytä ymmärtävän aiheesta yhtään mitään. MASMille suunnatut Iczelionin oppaat ovat hyviä.

Tässä yksi (ei julkaistu) yksinkertainen assembly-koodivinkki joka toimii uusissakin Windowseissa: XOR-kryptaus makroilla (FASM)

ErroR++ [04.09.2011 18:20:34]

#

Siistiä!

ErroR++ [05.09.2011 14:38:45]

#

Muuten, onkohan 64bit koneissa 32/64bit BIOSit? Sillonhan periaatteessa jos siirtäis koneen assemlyllä reaalitilaan (tai boottais koneen CD:ltä) niin vois noita käyttää!!!

nörtti [05.09.2011 15:31:01]

#

Ei ole 32/64bit BIOS:ia, mutta et sillä 16bit tilassa juuri mitään tekisikään.

ErroR++ [05.09.2011 17:35:38]

#

On kyllä erittäin kummallista, että tämä on totta.


Sivun alkuun

Vastaus

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

Tietoa sivustosta