Düşük seviye programlama dilleri montajcı. Assembler (assembler) ve makine dili ne zamandı? Tanımlayıcılar, tamsayılar, semboller, yorumlar, eşdeğerlik

Programlama dili

Assembler, insan algısı için uygun, makine komutları için bir format olan düşük seviyeli bir programlama dilidir.

Assembler dil komutları, işlemci ekiplerine karşılık gelir ve aslında, aslında, komutların ve argümanlarının (MnemOkode) (MnemoKode) kullanışlı bir sembolik şeklidir. Ayrıca, assembler dili temel yazılım soyutlamaları sağlar: Programın bölümlerini ve verilerin parçalarını sembolik isimler ve yönergeyle etiketlerden sonra bağlama.

Assembler Direktifleri, programdaki veri blokları eklemenizi sağlar (açıkça açıklanan veya dosyadan okunur); Belirtilen sayıda zamanın belirli bir parçasını tekrarlayın; bir parçayı duruma göre derleyin; Fragmanın yürütme adresini ayarlayın, derleme işlemi sırasında etiketlerin değerlerini değiştirin; Parametreler ve diğerleri ile makro tanımlarını kullanın.

Her işlemci modeli, prensip olarak, kendi komut kümesi ve montajcının uygun dili (veya lehçesini) sahiptir.

Avantajlar ve dezavantajlar

  • minimum gereksiz kod miktarı (daha az sayıda komut ve belleğe referans kullanımı). Sonuç olarak - yüksek hızlı ve daha küçük program boyutu
  • büyük kod hacimleri, çok sayıda ek küçük görev
  • kötü kod okunabilirliği, destek zorluğu (hata ayıklama, fırsat ekleme)
  • programlama paradigmalarını ve diğer karmaşık sözleşmelerin, ortak gelişimin karmaşıklığının uygulanmasının zorluğu
  • daha az kütüphane mevcut, küçük uyumlulukları
  • ekipmana doğrudan erişim: G / Ç bağlantı noktaları, özel işlemci kayıtları
  • kendi kendine modifiye edici bir kod yazabilme (yani MetaDogramlama ve yazılım tercümanına ihtiyaç duymadan)
  • maksimum "Fit" İstenilen platform (Özel talimatların kullanımı, "Demir" nin teknik özellikleri)
  • diğer platformlara karşı hoşgörüsüzlük (ikili uyumlu hariç).

Sözdizimi

Assembler dillerinin sözdizimi için genel kabul edilen standart mevcut değildir. Bununla birlikte, fiili standartlar var - çoğu montajcının geliştiricilerinin yaptığı gibi geleneksel yaklaşımlar. Ana bilgi standartları Intel-Sözdizimi ve AT & T-Sözdizimidir.

Kayıt talimatları için genel format, her iki standart için de aynıdır:

`[Tag:] OPCODE [Operands] [; Yorum]`

Görünüş, işlemciye doğrudan mnemonic talimatlarıdır. Önekler (tekrarlar, adresleme gibi değişiklikler vb.) Eklenebilir. Operands, sabitler, kayıtlar, isimleri, ram cinsinden adresler, vb. İçin. Intel ve AT & T Standartları arasındaki farklar, esas olarak işlenenlerin ve farklı adresleme yöntemleriyle sözdizimlerini aktarma sırasıdır.

Kullanılan Mnemonics, genellikle bir mimarinin veya mimarların ailesinin tüm işlemcileri için aynıdır (iyi bilinen - işlemcilerin ve kontrolörlerin Motorola, ARM, X86'nın mnemonikleri arasında). İşlemci özelliklerinde tarif edilirler.

Örneğin, Zilog Z80 işlemcisi Intel i8080 komut sistemini devraldı, genişletti ve Mnemonics (ve kayıtları belirten) kendi yollarına değiştirdi. Örneğin, LD'de Intel MOV'u değiştirdim. Motorola Fireball işlemcileri, Kesilen Z80 komut sistemini devraldı. Aynı zamanda, Motorola resmen Intel Mnemonics'e geri döndü. ve B. şu an Ateş topu için yarım montajlar Intel Mnemonics ve Zilog Mnemonics ile yarısı ile çalışır.

Direktif

Talimatlara ek olarak, program direktif içerebilir: doğrudan makine talimatlarına ve derleyici yöneticilerine gönderilmeyen komutlar. Set ve sözdizimi önemli ölçüde farklılık gösterecek ve donanım platformundan değil, formattan (bir mimariler ailesi içindeki dillerin lehçeleri üreten) kullanılmaz. Bir set olarak, direktifler tahsis edilebilir:

  • veri tanımlama (sabitler ve değişkenler)
  • kuruluşun kuruluşunun bellek ve çıktı dosyası parametrelerinde yönetimi
  • derleyicinin Çalışma Modu
  • her türlü soyutlama (yani, üst düzey dillerin elemanları) - prosedürler ve fonksiyonların kaydından (prosedürün programlama paradigmasının uygulanmasını kolaylaştırmak için) koşullu yapılara ve döngülere (yapısal programlama yapısının yapısı için)
  • makrolar

"Assembler Dili" teriminin kökeni ve eleştirisi

Bu tür bir dil, ismini bu dillerden tercüman adından (Derleyici) - Assembler (ENG. Montajcı - Toplayıcı). İkincisinin adı, ilk bilgisayarlarda daha üst düzey bir dil olmadığı ve montajcıyı kullanan programların oluşturulmasına sadece alternatif, doğrudan kodlarda programlanıyor.

Rusça'daki montaj dili genellikle "montajcı" olarak adlandırılır (ve sözcüğün İngilizce çevirisine göre, Rus dilinin kurallarına uygundur, ancak Rus dilinin kurallarına uyuyor olan "montajcı"). Bununla birlikte, montajcının kendisi (program) da basitçe "montajcı" olarak adlandırılır ve "Assembler Dil Derleyici", vb.

"Assembler Dili" teriminin kullanımı, tek bir düşük seviye dilinin varlığı hakkında hatalı bir görüşe veya bu tür diller için en az bir standart hakkında hatalı bir görüşe neden olabilir. Belirli bir programın yazıldığı dili olarak adlandırıldığında, hangi mimarlığın amaçlandığı ve dilin lehçesinin ne yazdığı konusunda belirtilmesi önerilir.

Sözdizimi öğeleri:

Örnekler:

Selam Dünya!

Intel X86 sürümleri için örnek (IA32)

mOV AX, CS MOV DS, AX MOV AH, 9 MOV DX, OFSET HELLO INT 21H XOR AX, AX INT 21H HELLO: DB "HELLO Dünya!", 13, 10, "$"

Selam Dünya!

Amiga sürümleri için örnek

hareket. #Dos hareket et. L 4. W, A6 JSR - 0198 $ (A6); Oldopenlibrary hareket. L D0, A6 BEQ. s. Dışarı hareket. L #helloworld, d1 a) MOVEQ # 13, D2 JSR - $ 03AE (A6); Writechars b) JSR - 03B4 $; Putstr taşı. L A6, A1 hareket. L 4. W, A6 JSR - $ 019E (A6); Closelibrary. Rts dos dc. b "dos.library", 0 helloworld dc. B "Hello World!" , $ A, 0

Selam Dünya!

Atarist sürümleri için örnek

hareket. L #hloWororld, - (A7) # 9, - (A7) Tuzak # 1 add. L # 6, A7 Taşı # 0, - (A7) Tuzak # 1 HelloWorld: DC. B "Hello World!", $ 0d, $ 0a, 0

Selam Dünya!

Intel X86 sürümleri için örnek (IA32)

Nasm Linux, Intel Sözdizimi tarafından kullanılır. Derleme ve Bağlantı:

  • nasm -f elf -o hello.o hello.asm
  • ld -o merhaba hello.o

Bölüm. Veri MSG DB "Merhaba, Dünya!", 0xa Len ESK $ - MSG bölümü. Metin Global _Start _Start:; Giriş noktası MOV EAX, 4; "Yaz" Sistem Çağrısı MOV EBX, 1 MOV ECX, MSG; Data Mov EDX, LEN; İnt 0x80 veri miktarı; Core MOV EAX, 1; "_Exit" sistem çağrısı MOV EBX, 0; Geri dönüş 0 (hepsi iyi) int 0x80; Çekerek çağırmak

Selam Dünya!

PDP-8 sürümleri için örnek

/ - Yorumlar.

/ Montajcı Montajında \u200b\u200bAra PDP - 8 * 200 Merhaba, CLA CLL TLS / TLS Baskı bayrağını ayarlar. TAD Karakter / Bir DCA IR1 Endeksi Kayıt Olun / TAD M6 Karakterlerini Almak / DCA Sayısı / Geliştirme Karakterleri için Metre'yi yapılandırın. Sonraki, TAD I IR1 / Bir sembol al. JMS tipi / türü. ISS başka bir şey mi saydı? JMP Sonraki / Hayır, başka bir karakter hlt tipi, 0 / tipi TSF JMP altroutini girin. - 1 TLS CLA JMP I yazar ,. / İlk değer IR1 olarak kullanılır. 310 / H 305 / E 314 / L 314 / L 317/0 254 /, 240/327 / W 317 / O 322 / R114 / L 304 / D 241 /! M6, - 15 sayısı, 0 IR1 \u003d 10 $

Selam Dünya!

PDP-11 sürümleri için örnek

Program, bu programı RT-11 işletim sistemi komutunda derlemek ve çalıştırmak için Makro-11 Macroassembler üzerinde yazılmıştır:

Makro Merhaba.

Hatalar tespit edildi: 0

Link Merhaba - Bağlantı. Merhaba koş - koş

Başlık Hello World; İsim. Mcall. Ttyo,. EXIT HELLO :: MOV #MSG, R1; Dizenin ilk adresi 1 $: MOVB (R1) +, R0; Aşağıdaki BEQ Yapılan sembolü elde ediyoruz; Sıfırsa, döngüden çıkın. Ttyo; Aksi takdirde BR 1 $ sembolünü yazdırın; Tekrarlama Döngüsü Yapıldı :. MSG'den çıkın :. ASCIZ / HELLO, Dünya! /; Dize Merhaba, Dünya! . Merhaba sonu; Merhaba programının sonu

Selam Dünya!

Sistem / 360, sistem / 370 sürümleri için örnek

IBM System / 360/370/390 Temel Assembler Dili.

// Exec Montajı Başlat Ana Balr 2, 0 Kullanma *, 2 Açık Baskı MVC BUF, HW Baskı Kapat Yazdır EOJ HW DC CL132 "HELLO Dünya" BUF DS CL132 Yazdır DTFPR IOAREA1 \u003d BUF, Devaddr \u003d syslst, blksize \u003d 132, * Cihaz \u003d 3203, Control \u003d Evet, Printov \u003d Evet Son Ana / * // Exec Lnkedt // Exec / * / &

Selam Dünya!

Apple II sürümleri için örnek

* 6502 Apple için Hello World] [* ******************************** Strout quut $ db3a ldy #\u003e merhaba lda #< HELLO JMP STROUT HELLO ASC "HELLO WORLD !", 00

Selam Dünya!

PDP-10 sürümleri için örnek

CHTTYO - Tüm giriş / çıkış, G / Ç kanalları kullanılarak gerçekleştirilir. Kullandığınız kanallar için sembolik isimler yapmak ve bunları ch ile başlatmak en iyisidir. MIDAS Operator \u003d\u003d kullanarak bu isimleri tanımlayın.

Arama, bir sistem çağrısını aramak için sembolik bir belirlemedir. Biçimi: .call.

Açık kullanım için giriş / çıkış kanalını açın. Sixbit'te iki parametre - kanal numarası ve cihaz adı gerektirir.

%% LSFIL, aniden gerçekleşirse, bir giriş / çıkış hatası iletisini yazdıran bir sistem çağrısıdır.

IOT, aslında giriş / çıkışta bulunan bir sistem çağrısıdır. Bir parametre olarak, çıktının sembol kodunu içeren kanalı ve adresi belirtmeniz gerekir. Örneğin, "H, H'yi temsil eder.

Başlık Printhello A \u003d 1 CHTTYO \u003d\u003d 1; Çıktı için kanal. Başlat:; TTY kanalını açma. . [Setz mi? Sixbit / Open / [. UAO, Chttyo]? [Sixbit / tty /] ((Setz))]. % Lsfil kaybetmek. İot chttyo, ["h]; Hello Dünya sembolünü yazdırın .. iot chttyo, [" e]. İot chttyo, ["l]. İot chttyo, [" l]. İot chttyo, [o]. İot chttyo, [^ m]; yeni bir hattın sembolü. İot chttyo, [w]. İot chttyo, [o]. İot chttyo, ["r]. İot chttyo, ["l]. İot chttyo, [" d]. Değer; Program, dur :) başlangıcı

Fibonacci numaraları:

MIPS32 sürümleri için örnek

Mars Emulator. Sonuç Mars Konsolu:

Fibonacci numaraları: 1 1 2 3 5 8 13 21 34 55 89 144 - Program çalıştırmayı tamamlandı -

Program 15 fibonacci numarasını görüntüler. Sayıların sayısı Bölüm.Data'da değiştirilebilir.

Veri alanı: .asciiz "" kafa: .asciiz "Fibonacci numaraları: \\ n" FIB: .WORD 0: 15 Boyut: .word 15 .Text Ana: LA $ T0, FIF LA $ T5, LW $ T5, 0 ($ T5) LI $ T2, 1 Ekd.d $ F0, $ F2, $ F4 SW $ T2, 0 ($ T0) SW $ T2, 4 ($ T0) ADDDI $ T1, $ T5, - 2 LOOP: LW $ T3, 0 ($ T0) LW T4, 4 ($ T0) $ T2, $ T3, $ T4 SW $ T2, 8 ($ T0) ADDDI $ T0, $ T0, 4 ADDDDI $ T1, $ T1, - 1 BGTZ $ T1, LOOP LA $ A0, FIB TOPLU $ A1, $ T5 JAL LI $ V0, 10 SYSCALL PRINT: $ T0, $ sıfır, $ A0 ekle $ t1, $ sıfır, $ A1 LA $ A0, Kafa Li $ v0, 4 Syscall Out: LW $ A0, 0 ($ T0) Li $ V0, 1 Syscall la $ A0, Space Li $ V0, 4 Syscall Addi Li $ V0, 1 LA $ A0, ($ T2) Syscall la $ A0, String1 Li $ v0, 4 Syscall Mult $ T1, $ T2 MFLO $ T1 LI $ V0, 1 LA $ A0, ($ T1) SYSCALL LA $ A0, String2 Li $ V0, 4 Syscall Addiu $ T2, $ T2, 1 BEQ $ T2, 16, Endloop J Loop Endloop: Li $ v0, 10 Syscall



Montajcı

Montajcı - Düşük seviye programlama dili. Dil adını bir toplayıcıyı - bir toplayıcıyı kelimesinden aldı. 50'si başka bir şey vardı. Makine dilinin sembolik bir analogu olarak.
Assembler komutları, işlemci komutlarına birebirdir ve aslında, aslında, kayıt komutlarının ve argümanların uygun bir sembolik şeklini temsil eder. Ayrıca, assemble, programın parçalarının parçalarını ve montaj sırasında gerçekleştirilen etiketlerden gelen verileri sağlar (her etiket için, adres hesaplanır, ardından etiketin her bir girişi bu adres tarafından değiştirilir).
Mikroişlemci komut sistemleri farklı olduğundan, her işlemcinin assembler dilinde kendi komutları vardır.
Bir montajcının yardımıyla, imkansız olan bu tür programları yazabilirsiniz veya başka dillerde yazmak çok zordur. Örneğin: anahtar jeneratörler (keygen), sistem monitörleri, ekipman için sürücüler, hatta işletim sistemi.
Üst düzey diller ("C", "Pascal", "Delphi", vb.) Veri akışları, bellek adresleri veya işlemci kayıtları üzerinde güvenilir bir kontrol sağlamaz, aynı zamanda tüm bunların belirli bir türü altında geliştirilmiştir. İşletim sistemi, assembler aynı montajcı olabilir, ancak bilinmeyen bir bilim platformu üzerinde çalışıyor ve bu platformun altında programlar yapmak.
Montajcı üzerindeki programlar, üst düzey dillerde yazılmış programların aksine, onlarca daha az sürede gerçekleştirilir ve on kat daha hızlı çalışırlar. Bir örnek, düz montajcı üzerinde yazılı olan ve bir diskete (1.44 MB) uygun olan Menuetos işletim sistemi olarak hizmet verebilir ve kit, aşağıdaki gibi uygulama programlarını içerir: arkadan aydınlatmalı bir montaj kodu düzenleyicisi, bir dosya sistemi ile çalışır, 3D Screensaver, bazı oyunlar, resimlerin pictures, derleyici düz montajcı, terminal, CD çalar ve çok daha fazlası. Avantaj, internetten hızlı bir şekilde indirilebileceğidir (küçük bir bağlantı hızında bile).
Şu anda, çoğu yazılım uzmanları, PASCAL veya C gibi, program yazarken daha kolay olan, ancak en güçlü ve verimli olan yüksek seviye dillerde gelişmektedir. yazılım Montajcı dilinde tamamen veya kısmen yazılmış.

Edebiyat
1. Peter Abel - Assembler. IBM PC - M., 1999 için Dil ve Programlama.

Montajcı

Montajcı(İngilizceden. Assembler - bir koleksiyoncu) - Montaj dilinde yazılan programın kaynak metin derleyicisi, makine dilinde.
Dilin kendisi gibi, montajcılar genellikle belirli bir mimari, işletim sistemi ve dilin sözdizimi sürümü için spesifiktir. Aynı zamanda, multiplatform veya evrensel (daha kesin, sınırlı-evrensel, çünkü düşük seviye dilinde, farklı platformlar ve işletim sistemlerinde çalışabilecek düzeyde bağımsız programlar yazamazsınız) montajları bulunur. İkincisi arasında, diğer mimariler ve işletim sistemleri için makine kodunu ve çalıştırılabilir modülleri (dosyaları) toplayabilen çapraz montaj grubunu da vurgulayabilirsiniz.
Meclis, bir program yürütme modülü almanın yolunda ilk ve son adım olmayabilir. Dolayısıyla, üst düzey programlama dillerinden birçok derleyici, assembler dilinde bir program biçiminde, gelecekte assembler süreçleriyle sonuçlanır. Ayrıca, ortaya çıkan montaj yürütülmeyebilir ve makine kodunun dağınık bloklarını içeren nesne modülü ve (veya birkaç nesne modülünden) gelecekteki bağlantı düzenleyicisi kullanıldığı program verileri yürütülebilir bir dosya tarafından elde edilebilir.
Doğrudan işlemciye yerleştirilmiş özel bellek hücreleri. Kayıtlarla çalışmak, RAM hücrelerinden çok daha hızlı bir şekilde gerçekleştirilir, böylece kayıtlar hem montaj dilinde hem de üst düzey dillerin derleyicilerini aktif olarak kullanılmaktadır.
Kayıtların isimleri amaçlarından kaynaklanır:

EAX / AX / AH / AL (Akümülatör Kayıt) - Batarya;
EBX / BX / BH / BL (Taban Kayıt) -Register veritabanı;
ECX / CX / CH / CL (Sayacı Kaydı) - Sayaç;
EDX / DX / DH / DL (Veri Kaydı) - Veri Kaydı;
ESI / SI (Kaynak Endeksi Kayıt) - Kaynak Endeksi;
EDI / DI (Hedef Dizin Kaydı) - Alıcı Endeksi (Alıcı);
ESP / SP (yığın işaretçi kaydı) - Yığın işaretçi kaydı;
EBP / BP (Base Pointer Register) - Yığın çerçevesi baz işaretçi kaydı.

Satır İşleme Komutları
Satırlar veya sembollerin veya sayıların zincirleri ile çalışmak (yani, basitçe keyfi veri dizisi ile) MILL'de bir dizi özel komut vardır:
movs - dizeleri gönderme;
cMPS - İki satırın karşılaştırılması;
denizler - Belirli bir öğenin dizgisinde arama yapın;
lods - Pil yükleme (AL veya AH kayıtları) satırdan;
sTOS - Bir dize bir pilden kayıt elemanı (AH veya AL kayıtları).

Haysiyet

· Assembler dili, bu işlemci için genellikle mümkün olan en hızlı ve en kompakt kodu yazmanıza izin verir.
· Çalışma hızı - Bilgi işlem algoritmasını ve / veya RAM'e daha rasyonel erişimin optimize edilmesiyle (örneğin, tüm kaynak verileri işlemci kayıtlarında saklanırsa, OP'ye gereksiz erişim hariç tutabilirsiniz), verilerin yeniden dağıtılması, tablo hesaplama fonksiyonlarını ;
· Kod hacmi (verimli kullanım dahil) ara sonuçlar). Kod hacmindeki azalma, programın yürütülmesinin hızını da arttırır.
· Belirli bir platformun spesifik yeteneklerinin maksimum kullanımını sağlamak, aynı zamanda daha az kaynak yoğunluğu da dahil olmak üzere daha verimli programlar oluşturmanıza olanak sağlar.
· Assembler dilinde programlama, ekipmana doğrudan erişim, özellikle G / Ç bağlantı noktaları, işlemci kayıtları vb. Birçok işletim sisteminde, kayıtlar için kayıtların kayıtları için uygulama programlarından doğrudan temas Çevresel ekipman Sistemin güvenilirliği ve "donma" istisnaları için engellendi.
· Assembler dili, geçici çalışma sözleşmesi önemli olduğunda, donanım sürücüleri ve işletim sistemi çekirdekler oluşturmak için kullanılır. Çevresel aygıtlar dan merkezi işlemci.
· Assembler dili "BIOS firmware" oluşturmak için kullanılır.
· Assembler dilinin yardımı ile, makinelerin makine bağımlı alt programları ve üst düzey tercümanlar genellikle oluşturulur ve platformların uyumluluğu uygulanır.
· Diskembler programının yardımı ile, programın operasyonel algoritmalarını, üst düzey bir dilde listenin yokluğunda, sadece makine kodlarını okuyarak, ancak karmaşık olmayan programlarda çok zahmetli olarak anlayabilirsiniz.

Dezavantajları
· Montajcı dilinin bir makine oryantasyonu ("düşük" seviye) sayesinde, bir kişinin üst düzey programlama dilleriyle karşılaştırıldığında programı okumak ve anlamak daha zordur; Program da "küçük" unsurlar - makine komutlarından, programlama ve hata ayıklama karmaşıklığı, karmaşıklığı ve hata yapımı olasılığından oluşur.
· Bir kalite kodu elde etmek için artan programcı yeterlilik gereklidir: Assembler dilindeki ortalama programcı tarafından yazılan kod genellikle, yüksek seviye dilinde yazılmış karşılaştırılabilir programlar için optimize edici derleyici tarafından oluşturulan koddan daha iyi veya daha da kötü değildir.
· Üst düzey bir program, yeni hedef platformun özellikleri için otomatik optimizasyon ile yeniden derlenebilir, assembler dilindeki yeni platformdaki program, manuel yeniden yazma kodu olmadan hızdaki avantajını kaybedebilir.
· Kural olarak, modern endüstriyel programlama dillerine kıyasla daha az kütüphane mevcuttur.
· Başka bir mimari ve komut sistemi olan bilgisayarlarda programların taşınabilirliği yoktur.

Uyumluluk
Bir tür montajcı için tasarlanan bir program, radikal değişiklik veya otomatik dönüşüm olmadan diğerinde derlenemez! Ancak "onların" tiplerinin montajları arasında bile bir parti, ayrıklık ve birçok fark var: anahtar kelimeler, listenin tasarımı için, tedarik edilen kütüphanelerde ve başlık dosyalarında vb. Kurallar halinde, yalnızca uyumluluk açıkça açıkça değilse, programı tasarlandığı bir montajcı ile aynı şekilde yayınlamak gerekir. Aksi takdirde, değişiklikler için hazır olun (yani, evlat edinme). Farklılıklar genellikle en beklenmedik yerlerde tezahür edilir. Bazı montajcılar, "MOV EAX, X" "MOV EAX, [X]" ile aynı olduğunu anlar. Onlar yanıyorlar ve bir hata veriyorlar. Ama başka hiç bir şey! Tercüman, bu tasarımı sessizce "MOV EAX, Ofset X" olarak yorumladığında, bu da tamamen aynı şey değil! Bu yüzden programı aktarırken çok ve çok dikkatli olmalısınız.

İşletim sistemlerinin uyumluluğu. MS-DOS yönelimli programlar, yalnızca taşınmaz değil, aynı zamanda intoleranslar da değil. Onlar için karakteristik doğrudan etkileşim NT'de yalnızca nükleer düzeyden mevcut olan ekipmanlarla, 16 bit kodun 32 bit uygulamalardan yalnızca DPMI aracılığıyla çağrıldığını ve ardından Truscy olmadan değil.

Böylece, bir montajcı programı yayınlamadan önce, hangi tercüman ve işletme sisteminin amaçlandığı için tanımlanması gerekir! Assembler fragmanlarıyla "yerli" bağlamdan yakalandı, daha da kötüleşiyor. Diyelim ki, bazı makalede, ilginç bir döngü önleme alımı açıklanmış ve bir montaj kodu verilir, ancak programına nasıl yerleştirilir - söylemez. Tanıdık bir durum, değil mi? Doğrudan yayın mümkün değildir - tercüman çılgınca dağılır, ancak hiçbir şey söylemez.

Yumuşak montaj

Hazırlanmış metin, Montajlar adlı özel programlar için kaynak verileridir. Assemble'ın görevi, programın metnini bir mikroişlemci tarafından gerçekleştirilebilecek ikili komutlar biçimine dönüştürmektir. Sözdizimi hataları tespit edilirse, ortaya çıkan kod oluşturulmaz. Yürütülebilir bir dosya oluşturma işlemi iki aşamada oluşur:

ASM -\u003e .Obj -\u003e .exe / .dll / .com

Birinci aşamada (.asm -\u003e .Obj) Assembler dosyasından derleme yoluyla, bir uzatma uzantısına sahip olan ara nesne kodu dosyaları elde edilir (Ek INC dosyaları kullanılabilir). Extension.Obj ile olan dosyayı, sözdizimsel ve semantik hataların karşılanmaması şartıyla optimize edilmiş makine kodu içerir. KAYNAK DOSYALARDA KAYNAK DOSYALARDA HATALARI ANETLER DİLİNDE PROGRAMI TESPİTMİŞTİR ise, programcı, hataların tespit edildikleri satır numarası ile belirtildiği bir hatalar listesi sunar. Programcı döngüsel olarak, kaynak dosyada tüm hatalar ortadan kaldırılıncaya kadar düzenleme ve derleme eylemlerini gerçekleştirir. Bu aşamada, hazır bir program elde etmek zaten mümkündür, ancak çoğu zaman bazı bileşenlerden yoksundur. Herhangi bir nedenden dolayı derleyici (yanlış bir dosyaya veya dosya eksik) bir Inc dosyası bulamazsa, bir uyarı verilir ve obj dosyası alınır.

Kural olarak montaj, iki resepsiyonda gerçekleşir. İlk geçişte, Mnemonic komutları, uygun makine kodlarındaki haftalık sayılar ve semboller çevrilir, komutun konumu tarafından ne kadar işgal edildiğine, kullanıcı tarafından girilen adlar (sabitler, etiketler, değişkenler) türleri ve sayısal değeri masaya yazılmış. Aynı tabloda, prosedürleri, etiketlerin adresini, bölümlerin adresini, / segmentlerin başlangıcındaki adresleri, vb. İkame edildiği kaydedilir, ikame edilmiştir, prosedürlerin başlangıcının adresleri ikinci geçit ile ikame edilir. Etiketlerin isimleri değiştirilir.

Meclisin bir sonucu olarak, "nesne dosyası" olarak adlandırılır. Ek bir özellik olarak, montajcı bir program listesi dosyası oluşturabilir.

Genellikle, nesne kodu dosyalarını almak için, uygun Assembler programını (Borland şirketinin Microsoft ML.exe ve Tasm.exe programlarını) yapmanız gerekir. komut satırı Program metni ile dosya adı.

Bu zorluk minimal olarak gereklidir. İsim hariç metin dosyasıMontaj için seçenekleri belirtmelisiniz. Montaj programının seçenekleri hakkında daha fazla bilgi, bu programların belgelerinde aranmalıdır.

Düzen Programı

Bir sonraki aşama (.Obj -\u003e .exe / .dll / .com) bağlantı veya düzen denir ve bir programcı tarafından kullanılan karakter adlarını gerçek adreslere değiştirmeye yarar.

Onaltılık içeriği OBJ ve Exe dosyasıhangisini aldın. EXE dosyası, OBJ dosyasındaki gibi aynı bayt dizisine sahiptir. Ancak bunun dışında hala mevcut: Monte edilmiş dosyanın adı, montajcı sürümü, "kendi" segmenti vb.

Bu "hizmet", yürütülebilir dosyanız birkaç kişiden toplamak istediğiniz durumlar için bu durumlar için tasarlanmıştır. Gelişirken büyük uygulamalar Kaynak metin, bir kural olarak, birkaç modülden (kaynak metinler içeren dosyalar), çünkü tüm metinleri tek bir dosyada saklamak uygun değildir - gezinmek zordur.

Her modül, nesne koduyla ayrı bir dosyaya derlenir. Bu dosyaların her biri, kod / veri / yığın segmentlerini reçete edilir, bu da bir olarak birleştirilmesi gerekir. Ve yürütülebilir dosyayı tek bir kod / veri / yığın segmentiyle sadece bir tane almamız gerekiyor. Bu bağlantıdır ve şunları yapar: gerekirse adres bağlantılarının tanımını tamamlar ve gerekirse birleşir, birinde birkaç yazılım modülü. Ve bu bizimle birlikte yapılır.

Ek olarak, çeşitli standart işlevleri uygulayan modüllerimize makine kodu eklemek gerekir (örneğin, günah veya LN matematiksel fonksiyonları hesaplar). Bu tür fonksiyonlar, derleyiciyle birlikte verilen veya bağımsız olarak yaratılan kütüphanelerde (standart uzantılı dosyalar) içermektedir. Bu nedenle, hazırlama işlemi mutlaka, çökmüş değişkenlerin veya işlevlerin adresi belirlendiğinde tüm bilinmeyenler tanımlandığında yerleşim aşamasını içerir.

Nesne modüllerini bir dosyaya birleştirme işlemi, özel bir bağlayıcı programı veya bir toplayıcı (Link.exe ve tlink.exe şirketi Borland) tarafından gerçekleştirilir; Onları kütüphanelerde ve uygulanabilir üretir, uygulama belirli bir platform için yürütülebilir bir koddur.

Yürütülebilir kod, bu programın oluşturulduğu yüklü bir işletim sistemine sahip bir bilgisayarda çalıştırılabilen COM, DLL veya EXE uzantısına sahip tam bir programdır. Yürütülebilir dosyanın adı ilk .OBJ dosyası tarafından ayarlanacaktır. Bağlama için komut istemini aramaya ihtiyacınız var:

link prog1.obj prog2.obj veya tlink prog1.obj prog2.obj

Nesne dosyasının içeriği bir bağlayıcı tarafından analiz edilir. Bir program olup olmadığını belirler dış bağlantılarYani, program çağrısı komut programının Nesne Modülü Kütüphanelerinden birinde (Bağlantı Kütüphanesi) içerip içermediği. Bağlayıcı bu bağlantıları nesne dosyasında bulur, kütüphanelerdeki gerekli prosedürleri kopyalar, onları nesne dosyasıyla birleştirir ve yürütülebilir bir dosya (çalıştırılabilir dosya) oluşturur. Gibi ek özellikler Bağlayıcı, alınan yürütülebilir dosyanın planını içeren bir çapraz bağlantı dosyası oluşturabilir.

Kullanılan kaynaklar
1. https://ru.wikipedia.org/
2. http://natalia.appmat.ru/
3. http://www.codenet.ru/
4. http://wasm.ru/
5. Norton P., Sauke D. IBM PC için Assembler Dili. M.: Bilgisayar, 1992.

1. Perforasyon makinelerini ne zaman ve kim icat edildi? Onlara hangi görevler çözüldü?

2. Elektromekanik bir röle nedir? Röle hesaplama makineleri ne zaman yaratıldı? Hangi hızı sahiplerdi?
3. İlk bilgisayar nerede ve ne zaman inşa edildi? Ne denir?
4. John Von Neuman'ın bir bilgisayar oluşturmada rolü nedir?
5. İlk yerli bilgisayarın tasarımcısı kimdi?
6. Ne de element tabanı Birinci nesil makineleri oluşturdu? Ana özellikleri nelerdi?
7. Hangi temel veritabanında ikinci nesil makineleri yarattı? İlk nesil bilgisayarla karşılaştırıldığında avantajları nelerdir?
8. Entegre bir devre nedir? Entegre devrelerdeki ilk bilgisayarlar ne zamandı? Ne denirlerdi?
9. Bilgisayarın yeni uygulama alanları nelerdir, üçüncü nesil makinelerin görünümü ile ortaya çıktı?
10. Mikroişlemci nedir? İlk mikroişlemci ne zaman ve nerede yaratıldı?
11. Mikroevm ve kişisel bilgisayar nedir?
12. Dünyada en yaygın olan ne tür PC?
13. Süper bilgisayar nedir?
14. Kümelenmiş PC Sistemleri Nedir?
15. Beşinci nesil bilgisayarların özelliği nedir?

İlk bilgisayar aygıtını adlandırın. Aback Calculator Arithmometer Rusça Skorları Ortada hangi fikri öne sürdü

19. yüzyıl İngilizce matematikçi charles babbage?

Yönetilen yazılım oluşturma fikri sayma makinesiAritmetik bir cihaza, kontrol cihazının yanı sıra giriş ve baskı cihazına sahip olmak

Yaratma fikri cep telefonu

Bir bilgisayar tarafından yönetilen robotlar oluşturma fikri

Hangi yıl ve elektronik lambalara dayanan ilk bilgisayar neredeydi?

1945, ABD

1944, İngiltere

1946, Fransa

Üçüncü nesil bilgisayarlar hangi temel oluşturuldu?

Entegre Şemalar

yarı iletkenler

elektronik lambalar

Üstün Entegre Devreler

İlk kişisel bilgisayarın adı neydi?

Bilgisayarın merkezi cihazını adlandırın.

İşlemci

Sistem birimi

Güç kaynağı

Anakart

İşlemci, sunulan bilgileri işler:

İÇİNDE ondalık sistem Not

İngilizcede

Rusça

Motor dilinde (ikili kodda)

Kullanılan sayısal ve metin bilgilerini girmek için

Tuş takımı

Tarayıcı için kullanılır ...

Resim ve metin belgelerinin görüntülerini girmek için

Özel bir tutamaç üzerine çizim için

İmleci monitör ekranında hareket ettirin

Holografik görüntüler

10. Finansal belgeleri yazdırmak için ne tür bir yazıcı tavsiye edilir?

Matris yazıcı

Jet yazıcı

Lazer yazıcı

Denemeleri basmak için ne tür bir yazıcı kullanılacağı tavsiye edilir?

Matris yazıcı

Jet yazıcı

Lazer yazıcı

Yazdırma için fotoğraf kullanmanız ne tür bir yazıcı tavsiye edilir?

Matris yazıcı

Jet yazıcı

Lazer yazıcı

Bilgisayarın sıhhi ve hijyenik gereksinimlerine uyulmaması durumunda, insan sağlığı üzerindeki zararlı etkisi sağlanabilir ...

Elektronik radyasyon tüpü üzerinde izlemek

Sıvı kristaller üzerinde monitör

Plazma panelleri

Bilgisayar kapatıldığında, tüm bilgilerden silinir ...

Rasgele erişim belleği

Hard disk

Lazer diski

Bilgisayarda hangi bilgisayarda saklanır?

Harici hafıza;

İŞLEMCİ;

Optik parçalar daha küçük bir kalınlığa sahiptir ve daha sıkı bir şekilde yerleştirilir ...

Dijital Video Motoru (DVD Diski)

Kompakt Disk (CD - Disk)

Giriş Aygıtları Girin ...

Çıkış cihazı içerir ...

Klavye, fare, joystick, hafif tüy, tarayıcı, dijital kameraMikrofon

Ses sütunları, monitör, yazıcı, kulaklık

Hdd, İşlemci, Bellek Modülleri, anakartdisket

Program denir ...

Bilgisayar programı Bilgisayarın çalışmalarını yönetebilirse ...

Ramda

Esnek bir diskte

Sabit diskte

CD - Diskte

Veri ...

Bilgisayarın veri işleme sırasında gerçekleştirdiği komutların sırası

Dijital formda sunulan ve bilgisayarda işlenen bilgiler

Bir adı olan ve uzun süreli hafızada depolanan veriler

Dosya ...

Bilgisayarda yazılan metin

Dijital formda sunulan ve bilgisayarda işlenen bilgiler

Program veya bir adı olan ve uzun süreli hafızada depolanan veriler

Esnek bir diskin hızlı biçimlendirmesiyle ...

Disk dizini temizle

Tüm veriler silinir

Disk birleştirme işlemi gerçekleştirilir

Disk yüzeyinin doğrulanması

Esnek bir diskin tam biçimlendirmesiyle ...

tüm veriler silinir

diskin tam bir kontrolü yapılır.

disk dizini temizle

disk sistemik hale gelir

Çok seviyeli bir hiyerarşik dosya sisteminde ...

Dosyalar iç içe geçmiş klasörler sisteminde saklanır.

Dosyalar doğrusal bir sekans olan bir sistemde saklanır.

Bilgisayar Ekipmanlarının Geliştirilmesi Tarihi:

1. İlk adı bilgi işlem cihazı.
1) Abak
2) Hesap makinesi
3) Aritmometre
4) Rusça puanları

2. 19. yüzyılın ortalarında İngiliz Matematikçi Charles Babbage'da hangi fikir ortaya çıktı?
1) Aritmetik bir cihaza, bir kontrol cihazının yanı sıra bir giriş ve baskı cihazına sahip bir yazılım kontrollü sayılabilir makine oluşturma fikri
2) cep telefonu oluşturma fikri
3) Bir bilgisayar tarafından yönetilen robotlar oluşturma fikri
3. İlk Programcı Bilgi İşlem Makinelerini adlandırın.
1) cehennem lavley
2) Sergey Lebedev
3) Bill Gates
4) Sophia Kovalevskaya

4. Hangi yılda elektronik lambalara dayanan ilk bilgisayar neredeydi?
1) 1945, ABD
2) 1950, SSCB
3) 1944, İngiltere
4) 1946, Fransa

5. Üçüncü nesil bilgisayar hangi temelliydiler?
1) Entegre Devreler
2) Yarı İletkenler
3) Elektronik lambalar
4) Süper yüksek entegre devreler

6. İlk kişisel bilgisayar neydi?
1) Apple II
2) IBM PC
3) Dell.
4) Corvette
Bilgisayar Cihazı ......................... 15
1. Bilgisayarın merkezi cihazını adlandırın.
1) İşlemci
2) Sistem Bloğu
3) Güç kaynağı
4) Anakart
2. Bilgisayardaki fiziksel bilgiler nasıl kaydedilir ve iletilir?
1) Rakamlar;
2) Programları kullanma;
3) Elektrik sinyalleri şeklinde görünür.

3. İşlemci, sunulan bilgileri işler:
1) Ondalık sayı sisteminde
2) ingilizce
3) Rusça
4) Makinede (İkili Kodda)
4. Kullanılan sayısal ve metin bilgilerini girmek için
1) klavye
2) fare
3) Trekball
4) Kolu
5. En önemli özellik Koordinat giriş aygıtları, genellikle 500 dpi olan çözünürlüktür (inç başına inç başına nokta (1 inç \u003d 2.54 cm)), bu da ...
1) Fareyi bir inç'e hareket ettirirken, fare işaretçisi 500 puan ile hareket eder.
2) Fareyi 500 puanla hareket ettirirken, fare işaretçisi bir inç hareket eder
6. Tarayıcı için kullanılır ...
1) Resim ve metin belgelerine girmek için
2) özel bir sap üzerinde çizmek için
3) İmleci monitör ekranında hareket ettirin
4) Holografik görüntüler almak
Bilgi çıkış cihazları ................. 21
1. Baskı için finansal belgeleri kullanmak için ne tür bir yazıcı uygundur?
1) matris yazıcı
2) mürekkep püskürtmeli yazıcı
3) lazer yazıcı
2. Soyutları yazdırmak için ne tür bir yazıcı kullanılacağı tavsiye edilir?
1) matris yazıcı
2) mürekkep püskürtmeli yazıcı
3) lazer yazıcı

1. Yazdırma için fotoğrafları kullanmak için ne tür bir yazıcı tavsiye edilir?
1) matris yazıcı
2) mürekkep püskürtmeli yazıcı
3) lazer yazıcı
2. Bilgisayarın sıhhi ve hijyenik gereksinimlerine uyulmaması durumunda, insan sağlığı üzerindeki zararlı etkisi sağlanabilir ...
1) elektronik radyasyon tüpü üzerinde monitör
2) Sıvı kristalleri üzerinde monitör
4) Plazma panelleri
3. Bilginin girişini ve okunmasını sağlayan bir cihaz denir ...
1) Sürücü veya sürücü

4. Bilgisayar kapatıldığında, tüm bilgiler silinir ...
4) Ram
5) Sabit disk
6) Lazer diski
7) Diyetler
13. Hangi bilgisayarda bilgi için saklanır?
1) Harici bellek;
2) Monitör;
3) İşlemci;
2. Optik parçalar daha küçük bir kalınlığa sahiptir ve daha sıkı bir şekilde yerleştirilir ...
1) Dijital Video Motoru (DVD - Disk)
2) Kompakt Disk (CD - Disk)
3) disket
3. Hangi disk bilgisinin, mıknatıslanmış ve vitrat olmayan bölümlerin alternatif olduğu konsantrik yollarda depolandığı
1) bir diskette
2) Kompakt bir diskte
3) DVD'de - Disk

4. Giriş cihazlarında dahil edilmiştir ...

1) Sabit disk, işlemci, bellek modülleri, anakart, disket
5. Çıkış cihazında dahil ...
1) klavye, fare, joystick, hafif tüy, tarayıcı, dijital kamera, mikrofon
2) Ses sütunları, monitör, yazıcı, kulaklık
3) Sabit disk, işlemci, bellek modülleri, anakart, disket
6. Program denir ...

7. Bilgisayar programı, bilgisayarın çalışmasını yönetebilirse ...
1) RAM'de
2) Esnek bir diskte
3) sabit diskte
4) CD'de - Disk
8. Veri ...
1) Bilgisayarın veri işleme işlemi sırasında gerçekleştirdiği komut dizisi
2) Dijital formda sunulan ve bilgisayarda işlenen bilgiler
3) Bir adı olan ve uzun vadeli hafızada depolanan veriler
9. Dosya ...
1) Bir bilgisayarda yazılan metin
2) Dijital formda sunulan ve bilgisayarda işlenen bilgiler
3) Bir ada sahip ve uzun vadeli hafızada depolanan program veya veriler

10. Esnek diskin hızlı biçimlendirmesiyle ...
1) Disk dizinini temizle.
2) Tüm veriler silinir
3) Disk birleştirilmesi
4) Kontrol edin


Başlamak için terminolojiyi anlıyoruz.

Makine kodu - Doğrudan işlemciye yorumlanan belirli bir bilgisayar makinesinin (işlemci) komutları sistemi. Kural olarak ekip, işlemci kaydına yazılan bir tamsayıdır. İşlemci bu numarayı okur ve bu komutla eşleşen bir işlem gerçekleştirir. Popüler bu, kitapta bir programcı nasıl olacağı kitapta açıklanmaktadır.

Düşük Seviye Programlama Dili (Düşük seviye programlama dili), makine kodlarında programlamaya mümkün olduğunca yakın bir programlama dilidir. Makine kodlarının aksine, düşük seviye dilde, her komut, komutun kısaltılmış adına (Mnemonic) bir numaraya karşılık gelir. Örneğin, Ekle komutu, kelime eklemesinden bir azalmadır. Bu nedenle, düşük seviye bir dilin kullanılması, programları yazmayı ve okuma programlarını önemli ölçüde basitleştirir (makine kodlarında programlama ile karşılaştırıldığında). Düşük seviye dil belirli bir işlemciye bağlanır. Örneğin, PIC işlemcisi için düşük seviye dilinde bir program yazdıysanız, AVR işlemciyle çalışmayacağından emin olabilirsiniz.

Üst Düzey Programlama Dili - Bu, insan diline mümkün olduğunca yakın bir programlama dilidir (genellikle İngilizce, ancak ulusal dillerde programlama dilleri var, örneğin, 1C dilde Rusça). Yüksek seviye dil, pratik olarak belirli bir işlemciye veya işletim sistemine bağlı değildir (eğer belirli direktifler kullanılmazsa).

Montaj dil - Bu, programlarınızı yazdığınız düşük seviyeli bir programlama dilidir. Her işlemci için kendi assembler dili var.

Montajcı - Bu, Programınızın kaynağınızın kaynak metinlerini, birleştirilebilir dili yürütülebilir dosyaya (EXE veya COM uzantısına sahip dosyayla) dönüştüren özel bir programdır. Doğru olmak için, daha sonra yalnızca bir montajcı değil, yürütülebilir bir dosya oluşturmak için ek programlar gereklidir. Ama bu daha sonra ...

Çoğu durumda, montajcı, "montaj dilini" söylüyor ve ima ediyor. Şimdi bunların farklı şeyler olduğunu ve öyleyse tam olarak doğru olmadığını biliyorsunuz. Tüm programcılar sizi anlayacak olsa da.

ÖNEMLİ!
Pascal, Beyik vb. Gibi üst düzey dillerin aksine, her montajcı için kendi montaj dili vardır. Bu kural, assembler dili tarafından üst düzey dillerden kökten ayırt edilir. Programın kaynak metinleri (veya basit "kaynaklar") üst düzey bir dilde yazılmış, çoğu durumda farklı işlemciler ve farklı işletim sistemleri için farklı derleyicileri derleyebilir. Assembler kaynakları ile bunu çok daha zor yapmak için. Tabii ki, bu fark, aynı işlemcilere yönelik farklı montajcılar için neredeyse somut değildir. Ancak konunun gerçeği, her işlemci için orada kendi montajcısı ve assembler dilidir. Bu anlamda, üst düzey dillerde programlamak çok daha kolaydır. Ancak, tüm zevkler ödenmelidir. Üst düzey dillerde, böyle şeylerle karşılaşabiliriz. daha büyük yürütülebilir dosya, en kötü hız vb.


Bu kitapta, yalnızca Intel işlemcili (veya uyumlu) bilgisayarlar için programlama hakkında konuşacağız. Uygulamada, kitapta verilen örnekleri kontrol edin, aşağıdaki programlara (veya en azından bazılarına) ihtiyacınız olacaktır:

  1. . İyi programÖzellikle yeni başlayanlar için. Kaynak düzenleyici ve diğer bazı faydalı şeyler içerir. Programlar DOS altında yazılmasına rağmen, Windows'ta çalışır. Ne yazık ki, program paraya mal olur (ama buna değer))). Ayrıntılar için, http://www.emu8086.com sitesine bakın.
  2. - Borland'dan Turbo Assembler. Hem DOS hem de Windows için programlar oluşturabilirsiniz. Ayrıca paraya değer ve şu anda artık desteklenmiyor (ve Borland yok). Genel olarak, şey iyidir.
  3. - Microsoft'tan gelen montajcı (bir makro montajcı olarak deşifre edilmemiştir ve birçok başlatılmaz olarak Microsoft Assembler değil). Belki de Intel işlemciler için en popüler montajcı. Şimdiye kadar desteklenir. Koşullu olarak ücretsiz program. Yani, ayrı olarak satın alırsanız, paraya mal olur. Ancak ücretsiz MSDN aboneleri mevcuttur ve Visual Studio yazılım paketine Microsoft'tan girer.
  4. - Watcom'dan montajcı. Diğerleri gibi, avantajları ve dezavantajları vardır.
  5. - Mütevazı olanakları var, ancak büyük bir artı var - standart Windows setine girer. Windows \\ komutunda veya Windows \\ System32 klasöründe arayın. Bulamazsanız, diğer Windows dizin klasörlerinde.
  6. Aynı zamanda olması da arzu edilir. Wolves Komutanı (VC) veya Norton Commander (NC) gibi bir muhalif film yöneticisi, önlemiyor. Onların yardımıyla, onaltılık dosya kodlarını da görebilirsiniz, ancak düzenlenemez. İnternetteki ücretsiz onaltılık editörler oldukça çok. İşte bunlardan biri: McAfee FileIntight v2.1. Aynı editör, programların kaynak metinleriyle çalışmak için kullanılabilir. Ancak, bunu aşağıdaki editörle yapmayı çok seviyorum:
  7. Metin düzeltici. Programlarınızın kaynak metinlerini yazmak istiyoruz. Tavsiye edebilirim ücretsiz editör Assembler dili de dahil olmak üzere birçok programlama dilini destekleyen PSPAD.
Bu kitapta sunulan tüm programlar (ve program örnekleri) performans için test edilmiştir. Ve bu kitapta verilen programların örneklerini uygulamak için kullanılan bu programlardır.

Ve yine de - örneğin EMU8086 için yazılan kaynak kodu, örneğin TASM için yazılan koddan biraz farklı olacaktır. Bu farklılıklar belirtilecektir.

Kitapta gösterilen programların çoğu için yazılmıştır. İlk olarak, çünkü bu assembler en popüler ve hala desteklenir. İkincisi, çünkü MSDN ve Microsoft'un Visual Studio yazılım paketiyle birlikte gelir. Üçüncüsü, çünkü lisanslı bir MASM kopyasının mutlu bir sahibiyim.

Yukarıda listelenen listeye dahil olmayan herhangi bir montajcınız varsa, sözdizimiyle bağımsız olarak başa çıkmanız ve bununla nasıl çalışacağını öğrenmek için kullanıcının kullanım kılavuzunu okumalısınız. Ancak bu kitapta verilen genel öneriler, herhangi bir (iyi ya da neredeyse herhangi bir) assembler için adil olacaktır.

Makinenin bir kişinin ekip ekiplerini donanım düzeyinde gerçekleştirmesi için, "Nolikov ve Birimler" dilinde belirli bir eylem sırasını belirlemek gerekir. Bu işletmede asistan bir montajcı olacak. Bu, komutların makine diline aktarılmasıyla çalışan bir yardımcı programdır. Ancak, programın yazısı çok zaman alıcı ve karmaşık bir süreçtir. Bu dilin akciğerleri ve basit eylemler oluşturması amaçlanmamıştır. Şu anda, kullanılan herhangi bir programlama dili (assembler iyi çalışıyor), donanımın çalışmasını güçlü bir şekilde etkileyen özel görevler yazmanıza izin verir. Asıl amaç, bir Microcomand ve küçük kodlar oluşturmaktır. Bu dil, örneğin Pascal veya C'den daha fazla fırsat sağlar.

Montajcı dillerinin kısa açıklaması

Tüm programlama dilleri seviyelerden ayrılır: düşük ve yüksek. Assembler'in "ailenin" sözdizimsel sisteminden herhangi biri, bir zamanlar en yaygın ve modern dillerin bazı avantajlarını birleştirdiği için farklıdır. Başkalarıyla, akrabaları ve bilgisayar sisteminin tamamen kullanılabileceği gerçeği.

Derleyicinin kendine özgü bir özelliği, kullanmak için basitliktir. Sadece yüksek seviyelerde çalışanlardan farklıdır. Bu tür bir programlama dilini dikkate alırsanız, montajcı iki kat daha hızlı ve daha iyi çalışır. İçinde bir ışık programı yazmak için çok fazla zaman gerekmez.

Dilin yapısı hakkında kısaca

Genel olarak, dilin işleyişinin çalışması ve yapısı hakkında konuşursak, komutlarının işlemci ekiplerine tam olarak karşılık geldiğinden emin olabilirsiniz. Yani, assembler, kaydetmek için en uygun kişi Mnemokodları kullanıyor.

Diğer programlama dillerinin aksine, assembler, adresleri yerine bellek hücrelerini kaydetmek için belirli etiketleri kullanır. Denilen direktiflere çevrilirler. Bunlar, işlemcinin çalışmasını (makine diline çevrilmemiştir) etkilemeyen ve programlama ortamının kendisini tanımak için gerekli göreceli adreslerdir.

İşlemcinin her satırı için, bu durumun kendine sahip olması, doğru da dahil olmak üzere herhangi bir işlem olacaktır.

Assemble dili, makalede tartışılacak birkaç sözdizimine sahiptir.

Dilin artıları

Assembler dilinin en önemli ve rahat adaptasyonu, çok kompakt olacak bir işlemci için herhangi bir program yazmanın mümkün olmasıdır. Kodun büyük olduğu ortaya çıkıyorsa, bazı işlemler yönlendirir veri deposu. Aynı zamanda, elbette, nitelikli bir programcıyı kontrol etmedikçe, her şeyi hızlı ve başarısızlıklar olmadan yaparlar.

Sürücüler, İşletim Sistemleri, BIOS, Derleyiciler, Tercümanlar vb. - Bu, Montajcı dilindeki tüm programdır.

Makineden birinde bir çeviri yapan bir sökmen kullanırken, bir açıklama olmasa bile, bir veya başka bir sistem görevinin nasıl çalıştığını kolayca anlamak mümkündür. Ancak, bu sadece programlar ışığa sahipse mümkündür. Maalesef, net olmayan kodlarda, anlamak oldukça zordur.

Sohbet dilleri

Ne yazık ki, acemi programcılar (ve genellikle profesyoneller) dili sökmek zordur. Assembler gerektirir detaylı Açıklama Gerekli takım. Makine komutlarını kullanmanız gerektiği gerçeğinden dolayı, hatalı eylemlerin olasılığı ve yürütmenin karmaşıklığı artmaktadır.

En çok bile yazmak için basit programProgramcı nitelikli olmalı ve bilgi düzeyi oldukça yüksektir. Ortalama bir uzman, ne yazık ki, genellikle kötü kodları yazar.

Programın oluşturulduğu platform güncellenirse, tüm komutlar manuel olarak kopyalanmalıdır - bu dilin kendisini gerektirir. Assemble, işlemlerin çalışmasının otomatik olarak düzenlenmesinin işlevini desteklemiyor ve herhangi bir elemanın değiştirilmesini desteklemiyor.

Dil takımları

Yukarıda belirtildiği gibi, her işlemcinin kendi komut kümesi vardır. Herhangi bir tür tarafından tanınan en basit unsurlar aşağıdaki kodlardır:


Direktiflerin kullanımı

Dilde mikrodenetleyicileri programlama (assembler bu, en düşük seviyenin en düşük seviyesinin en düşük seviyesinin en düşük seviyesinin en düşük seviyesinin en düşük seviyesinden. İşlemcileri sınırlı bir kaynağa sahip kullanmak en iyisidir. 32 bit ekipman için bu dil Mükemmel uyuyor. Genellikle kodlarda direktifleri görebilirsiniz. Bu nedir? Ve ne için kullanılır?

Başlamak için, direktiflerin makine diline aktarılmadığı gerçeğini vurgulamak gerekir. Derleyicinin performansını düzenlerler. Takımların aksine, bu parametreler, Çeşitli fonksiyonlarFarklı işlemciler sayesinde farklı, ancak başka bir tercümanın pahasına. Ana direktifler arasında aşağıdaki gibi tahsis edilebilir:


İsmin Kökenli

Dilin adı nedeniyle - "montajcı"? Ayrıca veri şifrelemesi de üreten tercüman ve derleyici hakkında konuşuyoruz. İngilizce montajcılardan bir toplayıcıdan başka bir şey ifade etmiyor. Program manuel olarak toplanmadı, otomatik bir yapı kullanıldı. Ayrıca, şu anda, kullanıcılar ve uzmanlar terimler arasındaki farkı siler. Genellikle assembler çağrısı programlama dilleri, sadece bir yardımcı programdır.

Genel kabul görmüş toplama adı nedeniyle, bazıları, tek bir düşük seviye dili (veya bunun için standart normlar) olduğu hatalı bir çözüme sahiptir. Programcının hangi yapının neyle ilgili olduğunu anlaması için, hangi platformun bir veya başka bir montaj dilinin kullanıldığı belirtilmesi gerekir.

Macrofs

Nispeten yakın zamanda oluşturulan montajcı dilleri MacRoss'a sahiptir. Programın hecelemesini ve yürütülmesini kolaylaştırırlar. Varlıkları sayesinde, çevirmen yazılı kodu zamanla daha hızlı çalıştırır. Koşullu bir seçim oluştururken, büyük bir takım bloğu yazabilirsiniz ve makroları kullanmak daha kolaydır. Durum veya yerine getirilmeyen durumun yerine getirilmesi durumunda, eylemler arasında hızlıca geçiş yapacaklar.

Makro-dil direktiflerini kullanırken, programcı montajcı makroları alır. Bazen yaygın olarak kullanılabilir ve bazen işlevsel özellikleri bir komuta düşürülür. Koddaki varlıkları onunla çalışmayı kolaylaştırır, daha anlaşılır ve görsel kılar. Bununla birlikte, özenli olmak, bazı durumlarda makrolarda, aksine, durumu kötüleştirin.