assembly kod + hallas

Nemeth Tibor neti at starkingnet.hu
Mon Oct 20 00:25:32 CEST 2003


Hali !


> A "hullamerevseget" a task kezelo, tehat maga az operacios rendszer 
> benazasa okozza, program ilyen szinten nem kap prioritast.

Sokaig magam is igy hittem.
Elorebocsatom, nem igazan vagyok jaratos windowsban, csak amennyire 
rakenyszerulok, nekem a dos boven eleg volt es lenne ma is. Meg egy eve 
sincs, hogy hajlott korom ellenere,  delphi-ben, pascalos multamat 
tamasznak remelve,  elkezdtem probalkozni.
Elotte olvastam nehany irast a vedett modu programozasrol es azt hittem 
ennek eszkozeivel fogok talalkozni. Ez nem torten meg. Nyilvan fontos, 
tehat leirom: Win98-rol van szo egyebekben nincs tapasztalatom.
A timert probalgattam, es hogy lassam valoban lefut, masodpecenkent 
kikuldtem vele egy 'A' betut a com2-n amit egy masik geppel 
figyeltem(Dos-ban). Ezt kozben elfelejtettem, par het kihagyas utan 
elovettem a unitot aminek a melyen ez hevert, elkezdtem bovitgetni. Egy 
olyan Pic-es ketyeret elesztgettem, ami soroson kommunikal es 
hangkartyahoz is csatlakozik, de most csak az utobbit probaltam 
felderiteni. A soros kommunkaciohoz elinditottam Hiperterminalt es 
erthetetlen dolgok tortentek. Reszleteket nem irom le de szivtam vele 
majd fel napig. Az oprendszer egy szot nem szolt, a hiperteminal 
mukodese mellett az en programom, amivel akkor a hangkartyat probaltam 
kezelni, szepen kuldte masodpercenket az 'A' betut. Ezt ugye egy vedett 
oprendszernek nem volna szabad, elvileg minden taszkhoz hozzarendelhetne 
egy io-cim-terkepet az engedelyezett/tiltott cimekrol. A W98 nem tesz 
ilyet.
Ugyan ilyen alapon tilthatna egy csomo utasitas vegrehajtasat, es mirol 
most itt szo van az a CLI , nos ezt tapasztalataim szerint nem tiltja.

Az alabbi programreszlet a Com2 modem control vezetekeket ketyegteti, ha 
egyszer rakattintok a formra. Nem tudom fontos-e, Delphi 4 rol van szo.



procedure TForm1.FormClick(Sender: TObject);
begin
asm
    mov dx,$2f8+4 {COM2 modem ctrl reg}
{   cli}
@lbl0:
     mov  cx,500
@lbl1:
     in   al,dx
     loop @lbl1
     xor  al,1
     out  dx,al
    jmp    @lbl0

end
end;


A belso hurok azert van, hogy meg tudjam hallgatni a ketyegest.
Valami IO vedelem megis van, bar szerintem forditva mukodik, ez a 
program ugyanis csak akkor ketyegteti a vonalat, ha mellette megnyitok 
egy csatlakozast hiperterminallal Com-2-n.
Ha igy futtatom {cli} , es meghallgatom hallatszik a sipolas, de zavaros 
akadozo. A program a vegtelen hurok miatt lefagy, de az oprendszer nem, 
egyeb programok mukodnek es ezt is ki lehet loni taskmanagerrel vagy 
fejlesztoi kornyezetbol.

Ha a cli-t kiveszem a zarojelbol, tehat megszunik megjegyzes lenni, 
vegrehajtodik. Ez teljes lefagyassal jar, eger is meghal, csak hardver 
reset segit. Ugyanakkor a hallott sipolas tokeletes, zokkenomentes.

Mindebbol arra kovetkeztetek, hogy a W98 nem tul vedett oprendszer. Az, 
hogy ez baj vagy sem, mas kerdes. Nyilvan valamit valamiert. Visszaterve 
az eredeti kerdesre, tapasztalataim alapjan megoldhato. Az idozito 
hurokba az 'in al,dx ' idoziteni kerult bele. Ezt ugyanis nagyjabol 
gepfuggetlen sebesseggel hajtja vegre.

Ha mar itt tartunk, egy masik temat szeretnek feldobni. Miert nem 
hasznaljuk a fulunket ? Vagy Ti is hasznaljatok ? Szerintem a fenti 
pelda tipikusan olyan, amit szkoppal nagyon nehez megfigyelni. Hasonlo 
eset, ha egy ramkort megzavar egy ritkan erkezo zavartuske. Kapcsistap 
szabalyozojanak lengese, gerjedese (ha az aramkor tuleli) mar kulon 
szandek (hangszoro) nelkul is hallhato.

Szoval kerdesem ki mire hasznalja a hallasat a munkaban.

Udv.
          Nemeth Tibor



More information about the Elektro mailing list