Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

gosub ve call komutları

Başlatan mustafa_cmbz, 29 Ağustos 2007, 22:57:18

mustafa_cmbz

arkadaşlar  gosub komutunu ve call komutunu açıklayıcı 1-2 örnek sunacak arkadaş varmı acaba..

aslan_korhan

gosub ile call arasındaki farkı desydin daha iyi. Henüz farkını anlamış değilim.

Örnek vermek gerekirse :

Diyelim şöyle birşey yazdın :

high portb.0
low portb.0
high portb.0 
pause 500
high portb.1

high portb.0
low portb.0
high portb.0 
pause 500
high portb.1

high portb.0
low portb.0
high portb.0 
pause 500
high portb.1

end


gibi birşey yazdın. Burada gördüğün gibi ayni işlemleri 3 defa yapıyorsun. Bu durumda gereksiz kod harcamış oluruz. Bunun yerine :

call islem
call islem
call islem

end

islem:
high portb.0
low portb.0
high portb.0 
pause 500
high portb.1
return


şeklinde yaparsan ayni işlemi sadece 1 kere yazmış olursun. Yazdığın kod baya azalmış olur. Bu durumda program call yazan yerde "islem"e gider ve return komutunu gördükten sonra tekrar kaldığı yere geri gider.
Burada " call islem " yerine " gosub islem " de yazmak arasında bir fark yok...

Bir örnek daha vereyim :

if deger = 200 then call islem1
if deger = 300 then call islem2

end

islem1:
high portb.0
low portb.1
return

islem2:
high portb.5
low portb.6
return


Burada deger 200 olduğunda islem1'e git.
değer 300 olduğunda islem 2'ye git diyoruz. Yine call ile islem1 veya islem2'ye gittikten sonra return ile kaldığı yere geri döneriz...
Dünyada 10 çeşit insan vardır. Binary bilen ve bilmeyenler.

Maxim

help de şöyle bir yazı var ,
kısacası ,
sizin subrutin assembler dilinde yazılmış ise CALL komutunu kullanmanız lazımmış .

Call :
Execute the assembly language subroutine named Label.

GOSUB is normally used to execute a PicBasic subroutine.

The main difference between GOSUB and CALL is that with CALL, the existence of Label is not checked until assembly time.

Using CALL, a Label in an assembly language section can be accessed that is otherwise inaccessible to PicBasic.

Example:
CALL pass ' Execute assembly language subroutine named _pass

XX_CİHAN_XX

Evet basic ten fazla anlamam ama şukadarını söyleyebilirim.Call assembly e ait bir komuttur.Gosub ise aynı komutun basic versiyonudur.
Asm de ki bsf in basic versiyonu high dır mesela aynı mantık.
Call komutu yada basic teki gosub komutu ne işe mi yarar; aslan_korhan hocamın dediği gibi oluşturduğumuz alt programları çağırmaya yarar.Fakat basic tede asm ye geçmeden call komutunu kullanmaya izin vermişler sanırım.Bu durumda aralarında hiçbir fark kalmıyor :D
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

mustafa_cmbz

sağ olasın hocam dediğin gibi daha az yer kapladı ve kullandığım dil gibi basit oldu :D hocam bu gibi çok kullanılmayan konular nelerdir mesela ben helpten bakıyorum ama pek bişey anlamıyorum 2 satır kod ile örnek veriyor ve ingilizce onun için elinizde böyle bir dköüman varmı acaba kenarda köşede kalmış...

tyildizak

Arkadaşlar , konu açılmışken bir-iki şey sorayım dedim;
Varsayalım ASM deyip assembler'a geçtik. Buradan asm bloğundan çıkmadan basic ile yazdığımız rutinlere call yapmak mümkün mü?
Ya da programın bir yerindeki bir asm bloğundan başka bir yerindeki bir asm   bloğuna call yapabiliyor muyuz ,yapabiliyorsak ve programın genel boyutu 1 sayfadan büyükse pbp sayfa bitlerini yine kendi ayarlıyor mu?


.