Pascal İle İşlemcinize Hitap Edin

CorsaiR

Emektar
27 Ara 2005
1,228
18
Çekirdekten
Pascal İle İşlemcinize Hitap Edin Bildiğimiz gibi programlama dillerinin bir çoğu (Bunlara PASCAL da dahil) kullanıcı ile bilgisayar arasında sadece bir tercümandır.
Biz PASCAL ve benzeri bir programlama dilinde bir komut yazdığımızda derleyici yazdığımız kodları bilgisayarın anlayacağı elektronik sinyallere çevirir. Çünkü PASCAL da yazdığımız komutlar direkt olarak bilgisayar için bir şey ifade etmez. Bu komutlar bizim anlayabilmemiz içindir yani bizim işimizi kolaylaştırır.

Ve aynı zamanda PASCAL da biz bilgisayara bir emir verdiğimizde aslında işin arka planında interrupt(kesme)lar vardır. PASCAL ile bilgisayara emirler ve komutlar verdiğimizde derleyici program verdiğimiz emir veya komut ile ilgili interrupt(kesme)ı çalıştırır.

Aşağıda bunu size 3 örnek ile açıklamaya çalıştım. Bu örneklerin hepsi aynı sonucu verir. Bu örneklerde makinenizde geçerli olan zamanı ekranda göstermeye çalıştık. Bunun yapmak için kullandığımız interrupt no=21 h ve bu interrupt'ın bir fonksiyonu olan AH=002C h 'ı kullandık.


Örneği interruptları işin içine katmadan sadece bildiğimiz PASCAL komutu ile yazdık.
Örnekte ise PASCAL'da interrupt çalıştırma komutu olan int(..)' ı kullandık. Fakat interruptı göndermeden önce AH register(register=chip içinde bulunan hafıza parçacıkları)ine saat için gerekli olan 002C h değerini atıyoruz. AH registerinin 002C h değeri için 21 h numaralı interrupt çalıştırıldığında sistem saatinin o andaki değerini CH,CL,DH,DL registerlerine yükler. Ve bizde bu değerleri h,d,s,sa değişkenlerine atayarak, bu değişkenleri ekranda gösteriyoruz.
Örnekte aynı işi basit ASSEMBLY komutları ile asm...end; bloğu içinde yazdık. İncelerseniz 2. ve 3. örnekler birbirlerine çok benzemektedir.

Genelde ASSEMBLY kitaplarında bulunan interrupt listelerini inceleyerek, bu verdiğimiz örneklerdeki gibi değişik interruptları ve bu interruptların değişik fonksiyonlarını kullanabilirsiniz ve programlama dillerinde yapamayacağınız bir çok işlemi bilgisayarınıza yaptırabilirsiniz.


1. Örnek

uses dos,crt;
var
h,d,s,sa:word;
begin
clrscr;
repeat
gettime(h,d,s,sa);
gotoxy(30,13); write(h,' : ',d,' : ',s,' : ',sa);
until keypressed;
end.

2. Örnek
uses dos,crt;
var
r:registers;
h,d,s,sa:byte;
begin
clrscr;
repeat
r.ah:=$002c;
intr($21,r);
h:=r.ch; d:=r.cl; s:=r.dh; sa:=r.dl;
gotoxy(30,13); write(h,' : ',d,' : ',s,' : ',sa);
until keypressed;
end.

3. Örnek
uses dos,crt;
var
h,d,s,sa:byte;
begin
clrscr;
repeat
asm
mov ah,002ch
int 21h
mov h,ch
mov d,cl
mov s,dh
mov sa,dl
end;
gotoxy(30,13); write(h,' : ',d,' : ',s,' : ',sa);
until keypressed;
end.


Bahadır Zeren

 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.