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
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