Assembly dili təlimat strukturu ehtiva edir. Səviyyədə assembler dilində proqramlaşdırmada komanda strukturu. Assembly Language Data Format və Komanda Strukturu

Assembly dili əmrləri (Mühazirə)

MÜHAZİRƏ PLANI

1. Əsas əməliyyat qrupları.

Pentium.

1. Əsas əməliyyat qrupları

Mikroprosessorlar aşağıdakı əsas əməliyyat qruplarını həyata keçirən bir sıra təlimatları yerinə yetirirlər:

ekspeditor əməliyyatları,

arifmetik əməliyyatlar,

məntiqi əməliyyatlar,

növbəli əməliyyatlar,

müqayisə və sınaq əməliyyatları,

bit əməliyyatları,

Proqramın idarə edilməsi əməliyyatları;

Prosessorun idarə edilməsi əməliyyatları.

2. Prosessor əmrlərinin mnemokodları Pentium

Əmrləri təsvir edərkən, adətən, Assembly dilində proqramlaşdırma zamanı əmri dəqiqləşdirməyə xidmət edən onların mnemonic təyinatlarından (mnemonik kodlar) istifadə olunur. Assembler-in müxtəlif versiyaları üçün bəzi əmrlərin mnemonik kodları fərqli ola bilər. Məsələn, alt proqrama zəng etmək əmri üçün mnemonik kod istifadə olunurZƏNG və ya JSR (“Atla alt proqram”). Bununla belə, mikroprosessorların əsas növləri üçün əksər əmrlərin mnemonik kodları eynidir və ya bir qədər fərqlənir, çünki onlar yerinə yetirilən əməliyyatı təyin edən müvafiq ingilis sözlərinin qısaldılmasıdır. Prosessorlar üçün qəbul edilmiş komanda mnemonikasını nəzərdən keçirək Pentium.

İrəli əmrlər. Bu qrupun əsas əmri komandadırMOV , iki registr arasında və ya registr ilə yaddaş hüceyrəsi arasında məlumat ötürülməsini təmin edir. Bəzi mikroprosessorlar iki yaddaş hüceyrəsi arasında köçürməni, eləcə də bir neçə registrin məzmununun yaddaşdan qrup ötürülməsini həyata keçirir. Məsələn, 68 ailəsinin mikroprosessorları Motorola xxx əmrini yerinə yetirinHƏRƏKƏT EDİN , bir yaddaş hüceyrəsindən digərinə köçürməni təmin edən və əmrHƏRƏKƏT EDİN , yaddaşa yazan və ya verilmiş registrlər dəstinin məzmununu yaddaşdan yükləyən (16 registrə qədər). KomandaXCHG iki prosessor registrinin və ya registr və yaddaş xanasının məzmununun qarşılıqlı mübadiləsini həyata keçirir.

Daxiletmə əmrləri IN və çıxış OUT prosessor registrindən məlumatların xarici cihaza ötürülməsini və ya xarici cihazdan reyestrə məlumatların qəbulunu həyata keçirin. Bu əmrlər verilənlərin ötürüldüyü interfeys cihazının (I/O portu) nömrəsini təyin edir. Qeyd edək ki, bir çox mikroprosessorlarda xarici qurğulara daxil olmaq üçün xüsusi əmrlər yoxdur. Bu zaman verilənlərin sistemə daxil edilməsi və çıxarılması əmrdən istifadə etməklə həyata keçirilirMOV , tələb olunan interfeys cihazının ünvanını təyin edir. Beləliklə, xarici qurğu yaddaş xanası kimi ünvanlanır və sistemə qoşulmuş interfeys qurğularının (portlarının) ünvanlarının yerləşdiyi ünvan məkanında xüsusi bölmə ayrılır.

Arifmetik əməliyyatlar üçün əmrlər. Bu qrupdakı əsas əmrlər bir sıra variantları olan toplama, çıxma, vurma və bölmədir. Əlavə əmrləri ƏLAVƏ EDİN və çıxma SUB ilə müvafiq əməliyyatları yerinə yetirinciki registr, registr və yaddaş yeri olan və ya dərhal operanddan istifadə edən. Komandalar AD C , SB B atributun qiymətini nəzərə alaraq toplama və çıxma əməliyyatlarını yerinə yetirməkC, əvvəlki əməliyyatın icrası prosesində köçürmənin formalaşması zamanı təyin edilir. Bu əmrlərin köməyi ilə rəqəmlərinin sayı prosessorun tutumundan artıq olan operandların ardıcıl əlavə edilməsi həyata keçirilir. Komanda NEG operandın işarəsini dəyişir, onu ikinin tamamlayıcısına çevirir.

Çarpma və bölmə əməliyyatları imzalanmış ədədlər üzərində yerinə yetirilə bilər (əmrlərI MUL, I DIV ) və ya imzasız (əmrlər MUL, DIV ). Əməliyyatın nəticəsi reyestrdə yerləşir. Çoxaldıqda (əmrlərMUL , IMUL ) yerləşdirmək üçün iki registrdən istifadə edən ikirəqəmli nəticə ilə nəticələnir. Bölmə zamanı (əmrlərDIV , IDIV ) dividend kimi ikirəqəmli operanddan istifadə olunur, iki registrdə yerləşdirilir və nəticədə hissə və qalıq iki registrə yazılır.

Məntiq Əmrləri . Demək olar ki, bütün mikroprosessorlar əmrlərdən istifadə etməklə eyni adlı operand bitləri üzərində yerinə yetirilən məntiqi əməliyyatları AND, OR, Exclusive OR yerinə yetirirlər. VƏ, YA, X YA . Əməliyyatlar iki registr, registr və yaddaş yerinin məzmunu üzərində və ya dərhal operanddan istifadə etməklə həyata keçirilir. Komanda YOX Operandın hər bitinin dəyərini çevirir.

Shift Əmrləri. Mikroprosessorlar ünvanlanmış operandların arifmetik, məntiqi və tsiklik yerdəyişmələrini bir və ya bir neçə bitlə həyata keçirirlər. Köçürüləcək operand registrdə və ya yaddaş yerində ola bilər və yerdəyişmə bitlərinin sayı təlimatda olan bilavasitə operanddan istifadə edilməklə müəyyən edilir və ya göstərilən registrin məzmunu ilə müəyyən edilir. Transfer işarəsi adətən növbənin həyata keçirilməsində iştirak edirCstatus reyestrində (SR və ya EFLAGS), registrdən və ya yaddaş yerindən çıxarılan operandın son bitini ehtiva edir.

Müqayisə və sınaq əmrləri . Operandların müqayisəsi adətən təlimatla aparılırCMP xüsusiyyətlərin dəyərlərini təyin etməklə operandların çıxarılmasını həyata keçirən N, Z, V, C nəticəyə uyğun olaraq status reyestrində. Bu halda, çıxmanın nəticəsi saxlanmır və operandların dəyərləri dəyişmir. Əldə edilmiş xarakterik dəyərlərin sonrakı təhlili nisbi dəyəri təyin etməyə imkan verir (>,<, =) операндов со знаком или без знака. Использование различных способов адресации позволяет производит сравнение содержимого двух регистров, регистра и ячейки памяти, непосредственно заданного операнда с содержимым регистра или ячейки памяти.

Bəzi mikroprosessorlar test əmrini yerinə yetirirlər TST , bu müqayisə təlimatının tək operand variantıdır. Bu əmr yerinə yetirildikdə işarələr qoyulur N, Zünvanlanan operandın işarəsinə və qiymətinə (bərabər və ya sıfırdan fərqli) uyğun olaraq.

Bit əməliyyat təlimatları . Bu əmrlər atributun dəyərini təyin edirCyoxlanılan bitin dəyərinə uyğun olaraq status reyestrindəbn ünvanlanmış operandda. Bəzi mikroprosessorlarda bir bitin sınaqdan keçirilməsinin nəticəsinə görə işarə qoyulurZ. Test bit nömrəsinya əmrdə göstərilən reyestrin məzmunu ilə, ya da dərhal operandla təyin olunur.

Bu qrupun əmrləri sınaqdan keçirilmiş bitin dəyişdirilməsi üçün müxtəlif variantları həyata keçirir BT bu bitin qiymətini dəyişməz saxlayır.Command B T S sınaqdan sonra dəyəri təyin edir bn=1 və əmr B T C - məna bn=0.Əmr B T C bit bn dəyərini sınaqdan keçirdikdən sonra onu çevirir.

Proqram idarəetmə əməliyyatları. Proqramı idarə etmək üçün çoxlu sayda əmrlərdən istifadə olunur, bunlar arasında:

- qeyd-şərtsiz idarəetmənin ötürülməsi əmrləri;

- şərti keçid əmrləri;

- proqram dövrlərinin təşkili üçün əmrlər;

- kəsmə əmrləri;

- xüsusiyyət dəyişdirmə əmrləri.

İdarəetmənin qeyd-şərtsiz ötürülməsi komanda tərəfindən həyata keçirilirJMP , proqram sayğacına yüklənənPCyerinə yetiriləcək növbəti əmrin ünvanı olan yeni məzmun. Bu ünvan ya birbaşa əmrdə göstərilirJMP (birbaşa ünvan) və ya cari məzmunun cəmi kimi hesablanırPCvə imzalanmış nömrə olan əmrdə göstərilən ofset (nisbi ünvanlama). ÇünkiPCproqramın növbəti əmrinin ünvanını ehtiva edir, sonra sonuncu üsul keçid ünvanını təyin edir, növbəti ünvana nisbətən verilmiş bayt sayı ilə ofset. Əgər ofset müsbət olarsa, proqramın növbəti əmrlərinə, ofset mənfi olarsa, əvvəlkilərə keçid həyata keçirilir.

Alt proqram həmçinin əmrdən istifadə edərək nəzarətin qeyd-şərtsiz ötürülməsi ilə çağırılırZƏNG (və ya JSR ). Ancaq bu vəziyyətdə, yükləmədən əvvəlPC alt proqramın ilk təlimatının ünvanını müəyyən edən yeni məzmun, alt proqramın icrasından sonra əsas proqrama (və ya proqrama) qayıtmağı təmin etmək üçün onun cari dəyərini (növbəti təlimatın ünvanı) saxlamaq lazımdır. alt proqramları yerləşdirərkən əvvəlki alt proqram). Şərti keçid təlimatları (proqram filialları) yüklənirPCadətən status reyestrindəki müxtəlif atributların cari dəyərinə uyğun olaraq təyin olunan müəyyən şərtlər yerinə yetirildikdə yeni məzmun. Əgər şərt yerinə yetirilmirsə, onda növbəti proqram əmri yerinə yetirilir.

Xüsusiyyətlərin idarə edilməsi əmrləri yazmağı təmin edir - xüsusiyyətləri saxlayan status reyestrinin məzmununu oxumaq, həmçinin fərdi xüsusiyyətlərin dəyərlərini dəyişdirmək. Məsələn, Pentium prosessorları əmrləri yerinə yetirir LAHF SAHF , status registrindən işarələri ehtiva edən aşağı baytı yükləyən EFLAG registrin aşağı baytına qədər EAX və aşağı bayt doldurma EFLAGS reyestrdən E AX.. Əmrlər CLC, STCötürmə bayrağının dəyərlərini təyin edin CF=0, CF=1 və əmr CMC bu xüsusiyyətin dəyərinin tərsinə çevrilməsinə səbəb olur.Şərti sıçrayışlar zamanı əlamətlər proqramın icrasının gedişatını müəyyən etdiyi üçün, adətən proqramı idarə etmək üçün xassələrin dəyişdirilməsi təlimatlarından istifadə olunur.

Prosessorun İdarə Edilməsi Əmrləri . Bu qrupa dayandırma əmrləri, əməliyyatın olmaması və prosessorun və ya onun ayrı-ayrı bloklarının iş rejimini təyin edən bir sıra əmrlər daxildir. KomandaHLT proqramın icrasını dayandırır və prosessoru dayandırma vəziyyətinə qoyur, bundan çıxış kəsilmə və ya yenidən başladın siqnalları aldıqdan sonra baş verir ( sıfırla). Komanda XEYR Proqram gecikmələrini həyata keçirmək və ya proqramda yaranan boşluqları doldurmaq üçün heç bir əməliyyatın yerinə yetirilməsinə səbəb olmayan (“boş” təlimat) istifadə olunur.

Xüsusi qruplar CLI, STI kəsmə sorğularının xidmətini söndürün və aktivləşdirin. Prosessorlarda Pentium bunun üçün nəzarət bitindən (bayraq) istifadə olunurƏGƏR reyestrdə EFLAGS.

Bir çox müasir mikroprosessorlar istifadəçiyə və ya digər qurğulara verilmiş sistemdə istifadə olunan prosessorun növü haqqında məlumat əldə etməyə imkan verən identifikasiya əmri verir. Prosessorlarda Pentuiməmr bunun üçündür CPUID , bu müddət ərzində prosessor haqqında lazımi məlumatlar registrlərə daxil olur EAX,ebx,ECX,EDX və sonra istifadəçi və ya əməliyyat sistemi tərəfindən oxuna bilər.

Prosessor tərəfindən həyata keçirilən iş rejimlərindən və işlənmiş məlumatların müəyyən edilmiş növlərindən asılı olaraq, icra edilə bilən əmrlər dəsti əhəmiyyətli dərəcədə genişləndirilə bilər.

Bəzi prosessorlar BCD hesab əməliyyatlarını yerinə yetirir və ya belə nömrələri işləyərkən nəticənin düzəldilməsi üçün xüsusi göstərişlər yerinə yetirirlər. Bir çox yüksək performanslı prosessorlar daxildir FPU - nömrə emal bölməsi c "üzən nöqtə".

Bir sıra müasir prosessorlarda bir neçə tam və ya ədədin qrup emalı həyata keçirilir. c Prinsipə uyğun olaraq tək bir əmrlə "üzən nöqtə" SIMD ("Tək Təlimat - Çox Məlumat ”) - “Bir əmr – Çoxlu məlumat”. Bir neçə operand üzrə əməliyyatların eyni vaxtda yerinə yetirilməsi video və audio verilənlərlə işləyərkən prosessorun məhsuldarlığını əhəmiyyətli dərəcədə artırır. Bu cür əməliyyatlar təsvirin işlənməsi, audio siqnalın işlənməsi və digər tətbiqlərdə geniş istifadə olunur. Bu əməliyyatları yerinə yetirmək üçün, müxtəlif növ prosessorlarda ( Pentium, Atlon) adını aldıMMX (“ Milti-Media uzadılması ”) – Multimedia Genişləndirilməsi,SSE(“Axınan SIMD Genişləndirilməsi”) – Yayımlanan SIMD - uzadılması, “3 DUzatma- 3D genişləndirilməsi.

Şirkətin prosessorlarının xarakterik xüsusiyyəti Intel , 80286 modelindən başlayaraq, prosessor qorunan virtual ünvan rejimində işləyərkən təmin edilən yaddaşa giriş zamanı prioritet nəzarətdir - “ Qorunan rejim ” (qorunan rejim). Bu rejimi həyata keçirmək üçün qəbul edilmiş prioritet giriş alqoritminə uyğun olaraq yaddaşın qorunmasını təşkil etməyə xidmət edən xüsusi komanda qruplarından istifadə olunur.

Assembly dilinin təlimat strukturu Maşın təlimatları səviyyəsində proqramlaşdırma kompüter proqramlaşdırmasının mümkün olduğu minimum səviyyədir. Maşın təlimatları sistemi maşının aparatına təlimatlar verməklə tələb olunan hərəkətləri həyata keçirmək üçün kifayət olmalıdır. Hər bir maşın təlimatı iki hissədən ibarətdir: "nə etməli" ni təyin edən əməliyyat hissəsi və emal obyektlərini təyin edən operand, yəni "nə etməli". Assembly dilində yazılmış mikroprosessorun maşın təlimatı aşağıdakı formada olan tək sətirdir: etiket təlimatı/direktiv operand(lar) ; şərhlər Etiket, əmr/direktiv və operand ən azı bir boşluq və ya nişan simvolu ilə ayrılır. Təlimat operandları vergüllə ayrılır.

Assembly dili təlimatının strukturu Assembly dili təlimatı mikroprosessorun hansı hərəkəti yerinə yetirməli olduğunu kompilyatora bildirir. Assembly direktivləri proqram mətnində göstərilən, montaj prosesinə və ya çıxış faylının xüsusiyyətlərinə təsir edən parametrlərdir. Operand verilənlərin ilkin qiymətini (verilənlər seqmentində) və ya təlimatın (kod seqmentində) yerinə yetirəcəyi elementləri təyin edir. Təlimat bir və ya iki operandlı ola bilər və ya heç bir operand ola bilməz. Operandların sayı birbaşa olaraq təlimat kodu ilə müəyyən edilir. Əgər əmr və ya direktivin növbəti sətirdə davam etdirilməsi lazımdırsa, o zaman əks kəsik işarəsi istifadə olunur: "" . Default olaraq assembler əmrlərdə və direktivlərdə böyük və kiçik hərflər arasında fərq qoymur. Direktiv və əmr nümunələri Count db 1 ; Ad, direktiv, bir operand mov eax, 0 ; Komanda, iki operand

İdentifikatorlar dəyişən adlarını və etiket adlarını təyin etmək üçün istifadə olunan etibarlı simvolların ardıcıllığıdır. İdentifikator aşağıdakı simvollardan bir və ya bir neçəsindən ibarət ola bilər: latın əlifbasının bütün hərfləri; 0-dan 9-a qədər rəqəmlər; xüsusi simvollar: _, @, $, ? . Nöqtə etiketin ilk simvolu kimi istifadə edilə bilər. Qorunan assembler adları (direktivlər, operatorlar, komanda adları) identifikator kimi istifadə edilə bilməz. İdentifikatorun ilk simvolu hərf və ya xüsusi simvol olmalıdır. Maksimum uzunluq identifikator 255 simvol, lakin tərcüməçi ilk 32-ni qəbul edir, qalanları nəzərə alınmır. Assembler direktivi olmayan sətirdə yazılan bütün etiketlər iki nöqtə ":" ilə bitməlidir. Etiket, əmr (direktiv) və operand sətirdə hər hansı müəyyən mövqedən başlamalı deyil. Proqramın daha çox oxunaqlı olması üçün onları bir sütunda yazmaq tövsiyə olunur.

Etiketlər Assembler direktivi olmayan sətirdə yazılan bütün etiketlər iki nöqtə ":" ilə bitməlidir. Etiket, əmr (direktiv) və operand sətirdə hər hansı müəyyən mövqedən başlamalı deyil. Proqramın daha çox oxunaqlı olması üçün onları bir sütunda yazmaq tövsiyə olunur.

Şərhlər Proqramda şərhlərin istifadəsi onun aydınlığını artırır, xüsusən təlimatlar toplusunun məqsədi aydın olmayan yerlərdə. Şərhlər mənbə modulunun istənilən sətirində nöqtəli vergül (;) ilə başlayır. "-nin sağındakı bütün simvollar; ' sətirin sonuna qədər şərhlər var. Şərhdə "boşluq" daxil olmaqla istənilən çap edilə bilən simvol ola bilər. Şərh bütün sətri əhatə edə bilər və ya eyni sətirdəki əmrə əməl edə bilər.

Assembly dili proqramının strukturu Assembly dili proqramı modul adlanan bir neçə hissədən ibarət ola bilər ki, onların hər biri bir və ya bir neçə verilənlər, stek və kod seqmentlərini müəyyən edə bilər. İstənilən tam assembler dili proqramı onun icrasına başlanılan bir əsas və ya əsas modulu ehtiva etməlidir. Modulda müvafiq direktivlərlə elan edilmiş proqram, verilənlər və stek seqmentləri ola bilər.

Yaddaş Modelləri Seqmentləri elan etməzdən əvvəl direktivdən istifadə edərək yaddaş modelini təyin etməlisiniz. MODEL modifikatoru yaddaş_model, çağırış_konvensiya, OS_type, stack_parameter Əsas montaj dili yaddaş modelləri: Yaddaş modeli Kod ünvanlama Məlumat ünvanlama Əməliyyat sistemi Kodu və verilənlərin bir-birinə qarışması MS-DOS YAXINDA KİÇİK Etibarlıdır MS-DOS YAXINDA KİÇİK, Windows ORTA FAR YAXIN, Windows Xeyr MS-DOS. YAXIN FAR MS-DOS, Windows BÖYÜK FAR MS-DOS, Windows BÖYÜK FAR MS-DOS, Windows NEAR Windows 2000, Windows XP, Windows Valid FAT NT YAXIN,

Yaddaş Modelləri Kiçik model yalnız 16 bitlik MS-DOS proqramlarında işləyir. Bu modeldə bütün verilənlər və kod bir fiziki seqmentdə yerləşir. Bu halda proqram faylının ölçüsü 64 KB-dən çox deyil. Kiçik model bir kod seqmentini və bir məlumat seqmentini dəstəkləyir. Bu modeldən istifadə zamanı verilənlər və kodlar yaxın (yaxın) kimi ünvanlanır. Orta model çoxlu kod seqmentlərini və bir məlumat seqmentini dəstəkləyir, kod seqmentlərindəki bütün keçidlər defolt olaraq uzaq (uzaq) hesab olunur və məlumat seqmentindəki keçidlər yaxın (yaxın) hesab olunur. Kompakt model uzaq verilənlərin ünvanlanmasından (uzaqda) istifadə edən çoxlu məlumat seqmentlərini və yaxın verilənlərin ünvanlanmasından (yaxın) istifadə edən bir kod seqmentini dəstəkləyir. Böyük model çoxlu kod seqmentlərini və çoxlu məlumat seqmentlərini dəstəkləyir. Varsayılan olaraq, bütün kod və məlumat istinadları uzaq hesab olunur. Nəhəng model demək olar ki, böyük yaddaş modelinə bərabərdir.

Yaddaş Modelləri Düz model seqmentləşdirilməmiş proqram konfiqurasiyasını nəzərdə tutur və yalnız 32 bitlik əməliyyat sistemlərində istifadə olunur. Bu model kiçik modelə bənzəyir, çünki verilənlər və kod eyni 32 bitlik seqmentdə yerləşir. Direktivdən əvvəl düz model üçün proqram hazırlamaq. model mənzil direktivlərdən birini yerləşdirməlidir: . 386, . 486, . 586 və ya. 686. Prosessor seçimi direktivinin seçimi proqramların yazılması zamanı mövcud olan komandalar toplusunu müəyyən edir. Prosessor seçim direktivindən sonrakı p hərfi qorunan iş rejimi deməkdir. Məlumat və kod ünvanlanması yaxındır, bütün ünvanlar və göstəricilər 32 bitdir.

yaddaş modelləri. MODEL dəyişdirici yaddaş_model, çağırış_konvensiya, OS_type, stack_parameter Modifikator parametri seqment növlərini müəyyən etmək üçün istifadə olunur və aşağıdakı dəyərləri qəbul edə bilər: istifadə 16 (seçilmiş modelin seqmentləri 16-bit kimi istifadə olunur) istifadə 32 (seçilmiş modelin seqmentləri istifadə olunur) 32 bit kimi). Calling_convention parametri digər dillərdən, o cümlədən yüksək səviyyəli dillərdən (C++, Pascal) prosedur çağırarkən parametrlərin necə ötürüldüyünü müəyyən etmək üçün istifadə olunur. Parametr aşağıdakı qiymətləri qəbul edə bilər: C, BASIC, FORTRAN, PASCAL, SYSCALL, STDCALL.

yaddaş modelləri. MODEL dəyişdirici yaddaş_model, çağırış_konvensiya, OS_type, stack_parameter OS_type parametri defolt olaraq OS_DOS-dur və hazırda bu parametr üçün yeganə dəstəklənən dəyərdir. Yığın_parametri aşağıdakı kimi qurulub: NEARSTACK (SS registri DS-ə bərabərdir, verilənlər və stek regionları eyni fiziki seqmentdə yerləşir) FARSTACK (SS registri DS-ə bərabər deyil, verilənlər və stek regionları müxtəlif fiziki seqmentlərdə yerləşir). Defolt NEARSTACK-dır.

"Heç nə etməmək" proqramının nümunəsi. 686 P. MODEL YAPI, STDCALL. DATA. CODE START: RET END START RET - mikroprosessor əmri. Proqramın düzgün şəkildə dayandırılmasını təmin edir. Proqramın qalan hissəsi tərcüməçinin işləməsi ilə bağlıdır. . 686 P - Pentium 6 (Pentium II) qorunan rejim əmrlərinə icazə verilir. Bu direktiv prosessor modelini təyin etməklə dəstəklənən assembler təlimat dəstini seçir. . MODEL FLAT, stdcall - düz yaddaş modeli. Bu yaddaş modeli əməliyyat otağında istifadə olunur Windows sistemi. stdcall istifadə üçün konvensiya çağıran prosedurdur.

"Heç nə etməmək" proqramının nümunəsi. 686 P. MODEL YAPI, STDCALL. DATA. KOD BAŞLAMA: YENİDƏN SON BAŞLAMA . DATA - verilənlərdən ibarət proqram seqmenti. Bu proqram yığını istifadə etmir, buna görə seqment. STACK yoxdur. . KOD - kodu ehtiva edən proqramın seqmenti. START - etiket. END START - proqramın sonu və tərtibçiyə proqramın START etiketindən başlamalı olduğu mesajı. Hər bir proqramda sonu işarələyən END direktivi olmalıdır mənbə kodu proqramlar. END direktivindən sonra gələn bütün sətirlər nəzərə alınmır.END direktivindən sonrakı etiket kompilyatora proqramın icrasının başladığı əsas modulun adını bildirir. Proqramda bir modul varsa, END direktivindən sonrakı etiket buraxıla bilər.

Assembly dili tərcüməçiləri Tərcüməçi proqramlaşdırma dillərindən birində təqdim olunan proqramı hədəf dildə obyekt kodu adlanan proqrama çevirən proqram və ya aparatdır. Maşın təlimatı mnemonikasını dəstəkləməklə yanaşı, hər bir tərcüməçinin öz direktivləri və makroları var, çox vaxt başqa heç nə ilə uyğun gəlmir. Assembly dili tərcüməçilərinin əsas növləri bunlardır: MASM (Microsoft Assembler), TASM (Borland Turbo Assembler), FASM (Flat Assembler) - Tomasz Qryshtar (Polşa) tərəfindən yazılmış sərbəst paylanmış çox keçidli assembler, NASM (Netwide Assembler) - a. Intel x arxitekturası 86 üçün pulsuz assembler Simon Tatham tərəfindən Julian Hall ilə birlikdə yaradılmışdır və hazırda Source-da kiçik inkişaf qrupu tərəfindən hazırlanır. Forge. xalis.

Src="https://present5.com/presentation/-29367016_63610977/image-15.jpg" alt="Microsoft Visual Studio 2005-də proqram tərcüməsi 1) File->New->Project seçərək layihə yaradın. menyu Və"> Трансляция программы в Microsoft Visual Studio 2005 1) Создать проект, выбрав меню File->New->Project и указав имя проекта (hello. prj) и тип проекта: Win 32 Project. В дополнительных опциях мастера проекта указать “Empty Project”.!}

Src="https://present5.com/presentation/-29367016_63610977/image-16.jpg" alt="Microsoft Visual Studio 2005-də proqram tərcüməsi 2) Layihə ağacında (View->Solution Explorer) əlavə edin"> Трансляция программы в Microsoft Visual Studio 2005 2) В дереве проекта (View->Solution Explorer) добавить файл, в котором будет содержаться текст программы: Source. Files->Add->New. Item.!}

Proqramın Microsoft Visual Studio 2005-də tərcüməsi 3) Code C++ fayl tipini seçin, lakin uzantı ilə adı göstərin. asm:

Proqramın Microsoft Visual Studio 2005-də tərcüməsi 5) Kompilyator seçimlərini təyin edin. Layihə faylı menyusunda sağ düyməni seçin Xüsusi Quraşdırma Qaydaları…

Proqramın Microsoft Visual Studio 2005-də tərcüməsi və görünən pəncərədə Microsoft Macro Assembler seçin.

Proqramın Microsoft Visual Studio 2005-də tərcüməsi Salam faylda sağ düymə ilə yoxlayın. Properties menyusundan layihə ağacının asm seçin və General->Tool: Microsoft Macro Assembler seçin.

Src="https://present5.com/presentation/-29367016_63610977/image-22.jpg" alt="Microsoft Visual Studio 2005-də proqram tərcüməsi 6) Build->Build hello.prj seçərək faylı tərtib edin. ."> Трансляция программы в Microsoft Visual Studio 2005 6) Откомпилировать файл, выбрав Build->Build hello. prj. 7) Запустить программу, нажав F 5 или выбрав меню Debug->Start Debugging.!}

ƏS Windows-da proqramlaşdırma Windows ƏS-də proqramlaşdırma API funksiyalarının (Application Program Interface, yəni proqram təminatı interfeysi) istifadəsinə əsaslanır. Onların sayı 2000-ə çatır. Windows üçün proqram əsasən belə zənglərdən ibarətdir. ilə bütün qarşılıqlı əlaqə xarici cihazlar və əməliyyat sisteminin resursları, bir qayda olaraq, belə funksiyalar vasitəsilə baş verir. Windows əməliyyat sistemi düz yaddaş modelindən istifadə edir. İstənilən yaddaş yerinin ünvanı bir 32 bitlik registrin məzmunu ilə müəyyən ediləcək. Windows üçün proqram strukturlarının 3 növü var: dialoq (əsas pəncərə dialoqdur), konsol və ya pəncərəsiz struktur, klassik struktur (pəncərə, çərçivə).

Zəng edin Windows xüsusiyyətləri API Yardım faylında istənilən API funksiyası funksiya_adı növü kimi təqdim olunur (FA 1, FA 2, FA 3) Tip – qaytarılan dəyər növü; FAKS rəsmi arqumentlərin göründükləri ardıcıllıqla siyahısıdır.Məsələn, int Mesaj. Qutu (HWND h. Wnd, LPCTSTR lp. Text, LPCTSTR lp. Caption, UINT u. Type); Bu funksiya mesajı və çıxış düyməsi(ləri) olan pəncərəni göstərir. Parametrlərin mənası: h. Wnd - mesaj pəncərəsinin görünəcəyi pəncərənin idarəsi, lp. Mətn - pəncərədə görünəcək mətn, lp. Başlıq - pəncərə başlığında mətn, u. Tip - pəncərə növü, xüsusən də çıxış düymələrinin sayını təyin edə bilərsiniz.

Windows API funksiyalarına zəng etmək int Message. Qutu (HWND h. Wnd, LPCTSTR lp. Text, LPCTSTR lp. Caption, UINT u. Type); API funksiyasının demək olar ki, bütün parametrləri əslində 32 bitlik tam ədədlərdir: HWND 32 bitlik tam ədəddir, LPCTSTR 32 bitlik sətir göstəricisidir, UINT 32 bitlik tam ədəddir. Funksiyaların yeni versiyalarına keçmək üçün funksiyaların adına tez-tez "A" şəkilçisi əlavə edilir.

Windows API funksiyalarına zəng etmək int Message. Qutu (HWND h. Wnd, LPCTSTR lp. Text, LPCTSTR lp. Caption, UINT u. Type); MASM-dən istifadə edərkən adın sonuna @N N əlavə etməlisiniz - ötürülən arqumentlərin yığında tutduğu baytların sayı. Win 32 API funksiyaları üçün bu rəqəm arqumentlərin sayı n dəfə 4 (hər arqumentdə bayt) kimi müəyyən edilə bilər: N=4*n. Funksiyaya zəng etmək üçün assemblerin CALL əmrindən istifadə olunur. Bu halda, funksiyanın bütün arqumentləri ona stek (PUSH əmri) vasitəsilə ötürülür. Arqumentin ötürülməsi istiqaməti: SOLDAN SAĞA - AŞAĞIDA YUKARI. Arqument u ilk olaraq yığına itələnəcək. növü. Göstərilən funksiyaya zəng etmək belə görünəcək: CALL Message. Qutu. [email protected]

Windows API funksiyalarına zəng etmək int Message. Qutu (HWND h. Wnd, LPCTSTR lp. Text, LPCTSTR lp. Caption, UINT u. Type); İstənilən API funksiyasının yerinə yetirilməsinin nəticəsi adətən tam ədəddir və EAX registrində qaytarılır. OFFSET direktivi "segment ofset" və ya yüksək səviyyəli dil terminləri ilə desək, sətrin başlanğıcı üçün "göstərici"dir. EQU direktivi, C-də #define kimi, sabiti təyin edir. EXTERN direktivi kompilyatora funksiya və ya identifikatorun moduldan kənar olduğunu bildirir.

"Hər kəsə salam!" verilişinin nümunəsi. . 686 P. MODEL YAPI, STDCALL. STACK 4096. DATA MB_OK EQU 0 STR 1 DB "Mənim ilk proqramım", 0 STR 2 DB "Hər kəsə salam!", 0 HW DD ? EXTERN mesajı. Qutu. [email protected]: YAXIN. KOD BAŞLAT: PUSH MB_OK PUSH OFFSET STR 1 PUSH OFFSET STR 2 PUSH HW CALL Mesajı. Qutu. [email protected] YENİDƏN SON BAŞLAYIN

INVOKE direktivi MASM dilinin tərcüməçisi həmçinin makro alətdən istifadə etməklə funksiya çağırışını sadələşdirməyə imkan verir - INVOKE direktivi: INVOKE funksiyası, parametr1, parametr2, ... Funksiya çağırışına @16 əlavə etməyə ehtiyac yoxdur; parametrlər tam olaraq funksiyanın təsvirində verildiyi ardıcıllıqla yazılır. tərcüməçi makroları parametrləri yığına itələyir. INVOKE direktivindən istifadə etmək üçün sizdə PROTO direktivindən istifadə edərək funksiya prototipinin təsviri aşağıdakı formada olmalıdır: Mesaj. Qutu. PROTO: DWORD, : DWORD

Assembly dilində strukturlar

Yuxarıda nəzərdən keçirdiyimiz massivlər eyni tipli elementlərin toplusudur. Ancaq tez-tez tətbiqlərdə müəyyən bir məlumat toplusunu nəzərdən keçirməyə ehtiyac var fərqli tip bir növ kimi.

Bu, məsələn, müxtəlif tipli verilənlər toplusunu bir obyektlə əlaqələndirmək lazım olan verilənlər bazası proqramları üçün çox aktualdır.

Məsələn, əvvəllər üç baytlıq elementlər massivi ilə işləyən Siyahı 4-ə baxdıq. Hər bir element, öz növbəsində, müxtəlif tipli iki element idi: bir baytlıq sayğac sahəsi və saxlama və emal üçün lazım olan daha çox məlumatı daşıya bilən iki baytlıq sahə. Oxucu yüksək səviyyəli dillərdən biri ilə tanışdırsa, o zaman belə bir obyektin adətən xüsusi məlumat növündən istifadə edərək təsvir olunduğunu bilir - strukturlar.

Assembly dilinin istifadəsini yaxşılaşdırmaq üçün bu məlumat növü də ona daxil edilmişdir.

A-prior strukturu müxtəlif tipli sabit sayda elementlərdən ibarət məlumat növüdür.

Proqramda strukturlardan istifadə etmək üçün üç şeyi etməlisiniz:

    Soruş struktur şablonu .

    Əslində, bu, daha sonra bu tip dəyişənləri müəyyən etmək üçün istifadə edilə bilən yeni məlumat növünün müəyyən edilməsi deməkdir.

    Müəyyənləşdirmək struktur nümunəsi .

    Bu mərhələ əvvəlcədən təyin edilmiş (şablondan istifadə etməklə) strukturla xüsusi dəyişənin işə salınmasını nəzərdə tutur.

    Təşkil et struktur üzvlərinə daxil olmaq .

Aralarındakı fərqin nə olduğunu əvvəldən başa düşməyiniz çox vacibdir təsviri proqramdakı strukturlar və onun tərifi.

təsvir etmək proqramdakı struktur yalnız onun sxemini və ya nümunəsini göstərmək deməkdir; yaddaş ayrılmır.

Bu şablon yalnız tərcüməçi üçün sahələrin yeri və onların standart dəyəri haqqında məlumat kimi qəbul edilə bilər.

Müəyyənləşdirmək struktur tərcüməçiyə yaddaş ayırmağı və bu yaddaş sahəsinə simvolik ad təyin etməyi əmr etmək deməkdir.

Proqramda strukturu yalnız bir dəfə təsvir edə və onu istənilən sayda təyin edə bilərsiniz.

Struktur şablonunun təsviri

Struktur şablonu bəyannaməsi aşağıdakı sintaksisə malikdir:

struktur_adı STRUC

struktur_adı ENDS

Budur verilənlərin təsviri direktivlərinin ardıcıllığıdır db, dw, dd, dqdt.

Onların operandları sahələrin ölçüsünü və isteğe bağlı olaraq ilkin dəyərləri müəyyən edir. Bu dəyərlər struktur müəyyən edildikdə müvafiq sahələri işə salacaq.

Şablonu təsvir edərkən artıq qeyd etdiyimiz kimi, yaddaş ayrılmır, çünki bu, sadəcə tərcüməçi üçün məlumatdır.

Məkan proqramdakı şablon ixtiyari ola bilər, lakin bir keçidli tərcüməçinin məntiqinə əsasən, bu strukturun tipi ilə dəyişənin müəyyən edildiyi yerdən əvvəl yerləşməlidir. Yəni verilənlər seqmentində hansısa strukturun tipi ilə dəyişəni təsvir edərkən onun şablonu verilənlər seqmentinin əvvəlində və ya ondan əvvəl yerləşdirilməlidir.

Müəyyən bir şöbənin işçilərinin məlumat bazasının modelləşdirilməsi nümunəsindən istifadə edərək strukturlarla işləməyi nəzərdən keçirin.

Sadəlik üçün, daxiletmə zamanı məlumatın çevrilməsi problemlərindən xilas olmaq üçün bütün sahələrin simvolik olması ilə razılaşacağıq.

Bu verilənlər bazasının qeyd strukturunu aşağıdakı nümunə ilə müəyyən edək:

Bir struktur növü ilə məlumatların müəyyən edilməsi

Proqramda şablonun köməyi ilə təsvir edilən strukturdan istifadə etmək üçün bu strukturun tipi ilə dəyişəni müəyyən etmək lazımdır. Bunun üçün aşağıdakı sintaksis istifadə olunur:

[dəyişən adı] struktur_adı

    dəyişən adı- verilmiş struktur tipinin dəyişən identifikatoru.

    Dəyişən adının göstərilməsi isteğe bağlıdır. Göstərilməyibsə, bütün uzunluqların cəminin ölçüsü ilə yaddaş sahəsi struktur elementləri.

    dəyərlərin siyahısı- bucaqlı mötərizələrə daxil edilmiş struktur elementlərinin ilkin dəyərlərinin vergüllə ayrılmış siyahısı.

    Onun vəzifəsi də isteğe bağlıdır.

    Siyahı natamamdırsa, o zaman verilmiş dəyişən üçün strukturun bütün sahələri, əgər varsa, şablondakı dəyərlərlə işə salınır.

    Fərdi sahələrin işə salınmasına icazə verilir, lakin bu halda çatışmayan sahələr vergüllə ayrılmalıdır. Çatışmayan sahələr struktur şablonundan alınan dəyərlərlə işə salınacaq. Bu strukturun növü ilə yeni bir dəyişən təyin edərkən, onun şablonundaki bütün sahə dəyərləri ilə razılaşırıqsa (yəni standart olaraq təyin olunur), onda sadəcə bucaqlı mötərizələr yazmalısınız.

    Məsələn: qalib işçi.

Məsələn, yuxarıda təsvir edilən strukturun növü ilə bir neçə dəyişən təyin edək.

Struktur üsulları

Struktur tipin hər hansı bir proqramlaşdırma dilinə daxil edilməsi ideyası müxtəlif tipli dəyişənləri bir obyektdə birləşdirməkdir.

Dil müəyyən struktur instansiyası daxilində bu dəyişənlərə daxil olmaq üçün vasitə təmin etməlidir. Komandada hansısa strukturun sahəsinə istinad etmək üçün xüsusi operator istifadə olunur - simvolu". " (nöqtə). Aşağıdakı sintaksisdə istifadə olunur:

    ünvan_ifadəsi- aşağıda göstərilən sintaksis qaydalarına uyğun olaraq hansısa struktur tipli dəyişən identifikatoru və ya mötərizədə göstərilən ifadə (şək. 1);

    struktur_sahə_adı- struktur şablonundan sahə adı.

    Bu, əslində, həm də bir ünvandır, daha doğrusu, strukturun əvvəlindən sahənin ofsetidir.

Belə ki, operator " . " (nöqtə) ifadəsini qiymətləndirir

düyü. 5. Struktur sahəsinə giriş operatorunda ünvan ifadəsinin sintaksisi

Müəyyən etdiyimiz strukturun nümunəsində nümayiş etdirək işçi strukturlarla işləmək üçün bəzi texnikalar.

Məsələn, çıxarın balta yaşla birlikdə sahə dəyərləri. Bu xarakter sahəsinin məzmununu reyestrdə yerləşdirdikdən sonra əmək qabiliyyətli şəxsin yaşının 99 ildən çox olması ehtimalı az olduğundan baltaəmri ilə onu binar təsvirə çevirmək rahat olacaq aad.

Ehtiyatlı olun, çünki məlumatların saxlanması prinsipinə görə “aşağı ünvanda aşağı bayt” yaşın ən yüksək rəqəmi yerləşdiriləcək al, və ən gənci Ah.

Bunu düzəltmək üçün sadəcə əmrdən istifadə edin xchg al,ah:

mov ax,söz ptr sotr1.yaş ;at al yaş sotr1

və bu belə mümkündür:

Bir sıra strukturlarla sonrakı iş bir ölçülü massivlə eyni şəkildə həyata keçirilir. Burada bir neçə sual yaranır:

Ölçü ilə necə məşğul olmaq və massiv elementlərinin indeksləşdirilməsini necə təşkil etmək olar?

Proqramda müəyyən edilmiş digər identifikatorlar kimi, tərcüməçi struktur tipinin adını və struktur tipinə tip atributu ilə dəyişənin adını təyin edir. Bu atributun dəyəri bu strukturun sahələrinin tutduğu baytların ölçüsüdür. Bu dəyəri operatordan istifadə edərək çıxara bilərsiniz növü.

Struktur nümunəsinin ölçüsü məlum olduqdan sonra bir sıra strukturlarda indeksləşdirməni təşkil etmək o qədər də çətin deyil.

Məsələn:

Sahəni bir strukturdan digər strukturun müvafiq sahəsinə necə köçürmək olar? Və ya bütün quruluşu necə kopyalamaq olar? Gəlin sahəni kopyalayaq nam sahədə üçüncü işçi nam beşinci işçi:

mas_sotr işçisi 10 dup()

mov bx,ofset mas_sotr

mov si,(tip işçi)*2 ;si=77*2

mov di,(tip işçi)*4 ;si=77*4

Mənə elə gəlir ki, proqramçının sənəti gec-tez insanı yaxşı ev xanımı kimi göstərir. O, onun kimi, daim nəyisə harada saxlamaq, kəsmək və minimum yeməkdən gözəl bir şam yeməyi hazırlamaq axtarışındadır. Və əgər bu müvəffəq olarsa, mənəvi məmnunluq evdar qadında gözəl bir şam yeməyindən heç də az deyil, bəlkə də çox deyil. Bu məmnunluğun dərəcəsi, mənə elə gəlir ki, insanın öz peşəsinə olan sevgisinin dərəcəsindən asılıdır.

Digər tərəfdən, proqram təminatı və texniki vasitələrin inkişafındakı irəliləyiş proqramçını bir qədər rahatlaşdırır və çox vaxt milçək və fil haqqında məşhur atalar sözünə bənzər bir vəziyyət yaranır - bəzi kiçik problemi həll etmək üçün ağır çəkili alətlər cəlb edilir ki, onun effektivliyi, ümumi halda, yalnız nisbətən böyük layihələrin həyata keçirilməsi zamanı əhəmiyyətlidir.

Aşağıdakı iki növ məlumatın dilində olması, ehtimal ki, "sahibkarın" yemək hazırlayarkən və ya məhsulları yerləşdirərkən (proqram məlumatları) masanın iş sahəsindən (RAM) mümkün qədər səmərəli istifadə etmək istəyi ilə əlaqədardır. ).

Məqsədinə görə, əmrləri ayırd etmək olar (mötərizədə IBM PC kimi bir PC assemblerinin əmrlərinin mnemonik əməliyyat kodlarının nümunələri verilmişdir):

l arifmetik əməliyyatları yerinə yetirir (ADD və ADC - daşıma ilə əlavə et və əlavə et, SUB və SBB - borcla çıx və çıx, MUL və IMUL - işarəsiz və işarəli vurma, DIV və IDIV - imzasız və imzalanmış bölmələr, CMP - müqayisələr və s.) ;

l məntiqi əməliyyatların yerinə yetirilməsi (OR, AND, NOT, XOR, TEST və s.);

l məlumat ötürülməsi (MOV - göndərmək, XCHG - mübadilə, IN - mikroprosessora daxil olmaq, OUT - mikroprosessordan çıxarmaq və s.);

l idarəetmənin ötürülməsi (proqram filialları: JMP - şərtsiz filial, CALL - prosedur çağırışı, RET - prosedurdan qayıdış, J* - şərti budaq, LOOP - dövrə nəzarəti və s.);

l simvol sətirlərinin işlənməsi (MOVS - köçürmələr, CMPS - müqayisələr, LODS - yükləmələr, SCAS - skanlar. Bu əmrlər adətən prefiks (təkrar dəyişdiricisi) REP ilə istifadə olunur;

l proqramın kəsilməsi (INT - proqram təminatının kəsilməsi, INTO - daşqın zamanı şərti kəsilmələr, IRET - kəsilmədən qayıdış);

l mikroprosessor nəzarəti (ST* və CL* - bayraqları təyin edin və təmizləyin, HLT - dayandırın, WAIT - gözləmə rejimi, NOP - boş və s.).

İLƏ tam siyahı assembler əmrlərinə əsərlərdə rast gəlmək olar.

Məlumat ötürmə əmrləri

l MOV dst, src - məlumat ötürülməsi (hərəkət - src-dən dst-ə keçin).

Transferlər: registrlər arasında və ya registr ilə yaddaş arasında bir bayt (əgər src və dst bayt formatındadırsa) və ya bir söz (əgər src və dst söz formatındadırsa) və registr və ya yaddaşa dərhal qiymət yazır.

dst və src operandları eyni formatda olmalıdır - bayt və ya söz.

Src tipli ola bilər: r (registr) - registr, m (yaddaş) - yaddaş, i (impedans) - dərhal qiymət. Dst r, m tipli ola bilər. Operandlar bir komandada istifadə edilə bilməz: i ilə birlikdə rsegm; m tipli iki operand və rsegm tipli iki operand). Operand i də sadə ifadə ola bilər:

mov AX, (152 + 101B) / 15

İfadə qiymətləndirməsi yalnız tərcümə zamanı həyata keçirilir. Bayraqlar dəyişmir.

l PUSH src - yığına söz qoymaq (push - itələmək; src-dən yığına itələyin). src məzmununu yığının yuxarı hissəsinə itələyir - istənilən 16 bitlik registr (seqment daxil olmaqla) və ya 16 bitlik sözdən ibarət iki yaddaş yeri. Bayraqlar dəyişmir;

l POP dst - yığından sözün çıxarılması (pop - pop; dst-də yığından sayın). Yığmanın yuxarı hissəsindən sözü silir və onu dst-də - istənilən 16 bitlik registrdə (seqment daxil olmaqla) və ya iki yaddaş yerində yerləşdirir. Bayraqlar dəyişmir.

Maşın təlimatları səviyyəsində proqramlaşdırma proqramlaşdırmanın mümkün olduğu minimum səviyyədir. Maşın təlimatları sistemi kompüterin avadanlıqlarına göstərişlər verməklə tələb olunan hərəkətləri həyata keçirmək üçün kifayət olmalıdır.

Hər bir maşın təlimatı iki hissədən ibarətdir:

  • əməliyyat otağı - "nə edəcəyini" müəyyən etmək;
  • operand - emal obyektlərinin müəyyən edilməsi, "nə etməli".

Mikroprosessorun montaj dilində yazılmış maşın təlimatı aşağıdakı sintaktik formaya malik tək sətirdir:

etiket əmri/direktivi operand(lar) ;şərhlər

Bu halda, sətirdəki məcburi sahə əmr və ya direktivdir.

Etiket, əmr/direktiv və operandlar (əgər varsa) ən azı bir boşluq və ya nişan simvolu ilə ayrılır.

Əgər əmr və ya direktivi növbəti sətirdə davam etdirmək lazımdırsa, əks slash işarəsi istifadə olunur: \.

Varsayılan olaraq, montaj dili əmrlərdə və ya direktivlərdə böyük və kiçik hərflər arasında fərq qoymur.

Kod sətirlərinin nümunəsi:

Countdb 1 ;Ad, direktiv, bir operand
hərəkət eax, 0 ;Əmr, iki operand
cbw; Komanda

Teqlər

Etiket montaj dilində aşağıdakı simvollar ola bilər:

  • latın əlifbasının bütün hərfləri;
  • 0-dan 9-a qədər rəqəmlər;
  • xüsusi simvollar: _, @, $, ?.

Nöqtə etiketin ilk simvolu kimi istifadə edilə bilər, lakin bəzi tərtibçilər bu simvoldan çəkinirlər. Qorunan montaj dili adları (direktivlər, operatorlar, komanda adları) etiket kimi istifadə edilə bilməz.

Etiketdəki ilk simvol hərf və ya xüsusi simvol (rəqəm deyil) olmalıdır. Maksimum etiket uzunluğu 31 simvoldur. Assembler direktivi olmayan sətirdə yazılan bütün etiketlər iki nöqtə ilə bitməlidir: .

Komandalar

Komanda mikroprosessorun hansı hərəkəti yerinə yetirməli olduğunu tərcüməçiyə bildirir. Məlumat seqmentində əmr (və ya direktiv) sahəni, iş sahəsini və ya sabiti müəyyən edir. Kod seqmentində göstəriş hərəkət (mov) və ya əlavə (əlavə) kimi hərəkəti müəyyən edir.

direktivlər

Assembler siyahının yığılması və yaradılması prosesini idarə etməyə imkan verən bir sıra operatorlara malikdir. Bu operatorlar adlanır direktivlər . Onlar yalnız proqramın yığılması prosesində hərəkət edirlər və təlimatlardan fərqli olaraq maşın kodları yaratmırlar.

operandlar

Operand – maşın əmrinin və ya proqramlaşdırma dili operatorunun icra olunduğu obyekt.
Təlimatda bir və ya iki operand ola bilər və ya ümumiyyətlə heç bir operand yoxdur. Operandların sayı birbaşa olaraq təlimat kodu ilə müəyyən edilir.
Nümunələr:

  • Operand yoxdur ;Qayıt
  • Bir operand inc ecx ;Exx artır
  • İki operand eax,12 əlavə edir;eax-a 12 əlavə edin

Etiket, əmr (direktiv) və operand sətirdə hər hansı müəyyən mövqedən başlamalı deyil. Bununla belə, proqramın daha çox oxunaqlı olması üçün onları bir sütunda yazmaq tövsiyə olunur.

Operandlar ola bilər

  • identifikatorlar;
  • tək və ya ikiqat dırnaq içərisində olan simvol sətirləri;
  • ikilik, səkkizlik, onluq və ya onaltılıq sistemdə tam ədədlər.
İdentifikatorlar

İdentifikatorlar – əməliyyat kodları, dəyişən adları və etiket adları kimi proqram obyektlərini təyin etmək üçün istifadə olunan etibarlı simvolların ardıcıllığı.

İdentifikatorların yazılması qaydaları.

  • İdentifikator bir və ya bir neçə simvol ola bilər.
  • Simvol kimi siz Latın əlifbasının hərflərindən, rəqəmlərdən və bəzi xüsusi simvollardan istifadə edə bilərsiniz: _, ?, $, @.
  • İdentifikator rəqəm simvolu ilə başlaya bilməz.
  • ID-nin uzunluğu 255 simvola qədər ola bilər.
  • Tərcüməçi identifikatorun ilk 32 simvolunu qəbul edir və qalanlarına məhəl qoymur.
Şərhlər

Şərhlər icra olunan sətirdən simvolla ayrılır; . Bu zaman nöqtəli vergüldən sonra və sətrin sonuna qədər yazılan hər şey şərhdir. Proqramda şərhlərin istifadəsi onun aydınlığını artırır, xüsusən də təlimatlar toplusunun məqsədi aydın olmayan yerlərdə. Şərhdə boşluqlar daxil olmaqla istənilən çap edilə bilən simvol ola bilər. Şərh bütün sətri əhatə edə bilər və ya eyni sətirdəki əmrə əməl edə bilər.

Montaj proqram strukturu

Assembly dilində yazılmış proqram adlanan bir neçə hissədən ibarət ola bilər modullar . Hər bir modul bir və ya daha çox məlumat, yığın və kod seqmentini müəyyən edə bilər. İstənilən tam assembler dili proqramı onun icrasına başlanılan bir əsas və ya əsas modulu ehtiva etməlidir. Modulda müvafiq direktivlərlə elan edilmiş kod, verilənlər və stek seqmentləri ola bilər. Seqmentləri elan etməzdən əvvəl siz .MODEL direktivindən istifadə edərək yaddaş modelini təyin etməlisiniz.

Assembly dilində "heç nə etməmək" proqramının nümunəsi:

686P
.MODEL YAPILI, STDCALL
.MƏLUMAT
.KOD
BAŞLAMAQ:

RET
SON BAŞLAYIN

Bu proqramda yalnız bir mikroprosessor təlimatı var. Bu əmr RET-dir. Proqramın düzgün şəkildə dayandırılmasını təmin edir. Ümumiyyətlə, bu əmr prosedurdan çıxmaq üçün istifadə olunur.
Proqramın qalan hissəsi tərcüməçinin işləməsi ilə bağlıdır.
.686P - Pentium 6 (Pentium II) qorunan rejim əmrlərinə icazə verilir. Bu direktiv prosessor modelini təyin etməklə dəstəklənən assembler təlimat dəstini seçir. Direktivin sonundakı P hərfi tərcüməçiyə prosessorun qorunan rejimdə işlədiyini bildirir.
.MODEL FLAT, stdcall düz yaddaş modelidir. Bu yaddaş modeli istifadə olunur əməliyyat sistemi Windows. stdcall
.DATA verilənlərdən ibarət proqram seqmentidir.
.CODE kodu ehtiva edən proqram blokudur.
START bir etiketdir. Assemblerdə etiketlər böyük rol oynayır, bunu müasir yüksək səviyyəli dillər haqqında demək olmaz.
END START - proqramın sonu və tərcüməçiyə proqramın START etiketindən başlamalı olduğu barədə mesaj.
Hər bir modulda proqramın mənbə kodunun sonunu qeyd edən END direktivi olmalıdır. END direktivinə əməl edən bütün sətirlər nəzərə alınmır. END direktivinin buraxılması xəta yaradır.
END direktivindən sonrakı etiket kompilyatora proqramın icrasının başladığı əsas modulun adını bildirir. Proqramda bir modul varsa, END direktivindən sonrakı etiket buraxıla bilər.




Üst