«« ( Date ) »» // «« ( Thread ) »» // mips-nastava - 2005

Simulator

by PMS
sreda, 27. april 2005 - 02:28.

Pokusavam da u simulatoru isprogramiram simulaciju prekida bilo u kom
trenutku npr. nadzorni racunar naredjuje da upravljacka jedinica predje u
stand by rezim.
Ovakvu komandu naravno davao bih ja sa tastature pritiskom na izvesni
taster. Medjutim, magicna fraza je bilo u kom trenutku. Ovo sam pokusao da
napravim prepravljanjem pc rom bios prekidnih rutina za tastaturu (int 9) i
rutine za presretanje scan koda (int 15h, ah=4Fh).Ovo sam radio da taster ne
bi morao da se unosi na klasican nacin (na komandu za unos tastera) vec da
se u prekidnoj rutini obradi pritisnut taster na osnovu scan koda i na
osnovu toga izvrse zeljene akcije Naravno u pomenute prekidne rutine
procesor ulazi posle svakog pritiska ili otpustanja dugmeta na tastaturi,
tacnije ulazi se u INT 9, a iz ove rutine se poziva INT 15H ah=4FH da bi
korisnik mogao da doda neke opcije.

Prepravka se sastoji iz sledeceg:

1. U glavnom programu se sacuva originalna adresa prekidne rutine.
2. U novoj prekidnoj rutini se gurnu zastavice na stek (da bi se simulirao
skok na prekidnu rutinu, posto se pri ulasku u prekidnu rutinu pamti i flag
registar i to
prvi po redu. Tacnije da bi se posle IRET u originalnoj prekidnoj rutini
sve bilo kako treba a FLAGS registar bio restauriran automatski sa steka)
3. Izvrsi se daleki poziv originalne prekidne rutine.
4. Izvrse se dodatne potrebne komande
5. Izadje se sa IRET.

Medjutim iz meni nepoznatog razloga ovo ne funkcionise.

Da li neko vidi gresku u ovom nacinu prekrajanja prekidne rutine?

Molio bih i Gvozdena da prokomentarise ovo.

Ognjen Milic