PDA

Tam Sürümünü Görmek İçin : asembly de yazılmış ufak programlar


Gurhan
27/05/2003, 18:38
ya bana asemby de yazilmiş ufak bi kaç program lazım yardım edermisiniz program dediğime bakmayın
2 sayıyı
toplayan
çıkaran
çarpan
bölen
gibi ayrı ayrı ufak programlar lazım
vs..

saoğolun


Volkan Uzun
27/05/2003, 18:56
assembler kastettiğin sanırım.
program parcagi :
----------------
;carpma
mov ax,0002 ; ax registerinne 2 rakamını koy
mov bx,0004 ;bx registerine 4 rakamını koy
mul bx
---------------
aradigin bu tip bişimi yoksa komple program mı ?

ee++
27/05/2003, 22:14
Pek de lazim bir ayrinti degil ama her zaman gordugum icin deginmeden gecemeyecegim:

Malum dilin adi Assembler degil Assembly'dir.

Kolay gelsin..

ASA
28/05/2003, 18:06
Command'a gec,
debug yaz entera bas sonra a100 yaz entera bas
Asagidaki kodu yaz, nop'tan sonra iki kez entera bas.

[CODE]
mov ax,0008
mov bx,00010
add ax,bx
nop
[CODE]

Sonra
Uzunlugu al: h son_adres ilk_adres (Orn: h 10a 100)
Isim belirle: n hodo.com
CX'e (counting register) uzunlugu koy: rcx 000a
Kaydet: w

Adres dediklerim kodu yazmaya basladigin ilk satirin basindaki sayi (100) ve son satir (10a), bunlarin sonucu sana 000a degerini verir.

Islemin sonucu ax degi$keninde bulunur.

add yerine;
sub = cikarma
div = bolme
mul = carpma
idiv= i$aretli sayilari bolme (-)
imul= i$aretli sayilari carpma

:cool:

Gurhan
28/05/2003, 23:54
eyvallah arkadaşlar çok sağolun sanırım ASA nın verdikleri yeter
tekrar sağolun...

fixman
29/05/2003, 11:57
Sanırım bir bilgi yanlışı değil de yazım yanlışı :

mov bx,00010

yerine

mov bx,0010

yazmak gerekmiyor mu?

Bir de buradaki sayılar decimal mi? Pek decimal gibi durmuyorlar... Ne zamandır şu Assembly ile ilgilenmek istiyorum ama kahretsin ki bir türlü zaman ayıramıyorum...

Kaynak tavsiyeniz var mı? Hangi dilde olursa olsun...
Şimdi Gügül'de araştırma yapmak var ama belki siz beni doğru kaynaklara yönlendirebilirsiniz...

Sevgiler...

Volkan Uzun
29/05/2003, 14:06
assembler, işlemciye en bağlı olan dildir.
mov bx,00010 da olaiblir 0010 da,
işlemci ve cpuyu bilmeden bişi demek sanırım zor, uzun zamandır uğraşmadım, yanlışım var düzeltin lütfen

fixman
29/05/2003, 14:30
Ben deneyince hata verdi de sanal...
Cehaletimi bağışlayın...
Bir an sayı dört basamaklı olacak diye düşündüm...
Dört basamaklı yazınca da uyarı vermeden çalıştı...
Bi de bu rakamlar bildiğimiz 8 ve 10 sayılarını mı temsil ediyor?

Sevgi...

acemi
29/05/2003, 16:02
Birsey belirtilmezse decimal (onluk sistem), sonuna H konursa hexadecimal (onaltilik sistem) olarakkabul ediliyor galiba.

yani
mov ax, 10
mov ax, 00A0H

gibi

Volkan Uzun
29/05/2003, 17:12
hex ordaki sayilarin tümü
debug da h koymaya gerek yok
eger asanın yazdiği programi nasıl test ederim diyorsan :
------------
1- debug ( debug a girdik )
2- -n hodo.com ( dosyanın ismini verdik )
3- -l ( hodo.com u yukledik )
4- -r ( registerleri goster demek, ax, bx degerlerine dikkat )
4- -g 109 ( 109 yerine en son nop koydugun adresi yaz )
5- -r ( registerleri goster demektir şimdi tekrar ax bx dikkat)

ee++
29/05/2003, 17:40
16'lı sayıların soluna bir 0, sağına da bir h konulur.

mov ax, 0FFE4h

gibi. Dikkat edilmesi gereken bir nokta, yazmaç boyu ile uyumu sağlamaktır. Bu örnekte 2 bayt..

acemi'nin de dedigi gibi, hiç bir şey konmazsa sayı onluk olarak kabul edilir. Sadece sağına bir b konulursa da ikili olarak kabul edilir.

mov ax, 10; ax'e onluk sayı sistemindeki 10'un ikili karşılığını yazar.
mov ax, 00001010b; yukarıdaki ile aynı, ama sayı ikili verilmiş doğrudan

// Bu arada tekrar edeyim: Malum dilin adi Assembly, Assembler degil..

Volkan Uzun
29/05/2003, 18:58
eger asanin yazdigi gibi debug dan yapiyorsanız bu islemi
h belirtmesenizde, sayilar hextir.
deneyip gorebilirsiniz.
decimal değildir debugdaki hiçbir sayı.

ASA
29/05/2003, 20:29
Naapalim sanal_programci karde$im, geleneksel yollardan taviz vermeyi pek sevmeyen birisiyim ben. Netekim PHP scriptlerime de mutlaka "<?php" diyerek ba$larim "<?" degil :)

yazdiklarina ek olarak t ile kodu adim adim i$leterek "trace", yani takip edebilirsiniz.

Bir de direktiflerin ba$ina "-" i$aretini koymayiniz, hata verir.

:cool:

ee++
29/05/2003, 20:43
Orjinal mesajı gönderen sanal_programci
eger asanin yazdigi gibi debug dan yapiyorsanız bu islemi
h belirtmesenizde, sayilar hextir.
deneyip gorebilirsiniz.
decimal değildir debugdaki hiçbir sayı.

Programlar genelde Debug modda yazılmaz sanırım. Deneyip, görmeye de gerek yok, inanıyoruz.. :) Yeni başlayan birisi Debug modda filan yazmaz heralde, metin düzenleyicide yazıp, derleyiciden(Assembler) geçirir.. Dilin gerçek tanımı da burada uygulanır sanırım. Dil yukarıda bahsettiğim şekilde tanımlıyor sayı sabitlerini.

Tabi ki Debug modda da devam edilebilir, gerekli sözdizimi bilerek..

fixman
02/06/2003, 12:11
Peki neden

mov bx,00010

yazınca "Error" diyo bu meret???

Kaynak tavsiye edebilecek biri var mı?

Öyle mi yoksa böyle mi?

Nası oluyor yani?

trkaplan
27/06/2003, 23:46
Asa bunu kullanmayı nerden öğrendin? Ben herhangi bir program yüklemeden kod yazıp çalıştırılabileceğini ilk defa burada gördüm.
command ı kullanarak bunu yapmayı falan.

Algorismus
28/06/2003, 00:09
sayi binary ise sonuna b koy. yani 00010b
yok decimalsa 0 lari at bastan.
art of assembly diye bir kitap var tavsiye ederim.