Gönderen Konu: ASM Dokumani  (Okunma sayısı 8756 defa)

ASM Dokumani

« : 04.09.2005 20:53:53 »
Hızlı düğmeleri aç

Bakkada

İleti: 1.073

Çevrimdışı
  • *****
  • Hero Member
    • Profili Görüntüle
Arkadaslar ;

DemoScene konusunda PC uzerinde togunlasmak istiyorum.Simdiye kadar gezdigim sitelerin ve okudugum FAQ'larin cogunda bu isin derinine inmek icin ASM bilmenin sart oldugunu hissettim.

Simdi durumumu da kisaca acikliyayim;ben aslinda Bil.Pro mezunuyum ama cok basarili bir coder degilim.Okuldan sonra da bu tam olarak programcilikla ilgili bi is bulamadigim icin temel mantik ve C'de kod yazmak disinda aklimda pek bise kalmadi.

Konumuza geri donelim.Ingilizce veya TR ASM dokumani aramaktayim ama yeni basliyanlar icin olursa yani resmen ASM For Idiots :) ariyorum.Bazi dokumanlar okuyorum ama C gibi deil ki :) cogu sey havada kaliyo...

Yardimlarinizi bekkler sevgiler ve saygilar sunarim...

ASM Dokumani

« Yanıtla #1 : 04.09.2005 21:17:12 »
Hızlı düğmeleri aç

skate

İleti: 5.245

A Sinner Scener
Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.akaydin.com/

ASM Dokumani

« Yanıtla #2 : 04.09.2005 21:26:12 »
Hızlı düğmeleri aç

skate

İleti: 5.245

A Sinner Scener
Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.akaydin.com/
Sana bir iki örnek code paste ediim.

Kod: [Seç]
PUSH  DS
MOV   AX,0000
PUSH  AX
MOV   AX,A000
MOV   DS,AX
MOV   AX,0013
INT   10
MOV   BX,7DA0
MOV   AH,0E
MOV   [BX],AH
MOV   AH,01
INT   21
MOV   AX,0003
INT   10
RET

Bu code ekrana 320x200 ekran açar ve ekranın (160,100) koordinatına (orta noktasına) sarı renkte bir nokta basar.

Kod: [Seç]
PUSH  DS
MOV   AX,0000
PUSH  AX
MOV   AX,A000
MOV   DS,AX
MOV   AX,0013
INT   10
MOV   CX,FD3C
MOV   BX,CX
MOV   [BX],BL
LOOP  0112
MOV   AH,01
INT   21
MOV   AX,0003
INT   10
RET

Bu ise ekranın tamamını default palet renkleriyle doldurur.

Bu iki örnek asm çalışırken ilk olarak yaptığım iki code idi. Bunun için sana da bunları yolluyorum. Benim başlangıç noktam belki sana yol gösterir diye :)

Bu arada bikaç dip not

MOV     AX,0013
INT     10

Bu 13H yani 320x200 256 renk ekran modunu açar

MOV     AX,0003
INT     10

Bu ise yeniden text mode'a geri döndürür.

MOV     AH,01
INT     21

Bu da herhangi bir tuşa basılana kadar bekletir.

LOOP ise her seferinde CX register'ının değerini bir azaltır ve 0 olunca döngüden çıkar.

Registerlar 16 bittir. AH, AL şeklinde kullanıldıklarında 8'er bit low ve high bytelarını oluştururlar. AX şeklinde ise 16 bit kullanılabilirler.

Örnek olarak

MOV AL, 00
MOV AH, 13
INT 10

diyebilir ya da kısaca

MOV AX, 0013
INT 10

diyebiliriz.

v.s. v.s.

Ben 6502 ASM bilirim x86 ailesinde çok iyi değilimdir... Benden bu kadar.

ASM Dokumani

« Yanıtla #3 : 04.09.2005 21:26:50 »
Hızlı düğmeleri aç

spritus

İleti: 933

Çevrimdışı
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://resident.tr-demoscene.info
her pc coder'inin basucu kaynagI:

http://pittt.free.fr/brol/coursAsm/helppc.exe

ASM Dokumani

« Yanıtla #4 : 04.09.2005 22:25:41 »
Hızlı düğmeleri aç

Bakkada

İleti: 1.073

Çevrimdışı
  • *****
  • Hero Member
    • Profili Görüntüle
Cok sagolun arkadaslar...
Linkleri bir gezeyim biraz ozumsiyeyim yeni yeni sorularla yeniden aranizdfa olucam :)
(TRT anonsu gibi oldu) :)

Bu arada ASM kodu yazarken hangi editoru kullanabiliriz bi de elimiz degmisken bi editor onerirseniz cok sevinirim...

ASM Dokumani

« Yanıtla #5 : 05.09.2005 01:44:09 »
Hızlı düğmeleri aç

spaztica

İleti: 1.493

Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
şık mallarmış bunlar; ben de biraz inceleyeyim ve teşekkürler skate, spritus...

ASM Dokumani

« Yanıtla #6 : 05.09.2005 01:46:33 »
Hızlı düğmeleri aç

skate

İleti: 5.245

A Sinner Scener
Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.akaydin.com/
Ben sana EditPlus'ı öneririm. Son birkaç aydır visual olmayan tüm diller için bu editörü kullanıyorum. Şu ana kadar editörü kullandığım ya da en azından test ettiğim diller.

6502 Assembler
MAX Script
HTML/Javascript
PHP
ASP
C# (Console)
SQL

Bu dillerin haricinde

XML
INI
BAT

gibi dosya formatlarını renklendirmede de oldukça başarılı.

Her dil için renklendirme dosyasını bulabiliyorsun çünkü kendin de dil dosyası hazırlayabiliyorsun. Elbette ki hazırlamana gerek kalmıyor çünkü dünyadan birileri çoktan senin yerine hazırlamış ve editplus'ın sayfaya koymuş oluyor. Sen de indirip keyfine bakıyorsun.

Elbetteki bu editör'ün compiler özelliği yok. Ancak shortcut keylerle istediğin actionı yaratabiliyorsun. Örnek olarak ben c64 için ACME kullanıyorum. CTRL+1 tuş kombinasyonu otomatik olarak o anda yazdığım kodu kaydediyor, ACME'ye parametre olarak yolluyor (bunun için batch (BAT) dosyası kullanıyorum) ve ACME'nin ürettiği prg dosyası da otomatik olarak VICE ya da CCS64'den çalıştırılıyor ve sonucunu görüyorum. Anlayacağın bu editörü kullanarak CTRL+1 tuş kombinasyonuyla yazdığım kodun sonucunu anında görebiliyorum.

Sen de herhangi bir ASM compiler bul x86 ailesi için ve EditPlus kullanarak code yazmanın rahatlığını yaşa :)

Editörün auto-complation, column block copy ve advanced bir find&replace (elbetteki regular expression destekli) özelliği mevcut. Bunların haricinde 100lerce dosyayı 1-2 sn.de açabiliyor ve tüm dosyalar üzerinde find&replace işlemini 1 sn'den kısa sürede yapabiliyor. Ben 400 dosyayı aşkın PHP projelerimde köklü değişiklikleri bu programı kullanarak birkaç dakikada yapabiliyorum.

Peki program free mi? Hayır. Ben bir süre crack kullandıktan sonra iki-üç ay önce satın aldım. Fiyatı tek kullanıcı için $30.

http://www.editplus.com/

Sitede user files bölümüne girerseniz göreceksiniz ki 98 yılından 2005'e kadar sürekli yeni renklendirme ve auto complation dosyaları eklenmiş.

Son bir özellik ise, HTML projeleri için ek özellikler buttonlar ve program içinden preview sağlaması ( CTRL+B ). Analayacağınız gibi tek tavsiyemdir :)

ASM Dokumani

« Yanıtla #7 : 05.09.2005 03:37:50 »
Hızlı düğmeleri aç

spaztica

İleti: 1.493

Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
EditPlus için ayrı bir güzellik de HTMLTidy, C Compiler ve ActionScript Compilerile çok temiz çalışabilmesi. İdeal coder tool'u diyebilirim...

ASM Dokumani

« Yanıtla #8 : 05.09.2005 09:42:15 »
Hızlı düğmeleri aç

spritus

İleti: 933

Çevrimdışı
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://resident.tr-demoscene.info
ben de compiler tavsiye edeyim bari : flat assembler

http://flatassembler.net

süperdir. linking problemi yok, parametre karmaşası yok, pseudo'larla segment ayarları yapmaya gerek yok. com yazmak için direk olarak .ORG 0100H yazıp başlayın.

ASM Dokumani

« Yanıtla #9 : 05.09.2005 20:17:48 »
Hızlı düğmeleri aç

hades

İleti: 214

Çevrimdışı
  • ***
  • Full Member
    • Profili Görüntüle
bende 2 link vereyim. gerçi pcde programlama bilgim kocaman bir SIFIR'dır.
En azından ilgilenenlere faydası olur.

http://ivs.cs.uni-magdeburg.de/~zbrog/asm/interrupt.html

http://www.uv.tietgen.dk/staff/mlha/PC/Prog/ASM/index.htm

ASM Dokumani

« Yanıtla #10 : 06.09.2005 19:12:20 »
Hızlı düğmeleri aç

retrolifter

İleti: 15

Çevrimdışı
  • *
  • Newbie
    • Profili Görüntüle
c64 asm için editör :

http://www.koolpeople.de/html/relaunch64.html

pek çok c64 coder ı bunu kullanıyor. acme ile ortak çalışıyor

ASM Dokumani

« Yanıtla #11 : 07.09.2005 02:26:52 »
Hızlı düğmeleri aç

skate

İleti: 5.245

A Sinner Scener
Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.akaydin.com/
Programın Almanca olmak dışında bir problemi yok :) İnceledim, içinde FLI basma template kodlarına varıncaya kadar birçok özellik var. Ancak elbette ki bu tür şeyleri hazır kullanmak hiç de hoş olmaz, 64'ün ruhuna aykırı. Yine de yapanları tebrik etmek lazım. Ancak ilginç bir şekilde editöre bin tane özellik eklemişler, renklendirmeyi göremedim birtek :blink: bence en önemli özelliklerden biri renklendirme ve editplus'ı tercih ederim sırf bu yüzden.

retrolifter: editör linki için sağol, ilerde işime yarayabilir.

ASM Dokumani

« Yanıtla #12 : 07.09.2005 09:13:38 »
Hızlı düğmeleri aç

Bakkada

İleti: 1.073

Çevrimdışı
  • *****
  • Hero Member
    • Profili Görüntüle
Dokumanlari yavas yavas karistiriyorum da normal programlamaya pek benzemiyo ASM kafamda tam kurguliyamadim su dokumanlarin hepsini bi bitiriyim soru yagmuru basliycak :)

ASM Dokumani

« Yanıtla #13 : 07.09.2005 10:01:29 »
Hızlı düğmeleri aç

skate

İleti: 5.245

A Sinner Scener
Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.akaydin.com/
Aslında "normal programlama" dediğin şey ASM'dir diyebiliriz. Diğer tüm diller ondan türediği ve ona dayandığı için bir programcının teoride en rahat anlaması gereken dil Assembler'dır. Ancak tabii bir de alışkanlık meselesi var. Sen senelerce C/C++, VB, Pascal, Delphi v.s. kullandıysan Assembler zor ya da en azından farklı gelebilir. ASM'nin programcılara kolay geldiği nokta şu. Ben C64'ün 6502 ASM yapısını çok iyi bilirim. Bu sayede x86 ailesine ya da Z80 (Spectrum) ASM'ye geçiş yaptığımda benim dertlerim şöyle sıralanabilir.

1) Bu ASM'de hangi registerlar var ve kaç bit?
2) Nasıl bir registera değer atar, o değeri hafızaya yazar ve bunları point ettirerek kullanabilirim?
3) Genel opcodelar hangileri? (bit shifting, or, and, xor(eor), jmp v.s.)
4) Loop komutları nelerdir?
5) Hangi flagler var ve hangi opcodelar ile kontrol edilebiliyorlar? (carry flag, zero flag, negative flag v.s.)
6) Makinenin genel hafıza adreslemesi, bank/segment mantığı nasıldır?
7) Özel hafıza adresleri (ekran adresleri v.s.) ve ROM adresleri nelerdir?

7 maddede sıraladım ancak elbetteki bunları öğrenmek vakit alıyor. Yine de öğrendikten sonra ASM ASM'dir, bu platformlarda da istediğimizi yapabiliriz.

Gelelim diğer dillere. MAX Script öğrenmeye çalış örneğin. Basit bir scripting dili ancak tamamen kendi notasyonlarına sahip ve 3-4 farklı dilin (basic, pascal, c, php v.s.) çeşitli izlerini taşıyor. Bu dili de sıfırdan öğrenmek assembler kadar zor bence çünkü herşeyi o dile özgü öğrenmek gerekiyor. Ancak diyelim ki eşit derecede MAX Script ve ASM biliyoruz. Elbette ki MAX Script'de çok daha hızlı code yazabiliriz. ASM'de ise "ne yaptığımızın tam olarak farkında olarak" daha uzun bir süreçte aynı code'u yazarız.

En kötü dil yapısı bence bazı basic dilleri gibi interpreted dillerdir. Bu dillerin oluşturduğu ASM code, en sıradan ASM'cinin dahi hayatta yazmayacağı kadar unoptimize bir sonuç çıkarır ortaya. Debug etmesi ASM tarafında imkansızdır. Özel debugging toolları geliştirmek gerekir.

ASM Dokumani

« Yanıtla #14 : 07.09.2005 11:06:21 »
Hızlı düğmeleri aç

Bakkada

İleti: 1.073

Çevrimdışı
  • *****
  • Hero Member
    • Profili Görüntüle
Alıntı
Originally posted by skate@Sep 7 2005, 09:01 AM
Aslında "normal programlama" dediğin şey ASM'dir diyebiliriz. Diğer tüm diller ondan türediği ve ona dayandığı için bir programcının teoride en rahat anlaması gereken dil Assembler'dır. Ancak tabii bir de alışkanlık meselesi var. Sen senelerce C/C++, VB, Pascal, Delphi v.s. kullandıysan Assembler zor ya da en azından farklı gelebilir. ASM'nin programcılara kolay geldiği nokta şu. Ben C64'ün 6502 ASM yapısını çok iyi bilirim. Bu sayede x86 ailesine ya da Z80 (Spectrum) ASM'ye geçiş yaptığımda benim dertlerim şöyle sıralanabilir.

1) Bu ASM'de hangi registerlar var ve kaç bit?
2) Nasıl bir registera değer atar, o değeri hafızaya yazar ve bunları point ettirerek kullanabilirim?
3) Genel opcodelar hangileri? (bit shifting, or, and, xor(eor), jmp v.s.)
4) Loop komutları nelerdir?
5) Hangi flagler var ve hangi opcodelar ile kontrol edilebiliyorlar? (carry flag, zero flag, negative flag v.s.)
6) Makinenin genel hafıza adreslemesi, bank/segment mantığı nasıldır?
7) Özel hafıza adresleri (ekran adresleri v.s.) ve ROM adresleri nelerdir?

7 maddede sıraladım ancak elbetteki bunları öğrenmek vakit alıyor. Yine de öğrendikten sonra ASM ASM'dir, bu platformlarda da istediğimizi yapabiliriz.

Gelelim diğer dillere. MAX Script öğrenmeye çalış örneğin. Basit bir scripting dili ancak tamamen kendi notasyonlarına sahip ve 3-4 farklı dilin (basic, pascal, c, php v.s.) çeşitli izlerini taşıyor. Bu dili de sıfırdan öğrenmek assembler kadar zor bence çünkü herşeyi o dile özgü öğrenmek gerekiyor. Ancak diyelim ki eşit derecede MAX Script ve ASM biliyoruz. Elbette ki MAX Script'de çok daha hızlı code yazabiliriz. ASM'de ise "ne yaptığımızın tam olarak farkında olarak" daha uzun bir süreçte aynı code'u yazarız.

En kötü dil yapısı bence bazı basic dilleri gibi interpreted dillerdir. Bu dillerin oluşturduğu ASM code, en sıradan ASM'cinin dahi hayatta yazmayacağı kadar unoptimize bir sonuç çıkarır ortaya. Debug etmesi ASM tarafında imkansızdır. Özel debugging toolları geliştirmek gerekir.
[post=1621]Quoted post[/post]
[/b]

Yani seninki aslinda Pascal bilip C'ye gecmek gibi bise :)
Ama benimki sifirdan Pascal ogrenmek gibi bise :)