Esen;
Arkadaşlar daha önce Fibonacci Dizisini hesaplayan bir programı hazırlayıp buraya eklemiştim. Hatta aşağıdaki dosyadan da indirebilirsiniz:
[dm]105[/dm]
Komut satırına yazdırma fonksiyonları ile çalışırken Fibonacci dizisini komut satırına yazan bir uygulama daha yazdım. Burada dursun.
[dm]132[/dm]
.386 ;kullandığımız opcodeların hangi işlemci setine bağlı olduğu .model flat, stdcall ;32 bit hafıza modeli option casemap :none ;büyük küçük harfe duyarlı include windows.inc include masm32.inc include user32.inc include kernel32.inc include msvcrt.inc include \masm32\macros\macros.asm ; masm32 makro dosyası includelib masm32.lib includelib user32.lib includelib kernel32.lib includelib msvcrt.lib .stack 4096 .const .data ksBaslik db "Komut Satirinda Fibonacci Dizisi",0 .data? ;genelTampon db 1024 (?) .code start: call main exit main proc LOCAL tampon1:DWORD ; DWORD boyutunda bir değişken tanımladım LOCAL tampon2:DWORD ;Bu api ile komut satırı penceresine başlık atabiliyoruz: invoke SetConsoleTitle,addr ksBaslik invoke ClearScreen ;ekranı temizler printf("**************************************************************\n") printf("* Komut Satirinda Fibonacci Sayilari Listeleyici *\n") printf("**************************************************************\n\n") mov tampon1, input("Bir tamsayi giriniz",9,9,":") mov tampon1, uval(tampon1) mov tampon2,0 print chr$("0",13,10);dizi 0 ile başlıyor mov eax,0 ;eax = 0 mov ebx,1 ;ebx = 1 _dongubasi: xchg eax,ebx ;eax ve ebx değerlerinin yerini değiştir add eax,ebx ;eax = eax + ebx cmp eax,tampon1 ;kümülatif eax değeri kullanıcının girdiği sayıdan büyük oldu mu? ja _Son ;evet büyükse Son a dallan mov tampon2,eax ;küçükse eax içindeki değeri tampona ata push eax ;eaxi yığına at print str$(tampon2) print chr$(13,10) ;invoke wsprintfA, addr tampon, addr format,tampon;onluka tabana çevir ;invoke SendMessage,hSerial,LB_ADDSTRING,0,addr tampon;listeye yaz pop eax ;yığından eax değerini çağır cmp eax,tampon1 ;tekrar kontrol jb _dongubasi ;küçükse döngübaşına dallan ve tekrar çalışıtır _Son: xor eax,eax inkey ;mov eax, input(13,10,"Cikmak icin bir tusa bas...") ; bu da konsol penceresenin hemen kapanmaması için bir başka yöntem invoke ExitProcess,0 main endp end start
Comments of this post