Would you like to react to this message? Create an account in a few clicks or log in to continue.



|Başlık Sayısı :1981| Mesaj Sayısı:3050|
 
PortalAnasayfaGaleriLatest imagesAramaKayıt OlGiriş yap

 

 Assembly Öğreniyorum..!

Aşağa gitmek 
YazarMesaj
Bactry
ADMİN
ADMİN
Bactry


Erkek Mesaj Sayısı : 1774
Nerden : İstanbul
İş/Hobiler : Web Dizayn
Lakap : Bactry
<FONT color=red><B>Dikkat</FONT> :
Dikkat: Turk Forumzen Bağımlılık Yapabilir !!

<center><B><fieldset>Takım : Assembly Öğreniyorum..! Galata10
Ruh Hali : Assembly Öğreniyorum..! Delibo10
<br><FONT color=FFA500><B>Başarı :
Assembly Öğreniyorum..! Left_bar_bleue100 / 100100 / 100Assembly Öğreniyorum..! Right_bar_bleue

<FONT color=#00ccff><B>Güçlülük</FO :
Assembly Öğreniyorum..! Left_bar_bleue100 / 100100 / 100Assembly Öğreniyorum..! Right_bar_bleue

<FONT color=#008000><B>Aktiflik</FO :
Assembly Öğreniyorum..! Left_bar_bleue100 / 100100 / 100Assembly Öğreniyorum..! Right_bar_bleue

<br><FONT color=#ffff33><B>İLETİ : ЯΘCЌΣЯ-*
Kayıt tarihi : 16/02/08

Assembly Öğreniyorum..! Empty
MesajKonu: Assembly Öğreniyorum..!   Assembly Öğreniyorum..! Icon_minitimePerş. Mayıs 15, 2008 6:54 am

Merhaba arkadaşlar. bundan sonra bi terslik çıkmazsa burada assembly anlarmayı düünüyorum. bi alt yapı oluşturmak istiyen arkadaşlar dersleri takip edebilir.Bu kadar edebiyeat yeter başlıyalımAssembly Öğreniyorum..! Biggrin

öncelikle bazı terimleri açıklıyayım;

Bit:işlemciye gönderilen 1 veya 0 sinyali.
Byte:8 bitten oluşan bir dizidir.
Word(kelime):işlemci türüne göre değişen, işlemcinin bir anda işleyebildiği bit dizisidir. işlemciye göre değişir. örneğin 8 bitlik bi işlemcide 1 word=8 bittir.
Makina Dili:Mikroişlemcinin tanıyabildiği, 1 ve 0 dizilerinden oluşan dildir. Makine dili ile program yazmak zor olduğu için mnemonic adı verilen kısaltmalarla program yazma yoluna gidilmiştir. Bu mnemoniclerin oluşturduğu dile assembly adı verilir. Aseembly dili alt düzey bir dildir. Örnek: mov ax,0005 hexadesimal olarak: b80500 burada dikkatinizi çektiyse sayının lsb kısmı önce msb kısmı sonra yazılmıştır yani 0005=0500 şeklinde. Kod mikrişlemciye bu şekilde gönderilir.burada b8 ise mov komutunun hex karşılığı.
Kaydedicilerden birkaçından bahsedecek olursak
zero flag: bu sıfır bayrağıdır. işlemin sonucu 0 ise bu bayrak set edilir yani 1 olur eğer sonuç farklıysa bu bayrak 0 olur.
carry flag: elde bayrağı. Eğer işlem eldeli ise bu bayrak set edilir değilse 0 lanır.
negatif flag: eğer sayı negatif ise bu bayrak set edilir pozitif ise 0 lanır.

Aritmetik işlemler:
İkilik bir sayının negatifini alma
ilk önce sayının tersi alınır. Daha sonra 1 eklenir we sayının negatifi bulunmuş olur. Örneğin 1 sayısını lik tabanda gösterelim ve ters işaretini alalım. 00000001 tersi 11111110 1 eklersek 11111111 olur. Yani ikilik tabanda -1 = 11111111 dir. Şimdi sorarsınız o zmn 255 i nasıl ayırt edicez die. İşte cvp yukarıda söylediğim negatif flag sayesinde. Bu bayrak 1 se -1, 0 sa 255 dir.



Devam Edecek......
sorularınızı sorabilirsiniz.
Sayfa başına dön Aşağa gitmek
http://turk.forumzen.com
Bactry
ADMİN
ADMİN
Bactry


Erkek Mesaj Sayısı : 1774
Nerden : İstanbul
İş/Hobiler : Web Dizayn
Lakap : Bactry
<FONT color=red><B>Dikkat</FONT> :
Dikkat: Turk Forumzen Bağımlılık Yapabilir !!

<center><B><fieldset>Takım : Assembly Öğreniyorum..! Galata10
Ruh Hali : Assembly Öğreniyorum..! Delibo10
<br><FONT color=FFA500><B>Başarı :
Assembly Öğreniyorum..! Left_bar_bleue100 / 100100 / 100Assembly Öğreniyorum..! Right_bar_bleue

<FONT color=#00ccff><B>Güçlülük</FO :
Assembly Öğreniyorum..! Left_bar_bleue100 / 100100 / 100Assembly Öğreniyorum..! Right_bar_bleue

<FONT color=#008000><B>Aktiflik</FO :
Assembly Öğreniyorum..! Left_bar_bleue100 / 100100 / 100Assembly Öğreniyorum..! Right_bar_bleue

<br><FONT color=#ffff33><B>İLETİ : ЯΘCЌΣЯ-*
Kayıt tarihi : 16/02/08

Assembly Öğreniyorum..! Empty
MesajKonu: Geri: Assembly Öğreniyorum..!   Assembly Öğreniyorum..! Icon_minitimePerş. Mayıs 15, 2008 6:54 am

ewet işte devamı

ikilik tabanda çarpma
mikroişlemci çarpma işlemini sayıyı sola kaydırarak yapar. her kaydırma iki ile çarpma anlamına gelir.
örnegin 3 sayısını iki ile çarpalım:
00000011 ikilik tabanda 3 e eşittir. bir kez sola kaydırırsak 00000110 olur buda 6 ya eşittir. şimdide 3 ile çarpalım. 3 ile çarpmak için bir kez sola kaydırır ve sayıya kendisini ekleriz.00000110+00000011=00001001.
Kaydediciler(registers)
mikroişlemcide 4 adet ana kaydedici wardır bunlar ax,bx,cx,ve dx dir.
bu kadar genel bilgi yeter sıkıldım faaliyete geçelim
Assembly
burada size emu8086 yı anlatacağım.
değişken tanımlama
iki çeşit değişken tanımlama wardır.
1 byte tipi değişken tanımlama
2 word tipi değişken tanımlama
byte tipi değişken tanımlama db ile yapılır ve bir karakterlik bilgiyi saklıyabilir'a' gibi
word tipi değişken tanımlama dw ile yapılır ve iki karakterlik bilgiyi saklıyabilir 'ab' gibi.
örnek: sayı db 15 veya sayı dw 16f gibi.
Sayfa başına dön Aşağa gitmek
http://turk.forumzen.com
Bactry
ADMİN
ADMİN
Bactry


Erkek Mesaj Sayısı : 1774
Nerden : İstanbul
İş/Hobiler : Web Dizayn
Lakap : Bactry
<FONT color=red><B>Dikkat</FONT> :
Dikkat: Turk Forumzen Bağımlılık Yapabilir !!

<center><B><fieldset>Takım : Assembly Öğreniyorum..! Galata10
Ruh Hali : Assembly Öğreniyorum..! Delibo10
<br><FONT color=FFA500><B>Başarı :
Assembly Öğreniyorum..! Left_bar_bleue100 / 100100 / 100Assembly Öğreniyorum..! Right_bar_bleue

<FONT color=#00ccff><B>Güçlülük</FO :
Assembly Öğreniyorum..! Left_bar_bleue100 / 100100 / 100Assembly Öğreniyorum..! Right_bar_bleue

<FONT color=#008000><B>Aktiflik</FO :
Assembly Öğreniyorum..! Left_bar_bleue100 / 100100 / 100Assembly Öğreniyorum..! Right_bar_bleue

<br><FONT color=#ffff33><B>İLETİ : ЯΘCЌΣЯ-*
Kayıt tarihi : 16/02/08

Assembly Öğreniyorum..! Empty
MesajKonu: Geri: Assembly Öğreniyorum..!   Assembly Öğreniyorum..! Icon_minitimePerş. Mayıs 15, 2008 6:55 am

movlw k : sizin verecegınız degeri ( k ) yı w register ına yanı akumulatore yukler

movf f,d : f register ını ıcergını w ye ya da f e yukler. (Not: d=0 sa w yed=1 se kendıne)

movwf f : w reg.nın ıcerıgını f reg. ına yukler.

clrf f : f reg. ının ıcerıgını sıler.

clrw : w reg.ının ıcerıgını sıler.

comf f,d : f reg.ının complement' i alınır (terslenır) sonuc w ye ya da f ye yuklenır.

decf f,d : f reg.ının ıcerıgı 1 azaltılır sonuc w ya da f ye yazılır.(Not:reg. in ıcerıgı h'00' ıse 1 eksıltıldıgınde h'ff' olur).

incf f,d : f reg.inin icerigi 1 arttırılır sonuc w ya da f reg.ına yazılır.(Not:reg.in icerigi h'ff ' ıse 1 arttırıldıgında h'00' olur.

bcf f,b : f reg. inin icerıgındekı b.nıncı bıtı sıfırlar.

bsf f,b : f reg.inin icerigindekı b.ninci bıtı 1 yapar

rlf f,d : f reg.inin iceriginı 1 adım sola kaydırır.Sonuc w ye ya da f ye yazılır.
(Not:Reg. dan tasarak carry bayragına yazılan bıt, lsb ye yazılır.)

rrf f,d : f reg.inin icerıgını 1 adım saga kaydırır.Sonuc w ye ya da f ye yazılır.
(Not:Reg.dan tasarak carry bayragına yazılan bıt msb ye yazılır.

swapf f,d : f reg.ının ıcerıgını ılk 4 bıt ıle son 4 bıtı yer degıstırır.Sonuc w ye ya da f ye yazılır.

goto k : program k etıketının oldugu yere dallanır ve oradan ıtıbaren yoluna devam eder

call k : program k etıketının oldugu yerdekı alt programa dallanır ve buradan ıtıbaren yoluna devam eder.

return : Alt program komutlarının en altına yazılan bu komut program ısleyısını ana programa dondurur.

retlw h'ıstenılen sayı' : programımız alt programda devam ederken bu komut yazıldıgında bızı ana programa goturur ve w ye h'ıstenılen sayıyı' yukler.

retfie : Program akısını interrupt alt programından ana programa dondurur.

btfsc f,b : f reg.inin b ninci bitini kontrol eder bu bit 0 ıse program bır satır atlayarak yoluna devam eder.

btfss f,b : f reg.inin b ninci bitini kontrol eder bu but 1 ıse program bır satır atlayarak yoluna devam eder

decfsz f,d : f reg.ının icerigini 1 azaltır. Reg.ın ıcerıgı 0 ıse bır satır atlar sonucu w ye ya da f ye yazar.

incfsz f,d : f reg.inin icerigini 1 arttır reg.ın ıcerıgı 0 sa bır satır atlar sonucu w ye ya da f ye yazar.

clrwdt :Watchdog timer ı sıfırlar.Aynı zamanda watchdog tımer ın prescalar degerını de sıfırlar.Status bıtlerınden TO ve PD yı 1 yapar.

sleep : en harıka komuttur.programı ve kullanılan sıstemı uyuma moduna gecırır guc harcamasını da azaltmıs olur.Uyuma modundan reset,watchdog timer ve TOCKI girişi vasıtasıyla cıkar.

andlw k : w reg.inin icerigi ıle k sabiti(istenılen sayı) and ıslemıne taabı tutulur sonuc w ye yazılır.

andwf f,d : w reg.i ile file reg. ın ıcerıgı and ıslemıne taabı tutulur sonuc w ye ya da f ye yazılır.

ıorlw k :w reg.inin icerigi ıle k sabıtı(ıstenılen sayı) or ıslemıne taabı tutulur sonuc w ye yazılır.

ıorwf f,d : w reg.i ıle fıle reg.ın ıcerıgı or ıslemıne taabı tutulur sonuc w ya da f ye yazılır.

xorlw k :w reg.inin icerigi ıle k sabiti( istenılen sayı) xor ıslemı uygulanır sonuc w ye yazılır.

xorwf f,d :w reg.i ilefile reg.in icerigı xor ıslemıne taabı tutulur.Sonuc w ye ya da f ye yazılır.

addlw k :w reg. ının ıcerıgı k sabıtı ( ıstenılen sayı) toplanır.Sonuc w ye yazılır.

addwf f,d : w reg.inin icerigi f reg.i ile toplar.Sonuc w ye ya da f ye yazılır.

sublw k : k sabıt degerınden w reg. ı ıcerıgı cıkarılır sonuc w ye yazılır.

subwf f,d : f reg.inin iceriginden w reg.inin ıcergı cıkarılır sonuc w ye ya da f ye yazılır.

nop :Bır komut saykılı suresınce hıc bır ıslem yapılmasın emrını veren komuttur.
Sayfa başına dön Aşağa gitmek
http://turk.forumzen.com
Bactry
ADMİN
ADMİN
Bactry


Erkek Mesaj Sayısı : 1774
Nerden : İstanbul
İş/Hobiler : Web Dizayn
Lakap : Bactry
<FONT color=red><B>Dikkat</FONT> :
Dikkat: Turk Forumzen Bağımlılık Yapabilir !!

<center><B><fieldset>Takım : Assembly Öğreniyorum..! Galata10
Ruh Hali : Assembly Öğreniyorum..! Delibo10
<br><FONT color=FFA500><B>Başarı :
Assembly Öğreniyorum..! Left_bar_bleue100 / 100100 / 100Assembly Öğreniyorum..! Right_bar_bleue

<FONT color=#00ccff><B>Güçlülük</FO :
Assembly Öğreniyorum..! Left_bar_bleue100 / 100100 / 100Assembly Öğreniyorum..! Right_bar_bleue

<FONT color=#008000><B>Aktiflik</FO :
Assembly Öğreniyorum..! Left_bar_bleue100 / 100100 / 100Assembly Öğreniyorum..! Right_bar_bleue

<br><FONT color=#ffff33><B>İLETİ : ЯΘCЌΣЯ-*
Kayıt tarihi : 16/02/08

Assembly Öğreniyorum..! Empty
MesajKonu: Geri: Assembly Öğreniyorum..!   Assembly Öğreniyorum..! Icon_minitimePerş. Mayıs 15, 2008 6:57 am

AAA
Toplamadan sonra AL yazmacındaki paketli veriyi düzenler.
Etkilenen bayraklar.
A - C

AAD
Bölmeden sonra AX yazmacını düzenler
Etkilenen bayraklar.
S - Z - P

AAM
Çarpmadan sonra AX yazmacını düzenler.
Etkilenen bayraklar.
S - Z - P

AAS
Çıkartmadan sonra AL yi düzenler
Etkilenen bayraklar.
A - C

ADC hedef,kaynak
Hedef=hedef+kaynak+taşma işşlemini yapar
Etkilenen bayraklar.
O - S - Z - A - P - C

ADD hedef,kaynak
Hedef=hedef+kaynak
Etkilenen bayraklar.
A - C - O - P - S - Z

AND hedef,kaynak
Ve işlemini yapar. her iki bit set ise set sonucunu hedefe verir.
Etkilenen bayraklar.
O - C - P - S - Z

ARPL hedef,kaynak (286+)
Komutun alt programa erişimini denetler.
Etkilenen bayraklar.
Z

BOUND hedef,kaynak (188+)
Dizi sırasını alır.
Etkilenen bayraklar.
yok

BSF hedef,kaynak (386+)
Kaynağın ilk bitinin set kontrolü yapılır.
Etkilenen bayraklar.
Z

BSR hedef,kaynak (386+)
Kaynağın ilk bitinin set olup olmadığını kontrol eder.
Etkilenen bayraklar.
Z

BSWAP yazmaç (486+)
32 bitlik yazmacın kullanılamayan üst 16 bitini kollanılabilen alana alır.
Etkilenen bayraklar.
Yok

BT kaynak,konum (386+)
Belirtilen konumdaki bitin değerini taşma bayrağınu alır.
BTC kaynak,konum (386+)
Belirtilen konumdaki biti taşma bayrağının değeri ile yer değiştirir.
BTR kaynak,konum (386+)
Belirtilen konumdaki biti taşma bayrağına alıp, resetler.
BTS kaynak,konum (386+)
Belirtilen konumdaki biti taşma bayrağına alıp set eder.
Etkilenen bayraklar.
C

CALL konum
Alt program çağırır.
Etkilenen bayraklar.
yok

CBW
AL yi AX e yayar.
Etkilenen bayraklar.
yok

CDQ (386+)
EAX yazmacındaki doubleword bilgiyi EDX ve EAX alanına yayar.
Etkilenen bayraklar.
Yok.

CLC
Cary flangını resetler.
Etkilenen bayraklar.
C

CLD
Direction flangını resetler.
Etkilenen bayraklar.
D

CLI
Interrupt Flangını resetler.
Etkilenen bayraklar.
I

CLTS (+286)
Görev anahtarını resetler.
Etkilenen bayraklar.
MSW de TS

CMC
Cary flangının durumunu değiştirir.
Etkilenen bayraklar.
C

CMP hedef,kaynak
Karşılaştırma yapar.
Etkilenen bayraklar.
O - S - Z - A - P - C

CMPS hedef,kaynak
Stringleri karşılaştırır.
CMPSB
ES:SI ve DSI ile konumları belirtilen sitringlerin
CX deki kadar karakterini byte byte kıyaslar.
CMPSW
ES:SI ve DSI ile konumları belirtilen sitringlerin
CX deki kadar karakterini word word kıyaslar.
Etkilenen bayraklar.
C - A - P - O - S - Z

CMPXCHG hedef,kaynak
Kaynak Acumulator reğisteri ile karşılaştırılır.
Şayet eşit ise hedef kaynağa yüklenir.
Değilse acumulator kaynağa yüklenir.
Etkilenen bayraklar.
A - C - O - P - S - Z

CWD
AX deki işaretli sözcüğü DX ve AX e yayar.
Etkilenen bayraklar.
Yok

CWDE (+386)
AX heki değer EAX reğisterıne genişletilir.
Etkilnen bayraklar.
Yok.

DAA
AL yazmacındaki Toplama sonucunu desimal paketler.
Etkilenen bayraklar.
A - C - S - Z - P

DAS
Al yazmacındaki çıkartma sonucunu desimal pakatler.
Etkilenen bayraklar.
A - C - S - Z - P

DEC hedef
hedef=hedef-1 işlemini yapar.
Etkilenen bayraklar.
S - O - Z - A - P

DIV kaynak
Bölme işlemi yapar. Şayet Byte ile bölünüyorsa AX deki sayıyı böler.
Bu durumda AL bölüm AH kalan olu.
Word uzunluğunda bölme yapılıyorsa. DX ve AX çiftindeki sayıyı böler.
Bu durumda bölüm AX de kalan DX de saklanır.
Etkilenen bayraklar.
Yok

ENTER Bayt,Düzey (+188)
BP ile işaretli konumda stacta byte saklar.
Etkilenen bayraklar.
yok.

ESC işlemci_kodu,kaynak
Yardımcı işlemciye komut yollar.
Etkilenen bayraklar.
yok

HLT
Programı durdurur.
Etkilenen bayraklar.
yok.

IDIV kaynak
işaretli sayılarda bölme yapar. Şayet Byte ile bölünüyorsa AX deki sayıyı böler.
Bu durumda AL bölüm AH kalan olur.
Word uzunluğunda bölme yapılıyorsa. DX ve AX çiftindeki sayıyı böler.
Bu durumda bölüm AX de kalan DX de saklanır.
Etkilenen bayraklar.
yok.

IMUL kaynak
işaretli sayılarda çarpma yapar. Şayet Byte ile çarpılıyorsa AL deki sayıyı çarpar.
Bu durumda AX de sonuç olur.
Word uzunluğunda çarpma yapılıyorsa. AX yazmacındaki sayıyı çarpar.
Bu durumda sonuç DX ve AX çiftlerinde saklanır.
Etkilenen bayraklar.
O - C

IN toplayıcı,kıkış
Belirli bir sürücü çıkışındaki bilgiyi toplayıcıya alır.
Etkilenen bayraklar.
yok.

INC hedef
Hedef=hedef+1 işlemini yapar.
Etkilenen bayraklar.
S - O - Z - A - P

INS hedef_dizgi,çıkış (+188)
Diziye çıkıştan bilgi alır.
INSB (+188)
Çıkıştan ESI konumuna byte byte bilgi alır.
INSW (+188)
Çıkıştan ESI nonumuna word uzunluklu strinler alır.
Etkilenen bayraklar.
yok

INT Kesme
Bellekten kesme çağırır.
Etkilenen bayraklar.
tümü.

INTO
Taşma varsa INT 04H ı çaıştırır.
Etkilenen bayraklar.
Tümü.

INVD (+486)
Dahili bilgiler konumlarına yerleştirilir.
Etkilenen bayraklar.
Yok

INVLPG (+486)
Saklanan tanpon alana ulaşmayı geçersiz kılar.
Etkilenen bayraklar.
Yok.

IRET
İnterruptan çağrılan konuma geri döner.
Etkilenen bayraklar.
Tümü.

IRETD (+386)
Interrıptan çıkmak için kullanılır.
Saklanan CS:IP değerleri 32 bit olarak geri yüklenir.

JXX konum
Belli bir karşılaştırmadan sonra sıçramayı kontrol eder.
JA Büyükse sıçra
JAE Büyük eşitse sıçara
JB Küçükse sıçra
JBE Küçük eşitse sıçra
JC Taşma varsa sıçra.
JCXZ CX sıfırsa sıçra
JE Eşitse sıçra
JG Büyükse sıçra
JGE Büyük eşitse sıçra
JL Küçükse sıçra
JLE Küçük eşitse sıçra.
JNA Büyük değilse sıçra.
JNAE Büyük eşit değil ise sıçra.
JNB Küçük değilse sıçra.
JNBE Küçük eşit değil ise sıçra.
JNC Taşma yoksa sıçra.
JNE Eşit değilse sıçra.
JNG Büyük değilse sıçra.
JNGE Büyük eşit değilse sıçra.
JNL Küçük değilse sıçra
JNO Taşma yoksa sıçra.
JNP Bit sayısı çift değilse sıçra.
JNS İşaretli işlemler değilse sıçra.
JNZ Sıfır değilse sıçra.
JO Taşma varsa sıçra.
JP Bitlerin sayısı çift ise sıçra.
JPE Bitlerin sayısı cift ise sıçra.
JPO Bitlerin sayısı cift ise sıçra.
JS İşaretli işlemler ise sıçra.
JZ Sonuç sıfırsa sıçra.
Etkilenen bayraklar.
Tümü.

JMP konum
Belirtilen konuma sıçrar.
Etkilenen bayraklar.
Yok.

LAHF
Bağzı yazmaçları AH yazmacına yerleştirir.
AH nin şekli
_______________
|S|Z| |A| |P| |C|
olur.
Etkilenen bayraklar.
yok.

LAR erişim,seçici (+286)
Bir byte veriye erişir.
Etkilenen bayraklar.
Z

LDS hedef,kaynak
DS için dobleword uzunluklu veriyi göstergece yükler.
Etkilenen bayraklar.
yok

LES hedef,kaynak
ES için doubleword uzunluklu veriyi göstergece yükler.
Etkilenen bayraklar.
yok

LEA hedef,kaynak
Kaynağın offsetini hedefe alır.
Etkilenen bayraklar.
yok.

LEAVE (+188)
ENTER ile yer açılan kod için geri dönüş verir.
Etkilenen bayraklar.
yok

Devamı... *
Sayfa başına dön Aşağa gitmek
http://turk.forumzen.com
Bactry
ADMİN
ADMİN
Bactry


Erkek Mesaj Sayısı : 1774
Nerden : İstanbul
İş/Hobiler : Web Dizayn
Lakap : Bactry
<FONT color=red><B>Dikkat</FONT> :
Dikkat: Turk Forumzen Bağımlılık Yapabilir !!

<center><B><fieldset>Takım : Assembly Öğreniyorum..! Galata10
Ruh Hali : Assembly Öğreniyorum..! Delibo10
<br><FONT color=FFA500><B>Başarı :
Assembly Öğreniyorum..! Left_bar_bleue100 / 100100 / 100Assembly Öğreniyorum..! Right_bar_bleue

<FONT color=#00ccff><B>Güçlülük</FO :
Assembly Öğreniyorum..! Left_bar_bleue100 / 100100 / 100Assembly Öğreniyorum..! Right_bar_bleue

<FONT color=#008000><B>Aktiflik</FO :
Assembly Öğreniyorum..! Left_bar_bleue100 / 100100 / 100Assembly Öğreniyorum..! Right_bar_bleue

<br><FONT color=#ffff33><B>İLETİ : ЯΘCЌΣЯ-*
Kayıt tarihi : 16/02/08

Assembly Öğreniyorum..! Empty
MesajKonu: Geri: Assembly Öğreniyorum..!   Assembly Öğreniyorum..! Icon_minitimePerş. Mayıs 15, 2008 6:57 am

LFS hedef,kaynak (+386)
FS segmenti için bellekten bir göstergeç atar.
Bu yöntem ile FS içerisinden bir konum belirtilebilinir.
Kullanımı alt bellekteki varsayılan offseti içeren alanı bulmak içindir.
Böylece yığıt ve interrupt vektöründe bir göstergeç oluşmış olur.
Etkilenen bayraklar.
Yok

LGDT bellek (+286)
Bellekteki dözcük veriyi GDT yazmacına yükler.
Etkilenen bayraklar.
yok

LIDT bellek (+286)
Bellekteki sözcük veriyi IDT yazmacına yükler.
Etkilenen bayraklar.
yok

LGS hedef,kaynak (+386)
Ekstra data segmenti (GS) için bir işaretçi tanımlar
Etkilenen bayraklar.
Yok.

LLDS hedef (+286)
Yerel tanımlamalar tablosunu (LDS) yazmacını hedefe yükler.
Etkilenen bayraklar.
Yok

LMSW hedef (+286)
Belirtilen hedefe MSW sözcüğünü yukler.
Etkilenen bayraklar.
yok.

LOCK komut hedef,kaynak
Belirtilen veri yolu kilitleme sinyalini hedefe alır.
Alınan noktaya görebağzı komutları vardır. Bınlar
BT,BTS,BTR,BTC --> Bellekten yazmac yada anlık veriye.
XCG --> Yazmaçtan belleğe
XCG --> Bellekten yazmaca.
ADC,SUB,SBB,OR
XOR,AND,NOT
NEG,INC,DEC --> Bellekten yazmaca veye anlık veriye.
Etkilenen bayraklar.
yok

LODS dizgi
Belirtilen kaynaktan veri alır ve AX, veya AL yazmacına yükler.
Bu işlemi CX registerıne göre yapar.
LODSB
DS:SI konumundan byte veri alıp AL ye yükler.
Yön bayrağına göre SI değerini düzenler.
LOADSW
DS:SI konumundan word uzunluklu veri alıp AX e yükler.
Yön bayrağına göre SI değerini düzenler.
Etkilenen bayraklar.
Yok.

LOOP konum
CX değerini bir eksiltir eğer sonuç sıfır değilse belirtilen konuma sıçrar.
Etkilenen bayraklar.
yok

LOOPE konum
Bir karşılaştırma sonucu eşit çıktı ise ilgili konuma döngüyü devam ettirir.
LOOPNE konum
Bir karşılaştırma sonucu eşit çıkmadıysa döngüyü devam ettirir.
LOOPNZ konum
Bir karşılaştırma sonucu sıfır çıkmadıysa ilgili konuma döngüyü devam ettirir.
LOOPZ konum
Bir karşılaştırma sonucu sıfır çıktıysa ilgili konuma döngüyü devam ettirir.
Etkilenen bayraklar.
Yok.

LSL hedef,kaynak (+286)
sektör limiti yazmaçta belirlenebiliyorsa hedef bölgöye büyüklüğü yazılır.
Aksi taktirde sıfır bayrağı resetlenir.
Etkilenen bayraklar.
Z

LSS hedef,kaynak (+386)
Hedef register ve SS 32 bit genişlikli bellek alanına aktarılır.
Alcak ve yüksek bellek alanlarında içerilen offsetleri öğrenmekte kullanılır.
Yığıta ve interrupt vektörü tablosuna müdahale edebilir.
Etkilenen bayraklar.
Yok

LTR hedef (+286)
Word uzunluklu varsayılan görev yazmacını hedefe yükler.
Etkilenen bayraklar.
Yok

MOV hedef,kaynak
Belirtilen hedefe kaynağın değerini koyar.
Etkilenen bayraklar.
yok.

MOVSX hedef,kaynak (+386)
İşaretli sayıları taşır.
MOVZX hedef,kaynak (+386)
Bilgi transferi yapar, boş olan konumlara sıfır yerleştirir.
Etkilenen Bayraklar.
Yok

MOVS hedef,kaynak
CX değeri kadar bilgiyi kaynaktan hedefe taşır.
MOVSB
DS:SI bilgisini ESI konumuna byte byte taşır.
Yön bayrağına SI ve DI değerlerini ayarlar.
REP anahtarı ile CX kadar tekrarlatılabilinir.
MOVSW
DS:SI bilgisini ESI konumuna word uzunluklu taşır.
Yön bayrağına göre SI ve DI yazmaçlarını ayarlar.
REP anahtarı ile tekrar sayısı CX kadar ayarlanabilir.

MUL kaynak
Çarpma yapar. Şayet Byte ile çarpılıyorsa AL deki sayıyı çarpar.
Bu durumda AX de sonuç olur.
Word uzunluğunda çarpma yapılıyorsa. AX yazmacındaki sayıyı çarpar.
Bu durumda sonuç DX ve AX çiftlerinde saklanır.
Etkilenen bayraklar.
O - C

NEG hedef
Hedef konumundaki bilginin bitlerini ikinin tümleyeni şeklinde düzenler.
Etkilenen bayraklar.
O - S - Z - A - C - P

NOP
Hiç bir işlem yapmaz.
Etkilenen bayraklar.
Yok.

NOT hedef
Hedefteki bilgilerin bitleri set ise reset, reset ise set yapar.
Etkilenen bayraklar.
Yok.

OR hedef,kaynak
İki veriyi bit bit karşılaştırır.
Şayet herhangi bit set ise hedefteki biti set yapar.
Etkilenen bayraklar.
C - O - S - Z - P

OUT kapı,kaynak
Herhengibi çıkışa bilgi yollar.
Etkilenen bayraklar.
Yok.

OUTS kapı,dizgi (+188)
Belirtilen kapıya veri yollar.
Yön bayrağına göre sırayı ayarlar.
OUTSB (+188)
DX ile belirtilen çıkışa DS:SI konumundaki bilgiyi byte byte yollar.
Yön bayrağına göre SI değeri ayarlanır.
OUTSW (+188)
DX ile belirtilen çıkışa DS:SI konumundaki veriyi word uzunluklu aktarır.
Yön bayrağına göre SI değerini düzenler.
Etkilenen bayraklar.
Yok.

POP hedef
Hedefe yığıttan veri alır. SP yazmacını düzenler.
Etkilenen bayraklar.
Yok.

POPA (+188)
Yığıtta saklanan değerleri sırayla DI, SI, SP, BX, DX, CX, AX yazmaçlarına geri yükler.
POPAD (+386)
Yığıtta saklanan değerleri sırayla EDI, ESI, EBP, EBX, EDX, ECX, EAX yazmaçarına yükler
Etkilenen bayraklar.
Yok.

POPF
Bayrak yazmacını yığıttan geri yükler.
POPFD (+386)
EFlang yazmacını geri yükler.
Etkilenen bayraklar.
Bütün bayraklar.

PUSH kaynak
Kaynak veriyi yığıtta saklar ve SP registerını düzenler.
Etkilenen bayraklar.
Yok.

PUSHA
Sırayla AX, CX, DX, BX, SI, DI değerlerini yığıtta saklar.
PUSHAD (+386)
Sırayla EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI değerlerini yığıtta saklar.
Etkilenen bayraklar.
Yok.

PUSHF
Bayrak yazmacını yığıtta saklar.
PUSHFD (+386)
EFlang yazmacını yığıtta saklar.
Etkilenen bayraklar.
Yok.

RCL hedef,miktar
Taşma bayrağı ile birlikte ibtleri sola kaydırır.
|------->-----|
| |
C <-- Hedef <-
RCR hedef,miktar
Taşma bayrağı ile birlikte bitleri sağa kaydırır.
|-------<-----|
| |
C --> Hedef ->
ROL hedef,miktar
Hedef bitlerini sola doğrı döndürür.
|------->----|
| |
C --<---- Hedef -<-
ROR hedef,miktar
Hedef bitlerini sola doğru döndürür.
|--------<----|
| |
-- Hedef -->-----> C
Etkilenen bayraklar.
Yok.

REP Komut
Kendinden sonra gelen komutu CX yazmacındaki değer kadar tekrarlar.
İşlem sonucu CX değeri 0 olur.
REPE Komut
Kendisinden sonra gelen karşılaştırma komutu eşitliği sürdürdükçe devam eder.
İşlem CX kadar tekrarlanır. En sonunda CX değeri 0 olur.
REPNE komut
Kendisinden sonra gelen karşılaştırma komutu sıfır sonucunu vermedikçe devam eder.
İşlem CX kadar tekrarlanır. En sonunda CX değeri 0 olur.
REPZ
Kendisinden sonra gelen karşılaştırma komutu sıfır sonucunu verdiğikçe devam eder.
İşlem CX kadar tekrarlanır. En sonunda CX değeri 0 olur.
REPNE
Kendisinden sonra gelen karşılaştırma komutu eşitliği olmadıkça devam eder.
İşlem CX kadar tekrarlanır. En sonunda CX değeri 0 olur.
Etkilenen bayraklar.
Yok.

RET
CALL komutu ile çağrılan alt programdan çağrıldığı komuta geri döner.
RETF
Far pointer çağrıyı geri yükler.
RETN
Near pointer çağrıyı geri yükler.
Etkilenen bayraklar.
Yok.

SAHF
AH yazmacındaki belirli bitleri bayrak yazmacına kopyalar.
AH yazmacının durumu.
|S|Z| |A| |P| |C|
Etkilenen bayraklar.
S - Z - A - P - C

SAL hedef,miktar
SHL hedef,miktar
En duyarsız biti sıfır yaparak sola döndürme işlemi yapar.
C <----< Hedef <----< 0
Etkilenen bayraklar.
O - C - A - P - S

SAR hedef,miktar
SHR hedef,miktar
En duyarlı biti sıfır yaparak sola kaydırma yapar.
0 >----> Hedef >----> C
Etkilenen bayraklar.
O - C - A - P - S

SBB hedef,kaynak
Tamsayılarla çıkartma işlemi yapar.
Hedef=hedef-kaynak-taşma bayrağı işlemini gerçekleştirir.
Etkilenen bayraklar.
O - S - Z - P - C - A

SCAS hedef
String veriyi karşılaştırır.
REP anahtarı ile CX kadar tekrar ettirilebilinir.
ESI ile işaretlenen veriyi tarar. Bunun için AX veya AL yi kullanır.
SCASB
Byte formatında string veriyi karşılaştırır.
Bunun için ESI ve AL verilerini kullanır.
SCASW
Word uzunluklu stringleri karşılaştırır bunun için ESI ve AX yazmaclarını kullanır.
Etkilenen bayraklar.
O - S - Z - P - C - A

SETAE (+386)
SETNB (+386)
SETB (+386)
SETNAE (+386)
SETBE (+386)
SETNA (+386)
SETE (+386)
SETZ (+386)
SETNE (+386)
SETNZ (+386)
SETL (+386)
SETNL (+386)
SETLE (+386)
SETNG (+386)
SETG (+386)
SETNLE (+386)
SETS (+386)
SETNS (+386)
SETC (+386)
SETO (+386)
SETNO (+386)
SETP (+386)
SETPE (+386)
SETNP (+386)
SETPO (+386)

SGDT hedef (+286)
Genel tanımlamalar tablosu (GDT) yazmacını belirtilen konuma alır.
Etkilenen bayraklar.
Yok.

SIDT hedef (+286)
İnterrupt bilgi tablosu (IDT) yazmacını belirtilen hedefe yazar.
Etkilenen bayraklar.
Yok.

SHLD hedef1,hedef2,miktar (+386)
Belirtilen ilk hedefin bilgilerini sola doğru belirtilen miktarda kaydırır.
Bu esnada ikinci kaynağın bitleri kullanılır.
SHRD (+386)
Belirtilen ilk hedefin bilgilerini saga doğru belirtilen miktarda kaydırır.
Bu esnada ikinci kaynağın bitleri kullanılır.
Etkilenen bayraklar.
C - P - S - Z - O - A

SLDT hedef (+286)
Yerel tanımlama tablosu (LDT) yazmacındaki word uzunluklu bilgiyi hedefte saklar.
Etkilenen bayraklar.
Yok

SWSW hedef (+286)
Hedef alanda word uzunluklu olan MSW registerını alır.
Etkilenen bayraklar.
Yok.

STC
Taşma bayrağını set eder.
Etkilenen bayraklar.
C

STD
Yön bayrağını set eder.
Etkilenen bayraklar.
D

STI
Interrupt bayrağını set eder.
Etkilenen bayraklar.
I

STOS hedef
AL veya AX deki veriyi hedef bellek alanına yollar.
REP anahtarı kullanılabilir.
STOSB
AL yazmacındaki değeri ESI alanına yollar.
REP anahtarı ile CX kadar tekrarlatılabilinir.
Daha sonra DI yazmacı yön bayrağına göre düzenlenir.
STOSW
AX yazmacındaki değeri ESI konumuna yollar.
REP anahtarı ile CX kadar tekrarlatılabilinir.
Yön bayrağına göre DI değeri ayarlanır.
Etkilenen bayraklar.
Yok.

STR hedef (+286)
Görev yazmacını word uzunluklu hedef alana yazar.
Etkilenen bayraklar.
Yok.

SUB hedef,kaynak
Hedef=hedef-kaynak işlemini gerçekleştirir.
Etkilenen bayraklar.
O - S - Z - P - A - C

TEST hedef,kaynak
Hedef ve kaynak arasında and işlemi yapar.
Fakat hedef değeri değişmez, sadece bayraklar ayarlanır.
Etkilenen bayraklar.
O - C - S - Z - P

VERR kaynak (+286)
Öz segment ve konumdaki geçerli değer ve okunabilir ayrıcalıklı konumlar alır.
İşlem başarısız olursa sıfır bayrağını set eder.
VERW kaynak (+286)
Öz segment ve konumdaki geçerli değer ve yazılabilir ayrıcalıklı konumları yazar.
İşlem başarısız olursa sıfır bayrağını set eder.
Etkilenen bayraklar.
Z

WAIT
FWAIT
Herhangibir program interrupt çağırana kadar programı durdurur.
Amacı programları eşzamanlı yapmaktır.
Etkilenen bayraklar.
Yok.

WBINVD (+486)
Dahili bilgileri alır, sonra dışarıdaki kaynağa varsayılan bilgiyi yollar.
Ardından bu bilgileri varsayılan datanın içine alır.
Etkilenen bayraklar.
Yok.

XCHG hedef,kaynakXLAT kaynak
DS:BX ile gösterilen kaynak veri AL yazmacına taşır.
XLATB
DS:EBX ile işaretlenen veriyi AL yazmacına taşır.
Etkilenen bayraklar.
Yok.

XOR hedef,kaynak
Hedef ve kaynak veri arasında mantıksal veya işlemini gerçekleştirir.
Sonuç hedef olarak belirtilen konumda saklanır.
Bu işlem iki bitten yanlız biri set olması durumunda hedef alanı set eder.
Etkilenen bayraklar.
Yok.
Sayfa başına dön Aşağa gitmek
http://turk.forumzen.com
Bactry
ADMİN
ADMİN
Bactry


Erkek Mesaj Sayısı : 1774
Nerden : İstanbul
İş/Hobiler : Web Dizayn
Lakap : Bactry
<FONT color=red><B>Dikkat</FONT> :
Dikkat: Turk Forumzen Bağımlılık Yapabilir !!

<center><B><fieldset>Takım : Assembly Öğreniyorum..! Galata10
Ruh Hali : Assembly Öğreniyorum..! Delibo10
<br><FONT color=FFA500><B>Başarı :
Assembly Öğreniyorum..! Left_bar_bleue100 / 100100 / 100Assembly Öğreniyorum..! Right_bar_bleue

<FONT color=#00ccff><B>Güçlülük</FO :
Assembly Öğreniyorum..! Left_bar_bleue100 / 100100 / 100Assembly Öğreniyorum..! Right_bar_bleue

<FONT color=#008000><B>Aktiflik</FO :
Assembly Öğreniyorum..! Left_bar_bleue100 / 100100 / 100Assembly Öğreniyorum..! Right_bar_bleue

<br><FONT color=#ffff33><B>İLETİ : ЯΘCЌΣЯ-*
Kayıt tarihi : 16/02/08

Assembly Öğreniyorum..! Empty
MesajKonu: Geri: Assembly Öğreniyorum..!   Assembly Öğreniyorum..! Icon_minitimePerş. Mayıs 15, 2008 6:57 am

Assembly nin kod yapısına geçmeden önce bilinmesi gerekli diye düşündüğüm bilgilerimi yazmak istedim.
Bütün programlama dilleri kullanılarak yazılmış programlar makine diline dönüştürülerek çalıştırılır.Assembly dilinden makine diline dönüştürme işlemi yapan programlara Assembler denir.
Diğer programla dillerinde yazılan programlar iki şekilde çalışabilirler.ya tamamen makine diline dönüştürülür çalıştırılır yada programın her satırı aracı başka bir program tarafından yorumlanarak adım adım çalıştırılır.Program kodunu makine diline dönüştüren programlara compiler (derleyici) denir.Pascal C gibi diller birer compiler dır.programın her satırını yorumlayan programlara ise İnterpreter (yorumlayıcı) denir.basic ve java gibi diller yorumlayıcıdır.
Assembly dilinin komut yapısı
Açıklama Alanları : Açıklama satırlarının başına ; konularak yapılır.
örn: MOV EDX,2025H ; 2025H sayısını EDX kaydedicisine yükle
ADD EAX,EDX ;EDX değerini EAX kaydedicisine ekle
Etiket Alanları : Kullanılması zorunlu olmamakla birlikte eğer kullanılıyorsa komut satırının ilk bilgisini oluşturur.Etiketin ilk karakteri sayısal olmamak farkıyla tüm karakterler kullanılabilir.
örn: ORTAL PROC

Komut alanı : Komutun anlamını veren kelimelerin kısaltılarak yazılmış şeklinde olan anlamlı kelimelerdir.Bu şekilde kısaltma işlemine mnemonik denir.
Örn: MOVE - MOV olarak kıslaltılmıştır , JUMP NOT EQUİEL - JNE gibi..

Operant alanı : işlemciye gönderilecek işlenecek verileri içerir.
örn : ADD AX,[BX]
MOV CX,00
JNE snforta

TALİMATLAR
Komut alanında ikitür ifade yer alır.bunlar komutlar ve talimatlardır.komutlar doğrudan işlemciyi hedef alırken talimatlar Assembler i hedef alır.Talimatlar komutların belli kurallar düzeni içerisinde işlemciye iletilmek üzere assemblere verilmesidir.
Listeleme talimatları : derlenmiş bir programdaki safya formatı program başlığı alt başlıklar gibi tanımlamalar yazım formatını belirler.PAGE ve TİTLE sayfa yapısını ve program başlığını belirler.
PAGE 60,120 komutu sayfayı 60 satır ve 120 sütun olarak ayarlar.
TİTLE assembly de yazılan programa isim vermek için kullanılır.

Data Talimatları:
Segment talimatları: bir segmente başlamada kullanılır.segmentlerin isimleri vardır.bir isimle başlatılan segment aynı isimle ENDS komutu kullanılarak bitirilir.

Bir progrmda programın tipine göre ( com veya exe) bir veya birden fazla segment tanımlanabilir.
Codesegment komutların yerleştirildiği,datasegment verilerin depolandığı,Stacksegment ise yığın işlemlerinin gerçekleştirildiği alanları ifade eder.

Proc Talimatı
Assembly dilinde özel bir amaç için üretilmiş olan kod parçalarına Procedure denir.Procedure tanımlaması:

PROC ADI PROC FOR/NEAR

PROC ADI ENDP
özel bir amaç için tanımlanmış ana procedure parogramın giriş , icra ve sonuç aşamalarını içinde barındırır.Ana procedure içinde genellikle önceden tanımlanmış procedurelerin çağrıları yapılır.bir procedure CALL PROCADI şeklinde çağırılır.FOR / NEAR parametreleri çağrılacak olan procedurenün aynı segmenttemi yoksa başka segmenttemi olduğunu belirtir.aynı segmentteyse Near değilse For
Ana procedure tamamlandığında ENDP yerine END kullanılır.

örnek olarakta assembly de toplama işlemini yapayım.
PASCAL İÇİN
VAR
SAYI1,SAYI2,TOPLAM :BYTE;
BEGİN
SAYI1:=25;
SAYI2:=45;
ASM
MOV AL,SAYI1
ADD AL,SAYI2
MOV TOPLAM ,AL
END;
WRİTE(TOPLAM);
READLN;
END.

Alıntı değildir! tamamen oturup kendim yazdım.umarım ön giriş için işinize yarar.
bunlar temel bilgilerdir.
sağlıcakla kalınAssembly Öğreniyorum..! Biggrin
Sayfa başına dön Aşağa gitmek
http://turk.forumzen.com
 
Assembly Öğreniyorum..!
Sayfa başına dön 
1 sayfadaki 1 sayfası
 Similar topics
-

Bu forumun müsaadesi var:Bu forumdaki mesajlara cevap veremezsiniz
 :: Programlama Dilleri :: Programlama-
Buraya geçin:  
Powered by phpBB ©
© 2007, 2008 Forumzen
Powered ßy como TeaM
Forum kurmak | ©phpBB | Bedava yardımlaşma forumu | Suistimalı göstermek | Son tartışmalar