• Blok yapısı. Blok düzeni örneği

    Çoğu zaman büyük programlar yardımcı algoritmaları uygulamak için alt yordamlar kullanır. JA'da alt rutinler prosedürler şeklinde resmileştirilir.

    Prosedürlerin açıklaması

    (sürecinin adı) PROC (parametre) (sürecinin gövdesi) (sürecinin adı) ENDP burada (sürecinin adı) – iki kez tekrarlanmalıdır ve prosedüre atıfta bulunmak için kullanılır; (parametre) iki değerden birini alabilir - (varsayılan) veya . Yakından ilgili (dahili) bir prosedüre yalnızca tanımlandığı komut bölümünden erişilebilir. Uzak (harici) bir prosedüre, tanımlandığı yer de dahil olmak üzere herhangi bir program komut bölümünden erişilebilir. Bir prosedürde açıklanan adlar ve etiketler prosedür içinde yerelleştirilmemiştir, dolayısıyla programda benzersiz olmaları gerekir . AY'de bir işlemi diğerinin içinde anlatmak mümkün olsa da bu herhangi bir fayda sağlamaz ve genellikle kullanılmaz.

    Arama prosedürleri

    YA'da ana program ile prosedür arasındaki tüm geçişlerin sizin tarafınızdan organize edilmesi gerekmektedir. Bir prosedür DOS'a dönebiliyorsa, JMP prosedür adına (işlem adı) atlama komutuyla çağrılabilir. Çağıran programa geri dönmeniz gerekiyorsa, en kolay yol CALL (işlem adı) çağrı komutunu kullanmaktır. name) O halde prosedürün gövdesi bir dönüş komutu içermelidir RET Başka bir olasılık daha vardır: yığını kullanarak dönüş adresini hatırlayın ve atlama komutlarını kullanarak dönüşü düzenleyin. Bir prosedürü çağırırken, prosedüre iletilen parametreleri ve çağrı noktasına göre konumunu dikkate almalısınız; CALL komutundaki geçiş tipi otomatik olarak belirlenir, Örneğin(prosedür p için). P CALL P Bu bir yakın çağrı (NEAR) ise, aşağıdaki eylemler gerçekleştirilir: Yığın:= AB, IP:= ofset P burada AB dönüş adresidir, yani. çağrıyı takip eden komutun etkin adresi; Uzak çağrı (FAR) aşağıdaki eylemleri sağlar: Yığın:= CS, Yığın:= AB, CS:= seg P, IP:= ofset P Prosedür açıklaması, çağrı komutunun altındaki bir bölümde yer alıyorsa, dal özelliği şu şekilde olmalıdır: PTR beyanı ile belirtilir. Örneğin, UZAK PTR P'yi ARAYIN; uzun mesafe araması P

    Bir segmentteki prosedürlerin konumu

      Dahili prosedürlerçağıran programla aynı segmenttedir.
    Bu durumda 3 yerleştirme seçeneği mümkündür: a) Tüm prosedürler, prosedür olarak da formatlanabilen ana (çağıran) programın önüne yerleştirilir. Örneğin: Metin SEGMENT 'kod' VARSAYIM CS: metin, DS: veri, SS: yığın A1 PROC … RET A1 ENDP Ana PROC MOV AX, veri MOV DS, AX … CALL A1 … MOV AX, C400h INT 21h Ana ENDP Metin SONUÇ Veri SEGMENT … Veri SONUÇ Yığın SEGMENT 'yığın' … Yığın SONU Ana b) tüm prosedürler çağrı noktasının altındadır. c) prosedürler - ana prosedürün içinde, prosedürün başka bir prosedürün içinde olması bile mümkündür (her ne kadar bu herhangi bir fayda sağlamasa da) Örneğin,… Ana PROC … CALL A1 … MOV AX, C400h INT 21h A1 PROC … RET A1 ENDP Ana ENDP Metni SONUÇ 2) Dış prosedürler diğer segmentlerde veya diğer dosyalarda bulunur. Örneğin p, ana programın metni P.asm Text SEGMENT public 'code' dosyasındadır; modüllerin sırayla birleştirilmesi; genel segmente ASSUME CS: metin, DS: veri, SS: yığın EXTRN stop: proc; harici ad bildirimi Ana PROC ... CALL Durdur ... Ana ENDP Metin SONUÇ Veri SEGMENT ... Veri ENDS Yığın SEGMENT 'yığın' ... Yığın SONUÇ END Ana Prosedürün kaynak metni P1.asm dosyasındadır Metin SEGMENT public 'code' ASSUME CS: text PUBLIC stop; bir ismin dışarıdan erişilebilir olmasını sağlamak Durdurma işlemi ...

    ENDP metnini durdur END END ; giriş noktası olmayan dosya sonu Bu dosyaların birleştirilmesi bağlama adımında gerçekleşir; ayrı yayın gerekli. Örneğin, MASM MASM/ZI PR MASM/ZI P1 için, burada ZI, kaynak modülün (IM) satır numaraları ve sembolleri hakkındaki tüm bilgileri nesne dosyasına yerleştirmenize olanak tanıyan bir seçenektir. PR.obj ve P1.obj oluşturulduktan sonra, tek bir önyükleme dosyası LINK/C0 ​​​​PR P1, COMPOZ halinde derlenmeleri gerekir; burada C0, sembolik bilgileri önyükleme dosyasına aktararak CV hata ayıklayıcısının görüntülenmesini sağlayan bir seçenektir. Etiketler ve yorumlar da dahil olmak üzere anlık iletinin tam metni. COMPOZ.exe modülü yürütülmeye hazır. Olabilmek kütüphaneden bir prosedür ekleyin. Bunu yapmak için INCLUDE yönergesi (kütüphane dosya adı) IM bölümlerinin önüne yerleştirilir. Örneğin p, IO.asm dosyasını bağlamak için şunu yazmalısınız: INCLUDE IO.asm S SEGMENT 'stack' … SENDDS D SEGMENT 'data' … DENDS C SEGMENT 'code' VARSAYIM CS:C, SS:S, DS:D Begin : … … C BİTİR SON Başla

    Prosedürler arasında parametre aktarımı (programcının isteği üzerine düzenlenir)

      Parametrelerin MP kayıtları üzerinden geçirilmesi
    Gerçek parametrelerin değerleri, programcının isteği üzerine MP kayıtları aracılığıyla aktarılabilir. Örneğin, ; hesaplama prosedürü AX:= max (AX, BX) max proc far CMP AX, BX JGE Max1 MOV AX, BX Max1: RET max endp … ; ana prosedürde ... MOV AX, A ; MOV BX, B parametrelerinin hazırlanması; CALL max MOV C, AX prosedürünü çağırmak için; sonucu kaydediyorum...
      Parametreleri referansa göre geçirme gerçek parametreye karşılık gelen bellek konumunun adresinin (adının) iletilmesi anlamına gelir (adlandırılmış bir değerin derleyiciden Pascal'a iletilmesi). Bunu yapmak için, prosedürü çağırmadan önce bellek konumunun adını kullanabilir veya adresi bir kayda (BX, BP, SI veya DI, çünkü prosedür adresleme için bu kayıtları kullanabilir) yükleyebilirsiniz.
    Örneğin, LEA BX takımı, B ÇAĞRI……
      Parametrelerin yığın aracılığıyla iletilmesi.
    Parametrelerin yazmaçlardan geçirilmesi, bunların az sayıda olmasıyla sınırlıdır. Çok sayıda parametre varsa (5'ten fazla), bunlar yığından aşağıdaki şekilde geçirilir: - Ana program gerçek parametreleri (değerler veya adresler) yığına yazar; - Prosedür yığına yazılan parametreleri kullanır. Örneğin:; çağrı p(a1,…, ak) PUSH a1 … PUSH ak CALL p … Bir prosedürde ek bir yığın işaretçisi BP kullanılabilir, ancak prosedürün başında çağıran programda kullanılan BP değeri saklanmalıdır, yani. ; prosedürün başlangıcı P P proc PUSH BP ; BP'yi kaydet MOV BP, SP ; BP'yi yığının en üstüne ayarlamak... Daha sonra temel adresleme kullanılabilir. Örneğin, bir kapatma çağrısı için yığına otomatik olarak gönderilen dönüş adresi, son parametre ak'ın adresidir. Prosedürden geri dönmeden önce, BP'yi POP BP komutuyla geri yüklemelisiniz, ardından prosedürleri birden çok kez çağırırken aşırı yüklenmemesi için aktarılan parametreler yığınını temizlemelisiniz; SP'yi prosedürü çağırdıktan sonra olduğundan 2*k daha büyük bir değere ayarlayın. İşlemden doğru şekilde dönmek için 2 olasılık vardır. a) çağıran programda SP'yi ayarlayın
    ; prosedürün sonu; çağıran programda
    POP BPARAMA
    RETSP EKLE, 2*k ; SP düzeltmesi
    BEKLEMEDE
    b) yığın restorasyonu ile bir dönüş komutu kullanın; bu komut, yakın çağrı RET (cnt) formuna sahiptir; burada (cnt), bir sayaçtır (sabit ifade), kelime boyutudur. Komut aşağıdaki eylemleri gerçekleştirir: IP:= Stack SP:= SP + (cnt) Daha sonra prosedürün sonu şöyle görünür: POP BP RET 2*k p ENDP Uzun bir prosedür çağrısı için, dönüş komutu RET (cnt) gibi görünür ve aşağıdaki eylemleri gerçekleştirir: IP:= Stack CS:= Stack SP:= SP + (cnt) Bir prosedürden bu dönüş ile çağıran programda herhangi bir ek eyleme gerek yoktur.
      Bir prosedürü çağırırken kayıtları kaydetme sorunu
    Prosedürün çağıran programda kullanılan kayıtların değerlerini bozmasını önlemek için, prosedür metninde herhangi bir kayıt kullanılmadan önce "eski" değerinin yığına kaydedilmesi ve işlemin sonunda yapılması gerekir. Kaydedilen tüm değerleri geri yükleme prosedürü. Örneğin, eğer prosedür CH kaydını kullanıyorsa, yığında saklanmalıdır, ancak yığın yalnızca sözcüğü hatırlar, dolayısıyla prosedür bir parça içerecektir: PUSH CX ; “eski” CX MOV CX, 0'ı kaydetme; prosedürde CX'in kullanılması...; POP CX prosedüründen çıkmadan önce; “eski” CX'i geri yükleme Böylece, yazmaçlardan ve yığından geçirilen parametrelerle genelleştirilmiş bir kapatma (NEAR) prosedür şeması elde ederiz.

    (işlem adı) işlem

    Bakım için BP'YE BASIN

    Mov BP, SP yığını

    PUSH kaydetme kayıtları,

    prosedürde kullanılan

    vücut proc.

    POP... kayıt kurtarma

    POP KB kurtarma BP

    Daha önce, bu sayfanın adandığı internette tablo düzeni türü yaygındı. Ancak zamanla, bir web sitesi yapısı oluşturmaya yönelik bu yaklaşım geçerliliğini yitirdi ve yerini blok düzeni aldı.

    Blok düzeni ile tablo düzeni arasındaki farklar

    Tablo düzeni sayfa içeriğinin etiketin içinde olduğunu gösteriyorsa

    , o zaman blok düzeni kavramı evrensel etiketlerin aktif kullanımına dayanmaktadır.
    , diğer etiketler de dahil olmak üzere içerik içeren.

    Blok düzeni, tablo düzeninin dezavantajlarından yoksundur; arama motorları tarafından daha iyi indekslenir, kodu o kadar yayılmaz ve bloklar

    "Katmanlar" olarak adlandırmayı sevdikleri , başlangıçta evrensel, yani "her şey için" olması amaçlanmıştı, oysa
    tablo halindeki verileri görüntülemek için kullanılması gereken bir tablodur ve başka bir şey değildir.

    Blok düzeninin göze çarpan tek dezavantajı, üzerinde oluşturulan sitelerin tarayıcılarda farklı görüntülenebilmesidir. Bunu önlemek için "çapraz tarayıcı" düzenini, yani herhangi bir tarayıcı tarafından eşit şekilde görüntülenmesini sağlamanız gerekir.

    Blok düzeninin özü

    Grafik düzenleyicide bir web sitesi düzeni oluşturulur: Sayfanın hangi alanının (başlık, alt, kenar çubuğu, ana içerik) nerede bulunacağı ve ne kadar yer kaplayacağı işaretlenir, resimler ve arka planlar hazırlanır;

    Sayfanın her bölümü kendi bloğuna yerleştirilir

    : birincisinde sitenin üst kısmı, ikincisinde menü, ikincisinde içerik, üçüncüsünde vb. Her blok HTML kullanılarak içerikle doldurulur ve ayrıca CSS işaretlemesi kullanılarak konumlandırılır ve tasarlanır.

    Son HTML belgesi bir blok koleksiyonudur

    içeriğiyle birlikte. Tasarım genellikle sayfaya etiketiyle bağlanan ayrı bir CSS dosyasında bulunur. veya en azından bir kapta