Montāžas valodas instrukciju struktūra satur. Komandu struktūra montāžas valodas programmēšanā līmenī. Montāžas valodas datu formāts un komandu struktūra

Montāžas valodas komandas (lekcija)

LEKCIJAS PLĀNS

1. Galvenās operāciju grupas.

Pentium.

1. Galvenās operāciju grupas

Mikroprocesori izpilda instrukciju kopu, kas īsteno šādas galvenās darbību grupas:

ekspedīcijas operācijas,

aritmētiskās darbības,

loģiskās operācijas,

maiņu operācijas,

salīdzināšanas un pārbaudes operācijas,

bitu operācijas,

Programmas vadības operācijas;

Procesora vadības darbības.

2. Procesora komandu mnemokodi Pentium

Aprakstot komandas, parasti tiek izmantoti to mnemoniskie apzīmējumi (mnemoniskie kodi), kas kalpo komandas precizēšanai, programmējot Assembly valodā. Dažādām Assembler versijām dažu komandu mnemoniskie kodi var atšķirties. Piemēram, komandai, lai izsauktu apakšprogrammu, tiek izmantots mnemoniskais kodsZVANIET vai JSR ("Pāriet uz apakšprogramma”). Tomēr lielāko daļu komandu mnemoniskie kodi galvenajiem mikroprocesoru tipiem ir vienādi vai nedaudz atšķiras, jo tie ir atbilstošo angļu valodas vārdu saīsinājumi, kas definē veicamo darbību. Apsveriet procesoriem pieņemto komandu mnemoniku Pentium.

Pārsūtīt komandas. Šīs grupas galvenā komanda ir komandaMOV , kas nodrošina datu pārsūtīšanu starp diviem reģistriem vai starp reģistru un atmiņas šūnu. Daži mikroprocesori realizē pārsūtīšanu starp divām atmiņas šūnām, kā arī vairāku reģistru satura grupu pārsūtīšanu no atmiņas. Piemēram, 68 saimes mikroprocesori Motorola xxx izpildīt komanduKUSTĒTIES , kas nodrošina pārsūtīšanu no vienas atmiņas šūnas uz otru, un komanduMOVEM , kas ieraksta atmiņā vai ielādē no atmiņas noteiktā reģistru kopas saturu (līdz 16 reģistriem). KomandaXCHG veic divu procesora reģistru vai reģistra un atmiņas šūnas satura savstarpēju apmaiņu.

Ievades komandas IN un izvadi ĀRĀ īstenot datu pārsūtīšanu no apstrādātāja reģistra uz ārēju ierīci vai datu saņemšanu no ārējās ierīces uz reģistru. Šīs komandas norāda interfeisa ierīces (I/O porta) numuru, caur kuru tiek pārsūtīti dati. Ņemiet vērā, ka daudziem mikroprocesoriem nav īpašu komandu piekļuvei ārējām ierīcēm. Šajā gadījumā datu ievade un izvade sistēmā tiek veikta, izmantojot komanduMOV , kas norāda vajadzīgās interfeisa ierīces adresi. Tādējādi ārēja ierīce tiek adresēta kā atmiņas šūna, un adrešu telpā tiek iedalīta noteikta sadaļa, kurā atrodas sistēmai pievienoto interfeisa ierīču (portu) adreses.

Aritmētisko darbību komandas. Galvenās komandas šajā grupā ir saskaitīšana, atņemšana, reizināšana un dalīšana, kurām ir vairākas iespējas. Papildināšanas komandas PIEVIENOT un atņemšana SUB veikt atbilstošas ​​darbības arckam ir divi reģistri, reģistrs un atmiņas vieta, vai izmantojot tūlītēju operandu. Komandas AD C , SB B veikt saskaitīšanu un atņemšanu, ņemot vērā atribūta vērtībuC, kas iestatīts pārsūtīšanas veidošanas laikā iepriekšējās darbības veikšanas procesā. Ar šo komandu palīdzību tiek realizēta secīga operandu pievienošana, kuru ciparu skaits pārsniedz procesora jaudu. Komanda NEG maina operanda zīmi, pārvēršot to divu komplementā.

Reizināšanas un dalīšanas darbības var veikt ar skaitļiem ar zīmi (komandāmes MUL, es DIV ) vai neparakstīts (komandas MUL, DIV ). Operācijas rezultāts atrodas reģistrā. Reizinot (komandasMUL , IMUL ) iegūst divciparu rezultātu, kas izmanto divus reģistrus, lai pielāgotos. Sadalot (komandasDIV , IDIV ) kā dividende tiek izmantots divciparu operands, kas ievietots divos reģistros, un rezultātā koeficients un atlikums tiek ierakstīti divos reģistros.

Loģiskās komandas . Gandrīz visi mikroprocesori veic loģiskas darbības UN, VAI, Exclusive VAI, kuras tiek veiktas ar tāda paša nosaukuma operanda bitiem, izmantojot komandas UN, VAI, X VAI . Darbības tiek veiktas ar divu reģistru saturu, reģistru un atmiņas vietu, vai izmantojot tūlītēju operandu. Komanda NAV Apgriež katra operanda bita vērtību.

Shift komandas. Mikroprocesori veic adresēto operandu aritmētiskās, loģiskās un cikliskās nobīdes par vienu vai vairākiem bitiem. Pārvietojamais operands var atrasties reģistrā vai atmiņas vietā, un nobīdes bitu skaits tiek norādīts, izmantojot instrukcijā ietverto tūlītējo operandu, vai arī nosaka norādītā reģistra saturs. Pārsūtīšanas zīme parasti tiek iesaistīta maiņas īstenošanāCstatusa reģistrā (SR vai KAROGI), kas satur operanda pēdējo bitu, kas tiek izņemts no reģistra vai atmiņas vietas.

Salīdzināšanas un testēšanas komandas . Operandu salīdzināšana parasti tiek veikta ar komanduCMP , kas veic operandu atņemšanu ar pazīmju vērtību iestatīšanu N, Z, V, C statusu reģistrā atbilstoši rezultātam. Šajā gadījumā atņemšanas rezultāts netiek saglabāts, un operandu vērtības nemainās. Turpmākā iegūto raksturīgo vērtību analīze ļauj noteikt relatīvo vērtību (>,<, =) операндов со знаком или без знака. Использование различных способов адресации позволяет производит сравнение содержимого двух регистров, регистра и ячейки памяти, непосредственно заданного операнда с содержимым регистра или ячейки памяти.

Daži mikroprocesori izpilda testa komandu TST , kas ir salīdzināšanas instrukcijas viena operanda variants. Kad šī komanda tiek izpildīta, tiek iestatītas zīmes N, Z atbilstoši adresētā operanda zīmei un vērtībai (vienāda vai nulle).

Bitu darbības instrukcijas . Šīs komandas nosaka atribūta vērtībuCstatusa reģistrā atbilstoši pārbaudāmā bita vērtībaimiljardus adresētajā operandā. Dažos mikroprocesoros saskaņā ar testēšanas rezultātu tiek iestatīta zīmeZ. Testa bita numursntiek iestatīts vai nu pēc komandā norādītā reģistra satura, vai ar tūlītēju operandu.

Šīs grupas komandas ievieš dažādas opcijas pārbaudītā bita maiņai.Komanda BT saglabā šī bita vērtību nemainīgu.Komanda B T S pēc pārbaudes nosaka vērtību miljardus=1, un komanda B T C - nozīme miljardus=0.Komanda B T C apgriež bita bn vērtību pēc tā pārbaudes.

Programmas vadības operācijas. Lai kontrolētu programmu, tiek izmantots liels skaits komandu, tostarp:

- beznosacījuma vadības pārsūtīšanas komandas;

- nosacījuma lēciena komandas;

- komandas programmu ciklu organizēšanai;

- pārtraukt komandas;

- funkciju maiņas komandas.

Beznosacījumu vadības nodošana tiek veikta ar komanduJMP , kas tiek ielādēts programmu skaitītājāPCjauns saturs, kas ir nākamās izpildāmās komandas adrese. Šī adrese ir tieši norādīta komandāJMP (tiešā adrese) vai aprēķināta kā pašreizējā satura summaPCun komandā norādītā nobīde, kas ir parakstīts skaitlis (relatīvā adresācija). JoPCsatur programmas nākamās komandas adresi, tad pēdējā metode iestata pārejas adresi, nobīdi attiecībā pret nākamo adresi par noteiktu baitu skaitu. Ja nobīde ir pozitīva, tiek veikta pāreja uz nākamajām programmas komandām, ja nobīde ir negatīva, uz iepriekšējām.

Apakšprogramma tiek izsaukta arī ar beznosacījuma vadības nodošanu, izmantojot komanduZVANIET (vai JSR ). Tomēr šajā gadījumā pirms iekraušanasPC jauns saturs, kas norāda apakšprogrammas pirmās instrukcijas adresi, ir jāsaglabā tā pašreizējā vērtība (nākamās instrukcijas adrese), lai nodrošinātu atgriešanos galvenajā programmā pēc apakšprogrammas izpildes (vai uz iepriekšējā apakšprogramma, ligzdojot apakšprogrammas). Nosacītā lēciena instrukcijas (programmas zari) tiek ielādētasPCjauns saturs, ja ir izpildīti noteikti nosacījumi, kas parasti tiek iestatīti atbilstoši dažādu atribūtu aktuālajai vērtībai statusa reģistrā. Ja nosacījums nav izpildīts, tiek izpildīta nākamā programmas komanda.

Iezīmju pārvaldības komandas nodrošina rakstīšanu - statusa reģistra satura nolasīšanu, kurā tiek saglabātas pazīmes, kā arī atsevišķu pazīmju vērtību mainīšanu. Piemēram, Pentium procesori ievieš komandas LAHF Un SAHF , kas ielādē zemo baitu, kurā ir zīmes, no statusa reģistra EFLAG uz zemu reģistra baitu EAX un polsterējums zems baits KAROGI no reģistra E AX.. Komandas CLC, STC iestatiet pārsūtīšanas karoga CF=0, CF=1 un komandas vērtības CMC izraisa šīs funkcijas vērtības apvērsumu. Tā kā iezīmes nosaka programmas izpildes plūsmu nosacījumu lēcienu laikā, programmas vadīšanai parasti tiek izmantotas pazīmju maiņas instrukcijas.

Procesora vadības komandas . Šajā grupā ietilpst apturēšanas komandas, bez darbības un vairākas komandas, kas nosaka procesora vai tā atsevišķu bloku darbības režīmu. KomandaHLT pārtrauc programmas izpildi un novieto procesoru apturēšanas stāvoklī, no kura iziet, saņemot pārtraukuma vai restartēšanas signālus ( atiestatīt). Komanda NOP Programmas aizkaves ieviešanai vai programmā izveidoto robu aizpildīšanai tiek izmantota (“tukša” instrukcija), kas neizraisa nekādas darbības.

Īpašas komandas CLI, STI atspējot un iespējot pārtraukšanas pieprasījumu pakalpojumu. Procesoros Pentium tam tiek izmantots kontroles bits (karogs).JA reģistrā KAROGI.

Daudzi mūsdienu mikroprocesori izdod identifikācijas komandu, kas ļauj lietotājam vai citām ierīcēm iegūt informāciju par konkrētajā sistēmā izmantotā procesora veidu. Procesoros Pentuimšim nolūkam komanda ir paredzēta CPUID , kuras laikā reģistros nonāk nepieciešamie dati par apstrādātāju EAX,ebx,ECX,EDX un pēc tam to var lasīt lietotājs vai operētājsistēma.

Atkarībā no procesora ieviestajiem darbības režīmiem un norādītajiem apstrādāto datu veidiem izpildāmo komandu kopa var tikt ievērojami paplašināta.

Daži procesori, apstrādājot šādus skaitļus, veic BCD aritmētiskās darbības vai veic īpašas rezultātu korekcijas instrukcijas. Ir iekļauti daudzi augstas veiktspējas procesori FPU - numuru apstrādes iekārta c "peldošais punkts".

Vairākos modernos procesoros tiek īstenota vairāku veselu skaitļu vai skaitļu grupu apstrāde. c “peldošais punkts” ar vienu komandu saskaņā ar principu SIMD (“Viena instrukcija — vairāki dati ”) - “Viena komanda — daudz datu”. Vienlaicīga vairāku operandu darbību izpilde ievērojami palielina procesora veiktspēju, strādājot ar video un audio datiem. Šādas darbības tiek plaši izmantotas attēlu apstrādē, audio signālu apstrādē un citās lietojumprogrammās. Lai veiktu šīs darbības, procesoros tiek ieviesti speciāli bloki, kas realizē atbilstošās instrukciju kopas, kuras dažāda veida procesoros ( Pentium, Atlons) ieguva nosaukumuMMX (“ Milti- Multivides paplašinājums ”) — multivides paplašinājums,SSE(“ Straumēšanas SIMD paplašinājums ”) — SIMD straumēšana - pagarinājums, “3 DPagarinājums- 3D paplašināšana.

Uzņēmuma pārstrādātājiem raksturīga iezīme Intel , sākot ar modeli 80286, ir prioritātes kontrole piekļūstot atmiņai, kas tiek nodrošināta, procesoram darbojoties aizsargātās virtuālās adreses režīmā - “ Aizsargātais režīms ” (aizsargāts režīms). Šī režīma ieviešanai tiek izmantotas īpašas komandu grupas, kas kalpo atmiņas aizsardzības organizēšanai saskaņā ar pieņemto prioritārās piekļuves algoritmu.

Montāžas valodas instrukciju struktūra Programmēšana mašīnas instrukciju līmenī ir minimālais līmenis, kurā ir iespējama datorprogrammēšana. Mašīnas instrukciju sistēmai jābūt pietiekamai, lai veiktu nepieciešamās darbības, izdodot instrukcijas mašīnas aparatūrai. Katra mašīnas instrukcija sastāv no divām daļām: darbības daļas, kas definē “ko darīt”, un operanda, kas definē apstrādes objektus, tas ir, “ko darīt”. Mikroprocesora mašīnas instrukcija, kas rakstīta montāžas valodā, ir viena rinda, kuras forma ir šāda: etiķetes instrukcija/direktīvas operands(-i); komentāri Iezīme, komanda/direktīva un operands ir atdalīti ar vismaz vienu atstarpi vai tabulēšanas rakstzīmi. Instrukciju operandi ir atdalīti ar komatiem.

Montāžas valodas instrukcijas struktūra Asamblejas valodas instrukcija norāda kompilatoram, kāda darbība jāveic mikroprocesoram. Montāžas direktīvas ir programmas tekstā norādītie parametri, kas ietekmē montāžas procesu vai izvades faila īpašības. Operands norāda datu sākotnējo vērtību (datu segmentā) vai elementus, uz kuriem jādarbojas ar instrukciju (koda segmentā). Instrukcijā var būt viens vai divi operandi vai bez operandiem. Operandu skaitu netieši norāda instrukcijas kods. Ja komanda vai direktīva jāturpina nākamajā rindā, tad tiek izmantota atpakaļvērstā slīpsvītra: "" . Pēc noklusējuma montētājs komandās un direktīvās neatšķir lielos un mazos burtus. Direktīvu un komandu piemēri Skaits db 1 ; Nosaukums, direktīva, viens operands mov eax, 0 ; Komanda, divi operandi

Identifikatori ir derīgu rakstzīmju secības, ko izmanto, lai apzīmētu mainīgo nosaukumus un etiķešu nosaukumus. Identifikators var sastāvēt no vienas vai vairākām no šādām rakstzīmēm: visi latīņu alfabēta burti; skaitļi no 0 līdz 9; īpašās rakstzīmes: _, @, $, ? . Punktu var izmantot kā etiķetes pirmo rakstzīmi. Rezervētos montētāju nosaukumus (direktīvas, operatorus, komandu nosaukumus) nevar izmantot kā identifikatorus. Identifikatora pirmajai rakstzīmei jābūt burtam vai īpašai rakstzīmei. Maksimālais garums identifikators 255 rakstzīmes, bet tulks akceptē pirmās 32, pārējās tiek ignorētas. Visām etiķetēm, kas ir rakstītas uz rindas, kurā nav ietverta montāžas direktīva, jābeidzas ar kolu ":". Etiķetei, komandai (direktīvai) un operandam nav jāsākas nevienā noteiktā virknes pozīcijā. Ieteicams tos rakstīt kolonnā, lai nodrošinātu labāku programmas lasāmību.

Etiķetes Visām etiķetēm, kas ir rakstītas rindā, kurā nav montētāja direktīvas, jābeidzas ar kolu ":". Etiķetei, komandai (direktīvai) un operandam nav jāsākas nevienā noteiktā virknes pozīcijā. Ieteicams tos rakstīt kolonnā, lai nodrošinātu labāku programmas lasāmību.

Komentāri Komentāru izmantošana programmā uzlabo tās skaidrību, īpaši, ja instrukciju kopas mērķis ir neskaidrs. Komentāri sākas jebkurā avota moduļa rindiņā ar semikolu (;). Visas rakstzīmes pa labi no "; ' līdz rindas beigām ir komentāri. Komentārā var būt jebkuras drukājamas rakstzīmes, tostarp "atstarpe". Komentārs var aptvert visu rindiņu vai sekot komandai tajā pašā rindā.

Asamblejas valodas programmas struktūra Montāžas valodas programma var sastāvēt no vairākām daļām, ko sauc par moduļiem, no kuriem katrs var definēt vienu vai vairākus datu, steku un koda segmentus. Jebkurai pilnīgai montāžas valodas programmai ir jāietver viens galvenais vai galvenais modulis, no kura sākas tās izpilde. Modulī var būt programmas, datu un steka segmenti, kas deklarēti ar atbilstošām direktīvām.

Atmiņas modeļi Pirms segmentu deklarēšanas ir jānorāda atmiņas modelis, izmantojot direktīvu. MODEL modifikators atmiņas_modelis, izsaukšanas_konvencija, OS_tips, skursteņa_parametrs Pamata montāžas valodas atmiņas modeļi: Atmiņas modelis Koda adresēšana Datu adresēšana Operētājsistēma Koda un datu savstarpēja pārklāšana TINY MS-DOS Derīgs MAZS TUVUMĀ MS-DOS, Windows Nē VIDĒJI TĀLU MS-DOS, Windows Nē KOMPAKTS TUVU TĀLU MS-DOS, Windows Nē LIELU TĀLU MS-DOS, Windows Nē MILZĪGI TĀLU MS-DOS, Windows NĒ TUVUMĀ Windows 2000, Windows XP, Windows Derīgs FLAT NEAR NT,

Atmiņas modeļi Mazais modelis darbojas tikai 16 bitu MS-DOS lietojumprogrammās. Šajā modelī visi dati un kods atrodas vienā fiziskajā segmentā. Programmas faila lielums šajā gadījumā nepārsniedz 64 KB. Mazais modelis atbalsta vienu koda segmentu un vienu datu segmentu. Dati un kods, izmantojot šo modeli, tiek adresēti kā tuvu (tuvu). Vides modelis atbalsta vairākus koda segmentus un vienu datu segmentu, un visas saites koda segmentos pēc noklusējuma tiek uzskatītas par tālu (tālu), un saites datu segmentā tiek uzskatītas par tuvu (tuvu). Kompaktais modelis atbalsta vairākus datu segmentus, kas izmanto tālu datu adresēšanu (tālu) un vienu koda segmentu, kas izmanto tuvu datu adresēšanu (tuvu). Lielais modelis atbalsta vairākus koda segmentus un vairākus datu segmentus. Pēc noklusējuma visas kodu un datu atsauces tiek uzskatītas par tālu. Milzīgais modelis ir gandrīz līdzvērtīgs lielas atmiņas modelim.

Atmiņas modeļi Plakanajam modelim ir ne-segmentēta programmas konfigurācija, un to izmanto tikai 32 bitu operētājsistēmās. Šis modelis ir līdzīgs mazajam modelim, jo ​​dati un kods atrodas tajā pašā 32 bitu segmentā. Pirms direktīvas izstrādāt programmu plakanajam modelim. paraugdzīvoklī jāievieto viena no direktīvām: . 386, . 486, . 586 vai. 686. Procesora izvēles direktīvas izvēle nosaka komandu kopu, kas pieejama, rakstot programmas. Burts p pēc procesora izvēles direktīvas nozīmē aizsargātu darbības režīmu. Datu un kodu adresēšana ir tuvu, un visas adreses un norādes ir 32 bitu.

atmiņas modeļi. MODEL modifikators memory_model, calling_convention, OS_type, steck_parameter Modifikatora parametrs tiek izmantots, lai definētu segmentu tipus, un tam var būt šādas vērtības: use 16 (izvēlētā modeļa segmenti tiek izmantoti kā 16 biti) use 32 (tiek izmantoti atlasītā modeļa segmenti kā 32 bitu). Parametrs calling_convention tiek izmantots, lai noteiktu, kā parametri tiek nodoti, izsaucot procedūru no citām valodām, tostarp augsta līmeņa valodām (C++, Pascal). Parametram var būt šādas vērtības: C, BASIC, FORTRAN, PASCAL, SYSCALL, STDCALL.

atmiņas modeļi. MODEL modifikators memory_model, calling_convention, OS_type, stack_parameter Parametrs OS_type pēc noklusējuma ir OS_DOS, un pašlaik tā ir vienīgā atbalstītā šī parametra vērtība. Parametrs stack_param ir iestatīts uz: NEARSTACK (SS reģistrs ir vienāds ar DS, dati un steka reģioni atrodas vienā fiziskajā segmentā) FARSTACK (SS reģistrs nav vienāds ar DS, dati un steka reģioni atrodas dažādos fiziskajos segmentos). Noklusējums ir NEARSTACK.

Programmas "neko nedarīšanas" piemērs. 686 P. MODELIS DZĪVOKLIS, STDCALL. DATI. CODE START: RET END START RET - mikroprocesora komanda. Tas nodrošina pareizu programmas pārtraukšanu. Pārējā programmas daļa ir saistīta ar tulka darbību. . 686 P — Pentium 6 (Pentium II) aizsargātā režīma komandas ir atļautas. Šī direktīva atlasa atbalstīto montētāja instrukciju kopu, norādot procesora modeli. . MODEL FLAT, stdcall - plakanas atmiņas modelis. Šis atmiņas modelis tiek izmantots operāciju zālē Windows sistēma. stdcall ir procedūra, kas izmanto izsaukšanas konvenciju.

Programmas "neko nedarīšanas" piemērs. 686 P. MODELIS DZĪVOKLIS, STDCALL. DATI. CODE START: RET END START . DATA - programmas segments, kas satur datus. Šī programma neizmanto steku, tāpēc segmentējiet. Trūkst STACK. . KODS - programmas segments, kas satur kodu. START - etiķete. END START - programmas beigas un ziņojums kompilatoram, ka programma jāsāk no etiķetes START. Katrā programmā ir jābūt END direktīvai, kas iezīmē beigas avota kods programmas. Visas rindas, kas seko direktīvai END, tiek ignorētas.Etiķete pēc direktīvas END norāda kompilatoram galvenā moduļa nosaukumu, no kura sākas programmas izpilde. Ja programmā ir viens modulis, etiķeti pēc direktīvas END var izlaist.

Montāžas valodas tulki Tulkotājs ir programma vai aparatūra, kas vienā no programmēšanas valodām prezentētu programmu pārvērš programmā mērķa valodā, ko sauc par objekta kodu. Papildus mašīnmācību mnemonikas atbalstam katram tulkotājam ir savs direktīvu un makro kopums, kas bieži vien nav saderīgs ar neko citu. Galvenie montāžas valodas tulkotāju veidi ir: MASM (Microsoft Assembler), TASM (Borland Turbo Assembler), FASM (Flat Assembler) - brīvi izplatīts daudzpakāpju montētājs, ko rakstījis Tomašs Grištars (poļu valoda), NASM (Netwide Assembler) - a. Bezmaksas montāžas programmu Intel x arhitektūrai 86 izveidoja Saimons Tehems kopā ar Džulianu Holu, un pašlaik to izstrādā neliela Source izstrādes komanda. Kalts. tīkls.

Src="https://present5.com/presentation/-29367016_63610977/image-15.jpg" alt="Programmas tulkošana programmā Microsoft Visual Studio 2005 1) Izveidojiet projektu, atlasot Fails->Jauns->Projekts izvēlne Un"> Трансляция программы в 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="Programmas tulkošana programmā Microsoft Visual Studio 2005 2) Projekta kokā (View->Solution Explorer) pievienojiet"> Трансляция программы в Microsoft Visual Studio 2005 2) В дереве проекта (View->Solution Explorer) добавить файл, в котором будет содержаться текст программы: Source. Files->Add->New. Item.!}

Programmas tulkošana programmā Microsoft Visual Studio 2005 3) Izvēlieties Code C++ faila tipu, bet norādiet nosaukumu ar paplašinājumu. asm:

Programmas tulkošana programmā Microsoft Visual Studio 2005 5) Iestatiet kompilatora opcijas. Labajā pogā projekta faila izvēlnē atlasiet Pielāgoti veidošanas noteikumi…

Programmas tulkošana programmā Microsoft Visual Studio 2005 un parādītajā logā atlasiet Microsoft Macro Assembler.

Programmas tulkojums programmā Microsoft Visual Studio 2005 Pārbaudiet ar labo pogu failā hello. projekta koka asm no izvēlnes Rekvizīti un iestatiet General-> Tool: Microsoft Macro Assembler.

Src="https://present5.com/presentation/-29367016_63610977/image-22.jpg" alt="Programmas tulkošana programmā Microsoft Visual Studio 2005 6) Kompilējiet failu, atlasot Build->Build hello.prj ."> Трансляция программы в Microsoft Visual Studio 2005 6) Откомпилировать файл, выбрав Build->Build hello. prj. 7) Запустить программу, нажав F 5 или выбрав меню Debug->Start Debugging.!}

Programmēšana operētājsistēmā Windows Programmēšana operētājsistēmā Windows balstās uz API funkciju izmantošanu (Application Program Interface, t.i., programmatūras lietojumprogrammas interfeiss). To skaits sasniedz 2000. Programma Windows lielā mērā sastāv no šādiem zvaniem. Visas mijiedarbības ar ārējās ierīces un operētājsistēmas resursi, kā likums, notiek caur šādām funkcijām. Operētājsistēmā Windows tiek izmantots plakanas atmiņas modelis. Jebkuras atmiņas vietas adresi noteiks viena 32 bitu reģistra saturs. Operētājsistēmai Windows ir 3 veidu programmu struktūras: dialogs (galvenais logs ir dialogs), konsole jeb bezlogu struktūra, klasiskā struktūra (logs, rāmis).

Zvaniet Windows funkcijas API Palīdzības failā jebkura API funkcija tiek attēlota kā tips funkcijas_nosaukums (FA 1, FA 2, FA 3) Tips – atgriešanas vērtības tips; FAX – formālo argumentu saraksts to secībā, piemēram, int Message. Kaste (HWND h. Wnd, LPCTSTR lp. Text, LPCTSTR lp. Caption, UINT u. Type); Šī funkcija parāda logu ar ziņojumu un izejas pogu(-ām). Parametru nozīme: h. Wnd - rokturis logam, kurā parādīsies ziņojuma logs, lp. Teksts - teksts, kas parādīsies logā, lp. Paraksts - teksts loga virsrakstā, u. Tips - loga tips, jo īpaši varat norādīt izejas pogu skaitu.

Windows API funkciju izsaukšana ziņojumā. Kaste (HWND h. Wnd, LPCTSTR lp. Text, LPCTSTR lp. Caption, UINT u. Type); Gandrīz visi API funkciju parametri faktiski ir 32 bitu veseli skaitļi: HWND ir 32 bitu vesels skaitlis, LPCTSTR ir 32 bitu virknes rādītājs, UINT ir 32 bitu vesels skaitlis. Sufikss "A" bieži tiek pievienots funkciju nosaukumiem, lai pārietu uz jaunākām funkciju versijām.

Windows API funkciju izsaukšana ziņojumā. Kaste (HWND h. Wnd, LPCTSTR lp. Text, LPCTSTR lp. Caption, UINT u. Type); Lietojot MASM, nosaukuma beigās jāpievieno @N N - baitu skaits, ko stekā aizņem nodotie argumenti. Win 32 API funkcijām šo skaitli var definēt kā argumentu skaitu n reiz 4 (baiti katrā argumentā): N=4*n. Lai izsauktu funkciju, tiek izmantota montētāja instrukcija CALL. Šajā gadījumā visi funkcijas argumenti tiek nodoti tai caur steku (PUSH komanda). Argumenta nodošanas virziens: NO KREISĀS UZ LABĀJĀM — APAKŠU AUGŠU. Arguments u vispirms tiks ievietots kaudzē. veids. Norādītās funkcijas izsaukšana izskatīsies šādi: CALL Message. kaste. [aizsargāts ar e-pastu]

Windows API funkciju izsaukšana ziņojumā. Kaste (HWND h. Wnd, LPCTSTR lp. Text, LPCTSTR lp. Caption, UINT u. Type); Jebkuras API funkcijas izpildes rezultāts parasti ir vesels skaitlis, kas tiek atgriezts EAX reģistrā. OFFSET direktīva ir "segmenta nobīde" vai augsta līmeņa valodas terminos "rādītājs" uz virknes sākumu. EQU direktīva, tāpat kā #define C, definē konstanti. EXTERN direktīva norāda kompilatoram, ka funkcija vai identifikators ir ārpus moduļa.

Programmas "Sveiki visiem!" piemērs. . 686 P. MODELIS DZĪVOKLIS, STDCALL. STACK 4096. DATA MB_OK EQU 0 STR 1 DB "Mana pirmā programma", 0 STR 2 DB "Sveiki visiem!", 0 HW DD ? ĀRĒJĀ ziņa. kaste. [aizsargāts ar e-pastu]: TUVUMĀ. KODA SĀKUMS: PUSH MB_OK PUSH OFFSET STR 1 PUSH OFFSET STR 2 PUSH HW CALL Ziņojums. kaste. [aizsargāts ar e-pastu] RET END START START

Direktīva INVOKE Valodas MASM tulkotājs ļauj arī vienkāršot funkcijas izsaukumu, izmantojot makro rīku - direktīvu INVOKE: INVOKE funkcija, parametrs1, parametrs2, ... Funkcijas izsaukumam nav jāpievieno @16; parametri ir uzrakstīti tieši tādā secībā, kādā tie norādīti funkcijas aprakstā. tulkotāja makro nospiež parametrus stekā. lai izmantotu direktīvu INVOKE, jums ir jābūt funkcijas prototipa aprakstam, izmantojot PROTO direktīvu šādā formā: Ziņojums. kaste. PROTO: DWORD, : DWORD

Struktūras montāžas valodā

Masīvi, kurus mēs aplūkojām iepriekš, ir tāda paša veida elementu kolekcija. Bet bieži vien lietojumprogrammās ir jāņem vērā noteikts datu kopums dažāda veida kā kaut kāds viens tips.

Tas ir ļoti aktuāli, piemēram, datu bāzes programmām, kur nepieciešams saistīt dažāda veida datu kolekciju ar vienu objektu.

Piemēram, iepriekš mēs apskatījām 4. sarakstu, kas darbojās ar trīs baitu elementu masīvu. Katrs elements, savukārt, bija divi dažāda veida elementi: viena baita skaitītāja lauks un divu baitu lauks, kas varēja pārvadāt vairāk informācijas, kas nepieciešama glabāšanai un apstrādei. Ja lasītājs pārzina kādu no augsta līmeņa valodām, tad viņš zina, ka šādu objektu parasti apraksta, izmantojot īpašu datu tipu - struktūras.

Lai uzlabotu montāžas valodas lietojamību, tajā tika ieviests arī šis datu tips.

A-prioritāte struktūra ir datu tips, kas sastāv no fiksēta skaita dažādu veidu elementu.

Lai programmā izmantotu struktūras, jums ir jāveic trīs darbības:

    Jautājiet struktūras veidne .

    Būtībā tas nozīmē jauna datu tipa definēšanu, ko vēlāk var izmantot, lai definētu šāda veida mainīgos.

    Definējiet struktūras gadījums .

    Šis posms ietver noteikta mainīgā inicializāciju ar iepriekš noteiktu (izmantojot veidni) struktūru.

    Organizēt piekļūt struktūras locekļiem .

Ir ļoti svarīgi, lai jūs jau pašā sākumā saprastu, kāda ir atšķirība apraksts struktūras programmā un tās definīcija.

aprakstīt struktūra programmā nozīmē tikai norādīt tās shēmu vai modeli; atmiņa nav piešķirta.

Šo veidni var uzskatīt tikai par informāciju tulkotājam par lauku atrašanās vietu un to noklusējuma vērtību.

Definējiet struktūra nozīmē uzdot tulkotājam piešķirt atmiņu un piešķirt šim atmiņas apgabalam simbolisku nosaukumu.

Struktūru programmā var aprakstīt tikai vienu reizi un definēt to neierobežotu skaitu reižu.

Struktūras veidnes apraksts

Struktūras veidnes deklarācijai ir šāda sintakse:

struktūras_nosaukums STRUKTŪRA

struktūras_nosaukums ENDS

Šeit ir datu apraksta direktīvu secība db, dw, dd, dq Un dt.

Viņu operandi nosaka lauku lielumu un pēc izvēles sākotnējās vērtības. Šīs vērtības, iespējams, inicializēs atbilstošos laukus, kad struktūra tiks definēta.

Kā mēs jau atzīmējām, aprakstot veidni, atmiņa netiek piešķirta, jo tā ir tikai informācija tulkotājam.

Atrašanās vieta veidne programmā var būt patvaļīga, taču, vadoties pēc vienas piespēles tulkotāja loģikas, tai jāatrodas pirms vietas, kur definēts mainīgais ar šīs struktūras veidu. Tas ir, aprakstot mainīgo ar kādas struktūras veidu datu segmentā, tā veidne jāievieto datu segmenta sākumā vai pirms tā.

Apsveriet iespēju strādāt ar struktūrām, izmantojot noteiktas nodaļas darbinieku datu bāzes modelēšanas piemēru.

Vienkāršības labad, lai izvairītos no informācijas konvertēšanas problēmām ievades laikā, piekritīsim, ka visi lauki ir simbolisks.

Definēsim šīs datu bāzes ierakstu struktūru ar šādu veidni:

Datu definēšana ar struktūras tipu

Lai programmā izmantotu ar veidnes palīdzību aprakstīto struktūru, nepieciešams definēt mainīgo ar šīs struktūras veidu. Šim nolūkam tiek izmantota šāda sintakse:

[mainīgā nosaukums] struktūras_nosaukums

    mainīgais nosaukums- dotā struktūras tipa mainīgā identifikators.

    Mainīgā nosaukuma norādīšana nav obligāta. Ja tas nav norādīts, atmiņas apgabals ar visu garumu summas lielumu struktūras elementi.

    vērtību saraksts- ar komatu atdalīts struktūras elementu sākotnējo vērtību saraksts, kas ievietots leņķa iekavās.

    Viņa uzdevums arī nav obligāts.

    Ja saraksts ir nepilnīgs, tad visi konkrētā mainīgā struktūras lauki tiek inicializēti ar vērtībām no veidnes, ja tādas ir.

    Ir atļauts inicializēt atsevišķus laukus, taču šajā gadījumā trūkstošie lauki ir jāatdala ar komatiem. Trūkstošie lauki tiks inicializēti ar vērtībām no struktūras veidnes. Ja, definējot jaunu mainīgo ar šīs struktūras veidu, mēs piekrītam visām tā veidnē esošajām lauka vērtībām (tas ir, iestatītas pēc noklusējuma), tad jums vienkārši jāraksta leņķiekavas.

    Piemēram: Viktors strādnieks.

Piemēram, definēsim vairākus mainīgos ar iepriekš aprakstītās struktūras veidu.

Struktūras metodes

Ideja ieviest strukturālo tipu jebkurā programmēšanas valodā ir apvienot dažāda veida mainīgos vienā objektā.

Valodai ir jānodrošina līdzeklis, kā piekļūt šiem mainīgajiem konkrētajā struktūras instancē. Lai komandā atsauktos uz kādas struktūras lauku, tiek izmantots īpašs operators - simbols ". " (punkts). To lieto šādā sintaksē:

    adreses_izteiksme- kāda strukturāla tipa mainīgā identifikators vai izteiksme iekavās saskaņā ar tālāk norādītajiem sintakses noteikumiem (1. att.);

    struktūras_lauka_nosaukums- lauka nosaukums no struktūras veidnes.

    Faktiski šī ir arī adrese, pareizāk sakot, lauka nobīde no struktūras sākuma.

Tātad operators " . " (punkts) novērtē izteiksmi

Rīsi. 5. Adreses izteiksmes sintakse struktūras lauka piekļuves operatorā

Demonstrēsim mūsu definētās struktūras piemērā strādnieks daži paņēmieni darbam ar konstrukcijām.

Piemēram, izvilkt uz cirvis lauka vērtības ar vecumu. Tā kā maz ticams, ka darbspējīgas personas vecums būs lielāks par 99 gadiem, pēc šī rakstzīmju lauka satura ievietošanas reģistrā cirvis būs ērti to pārvērst binārā attēlojumā ar komandu aad.

Esiet uzmanīgi, jo datu uzglabāšanas principa dēļ “zems baits zemā adresē” tiks ievietots vecuma augstākais cipars al, un jaunākais iekšā Ak.

Lai to labotu, vienkārši izmantojiet komandu xchg al, ah:

mov ax,word ptr sotr1.age ;at al age sotr1

un tas ir iespējams šādi:

Turpmākais darbs ar konstrukciju masīvu tiek veikts tāpat kā ar viendimensijas masīvu. Šeit rodas vairāki jautājumi:

Kā rīkoties ar izmēru un kā organizēt masīva elementu indeksāciju?

Tāpat kā citi programmā definētie identifikatori, tulkotājs piešķir struktūras tipa nosaukumu un mainīgā lieluma nosaukumu, bet struktūras tipam - tipa atribūtu. Šī atribūta vērtība ir lielums baitos, ko aizņem šīs struktūras lauki. Šo vērtību var iegūt, izmantojot operatoru veids.

Kad struktūras instances lielums ir kļuvis zināms, indeksēšanas organizēšana struktūru masīvā nav īpaši sarežģīta.

Piemēram:

Kā kopēt lauku no vienas struktūras uz citas struktūras atbilstošo lauku? Vai arī kā kopēt visu struktūru? Kopēsim lauku nam trešais darbinieks šajā jomā nam piektais darbinieks:

mas_sotr darbinieks 10 dup()

mov bx, nobīde mas_sotr

mov si,(tipa strādnieks)*2 ;si=77*2

mov di,(tipa darbinieks)*4 ;si=77*4

Man šķiet, ka programmētāja amats agri vai vēlu liek cilvēkam izskatīties pēc labas mājsaimnieces. Viņš, tāpat kā viņa, pastāvīgi meklē, kur kaut ko ietaupīt, samazināt un pagatavot brīnišķīgas vakariņas no minimāla ēdiena. Un, ja tas izdodas, morālais gandarījums nav mazāks un varbūt lielāks nekā no brīnišķīgām vakariņām pie mājsaimnieces. Šī gandarījuma pakāpe, man šķiet, ir atkarīga no mīlestības pret savu profesiju pakāpes.

No otras puses, programmatūras un aparatūras izstrādes progress programmētāju nedaudz atslābina, un diezgan bieži ir situācija, kas līdzīga labi zināmajam sakāmvārdam par mušu un ziloni - lai atrisinātu kādu nelielu problēmu, tiek izmantoti smagie instrumenti. iesaistīti, kuru efektivitāte kopumā ir nozīmīga tikai īstenojot salīdzinoši lielus projektus.

Šādu divu veidu datu klātbūtne valodā, iespējams, ir saistīta ar "saimnieces" vēlmi pēc iespējas efektīvāk izmantot galda darba zonu (RAM), gatavojot ēdienu vai ievietojot produktus (programmas dati ).

Pēc mērķa komandas var atšķirt (iekavās ir doti datora montētāja, piemēram, IBM PC, komandu mnemonisko opkodu piemēri):

l veicu aritmētiskās darbības (ADD un ADC - saskaitiet un saskaitiet ar pārnesumu, SUB un SBB - atņemt un atņemt ar aizdevumu, MUL un IMUL - neparakstītas un parakstītas reizināšanas, DIV un IDIV - neparakstītas un parakstītas dalīšanas, CMP - salīdzinājumi utt.) ;

l veicot loģiskās darbības (OR, AND, NOT, XOR, TEST uc);

l datu pārsūtīšana (MOV - nosūtīt, XCHG - apmaiņa, IN - ievadīt mikroprocesorā, OUT - izņemt no mikroprocesora utt.);

l vadības nodošana (programmas atzari: JMP - beznosacījuma atzars, CALL - procedūras izsaukums, RET - atgriešanās no procedūras, J* - nosacījuma atzars, LOOP - cilpas vadība utt.);

l rakstzīmju virkņu apstrāde (MOVS - pārsūtīšana, CMPS - salīdzināšana, LODS - lejupielāde, SCAS - skenēšana. Šīs komandas parasti tiek izmantotas ar prefiksu (atkārtojuma modifikators) ​​REP;

l programmas pārtraukumi (INT - programmatūras pārtraukumi, INTO - nosacījumi pārtraukumi uz pārpildes, IRET - atgriešanās no pārtraukuma);

l mikroprocesora vadība (ST* un CL* - iestatīt un notīrīt karogus, HLT - stop, WAIT - gaidīšanas režīms, NOP - dīkstāve utt.).

AR pilns saraksts montāžas komandas var atrast darbos.

Datu pārsūtīšanas komandas

l MOV dst, src - datu pārsūtīšana (pārvietot - pārvietot no src uz dst).

Pārsūtīšana: viens baits (ja src un dst ir baitu formātā) vai viens vārds (ja src un dst ir Word formātā) starp reģistriem vai starp reģistru un atmiņu, un ieraksta tūlītēju vērtību reģistrā vai atmiņā.

Operandiem dst un src jābūt vienādam formātam - baits vai vārds.

Src var būt šāda veida: r (reģistrs) - reģistrs, m (atmiņa) - atmiņa, i (impedance) - tūlītēja vērtība. Dst var būt r, m tipa. Operandus nevar izmantot vienā komandā: rsegm kopā ar i; divi m tipa operandi un divi rsegm tipa operandi). Operands i var būt arī vienkārša izteiksme:

mov AX, (152 + 101B) / 15

Izteiksmes novērtējums tiek veikts tikai tulkošanas laikā. Karogi nemainās.

l PUSH src - vārda ievietošana kaudzē (push - izspiest cauri; push uz steku no src). Nospiež src saturu uz steka augšdaļu — jebkuru 16 bitu reģistru (ieskaitot segmentu) vai divas atmiņas vietas, kurās ir 16 bitu vārds. Karogi nemainās;

l POP dst — vārda izvilkšana no steka (pop — pop; skaitīšana no steka dst). Noņem vārdu no kaudzes augšdaļas un ievieto to dst — jebkurā 16 bitu reģistrā (ieskaitot segmentu) vai divās atmiņas vietās. Karogi nemainās.

Programmēšana mašīnas instrukciju līmenī ir minimālais līmenis, kurā ir iespējama programmēšana. Mašīnas instrukciju sistēmai jābūt pietiekamai, lai veiktu nepieciešamās darbības, izdodot instrukcijas datora aparatūrai.

Katra mašīnas instrukcija sastāv no divām daļām:

  • operāciju zāle - "ko darīt" noteikšana;
  • operands - apstrādes objektu definēšana, “ko darīt”.

Mikroprocesora mašīnas instrukcija, kas rakstīta montāžas valodā, ir viena rinda ar šādu sintaktisko formu:

etiķetes komanda/direktīva operands(-i) ;komentāri

Šajā gadījumā obligāts lauks rindā ir komanda vai direktīva.

Iezīme, komanda/direktīva un operandi (ja tādi ir) ir atdalīti ar vismaz vienu atstarpi vai tabulēšanas rakstzīmi.

Ja komanda vai direktīva jāturpina nākamajā rindā, tad tiek izmantota atpakaļvērstā slīpsvītra: \.

Pēc noklusējuma montāžas valoda komandās vai direktīvās neatšķir lielos un mazos burtus.

Koda rindu piemēri:

Countdb 1 ;Vārds, direktīva, viens operands
mov eax,0 ;Komanda, divi operandi
cbw ; Komanda

Tagi

Etiķete montāžas valodā var būt šādas rakstzīmes:

  • visi latīņu alfabēta burti;
  • skaitļi no 0 līdz 9;
  • īpašās rakstzīmes: _, @, $, ?.

Punktu var izmantot kā etiķetes pirmo rakstzīmi, taču daži kompilatori attur šo rakstzīmi. Rezervēto montāžas valodu nosaukumus (direktīvas, operatorus, komandu nosaukumus) nevar izmantot kā etiķetes.

Etiķetes pirmajai rakstzīmei ir jābūt burtam vai speciālajai rakstzīmei (nevis ciparam). Maksimālais etiķetes garums ir 31 rakstzīme. Visām etiķetēm, kas ir rakstītas uz rindas, kas nesatur montāžas direktīvu, jābeidzas ar kolu: .

Komandas

Komanda norāda tulkotājam, kāda darbība jāveic mikroprocesoram. Datu segmentā komanda (vai direktīva) definē lauku, darbvietu vai konstanti. Koda segmentā instrukcija definē darbību, piemēram, pārvietošanu (mov) vai pievienošanu (pievienošanu).

direktīvas

Montētājam ir vairāki operatori, kas ļauj kontrolēt saraksta salikšanas un ģenerēšanas procesu. Šos operatorus sauc direktīvas . Tie darbojas tikai programmas salikšanas procesā un atšķirībā no instrukcijām neģenerē mašīnkodus.

operandi

Operands – objekts, uz kura tiek izpildīta mašīnas komanda vai programmēšanas valodas operators.
Instrukcijā var būt viens vai divi operandi vai vispār nav operandu. Operandu skaitu netieši norāda instrukcijas kods.
Piemēri:

  • Nav operandu ret ;Atgriezties
  • Viens operands inc ecx ;Increment ecx
  • Divi operandi pievieno eax,12 ;Pievieno 12 to eax

Etiķetei, komandai (direktīvai) un operandam nav jāsākas nevienā noteiktā virknes pozīcijā. Tomēr ieteicams tos rakstīt kolonnā, lai nodrošinātu labāku programmas lasāmību.

Operandi var būt

  • identifikatori;
  • rakstzīmju virknes vienpēdiņās vai dubultpēdiņās;
  • veseli skaitļi binārā, oktālā, decimālā vai heksadecimālā veidā.
Identifikatori

Identifikatori – derīgu rakstzīmju secības, ko izmanto, lai apzīmētu programmas objektus, piemēram, darbības kodus, mainīgo nosaukumus un etiķešu nosaukumus.

Identifikatoru rakstīšanas noteikumi.

  • Identifikators var sastāvēt no vienas vai vairākām rakstzīmēm.
  • Kā rakstzīmes varat izmantot latīņu alfabēta burtus, ciparus un dažas īpašās rakstzīmes: _, ?, $, @.
  • Identifikators nevar sākties ar cipara rakstzīmi.
  • ID var būt līdz 255 rakstzīmēm garš.
  • Tulkotājs pieņem pirmās 32 identifikatora rakstzīmes un ignorē pārējās.
komentāri

Komentāri ir atdalīti no izpildāmās rindas ar rakstzīmi; . Šajā gadījumā viss, kas rakstīts aiz semikola rakstzīmes un līdz rindas beigām, ir komentārs. Komentāru izmantošana programmā uzlabo tās skaidrību, īpaši, ja instrukciju kopas mērķis ir neskaidrs. Komentārā var būt jebkuras drukājamas rakstzīmes, tostarp atstarpes. Komentārs var aptvert visu rindiņu vai sekot komandai tajā pašā rindā.

Montāžas programmas struktūra

Programma, kas rakstīta montāžas valodā, var sastāvēt no vairākām daļām, ko sauc moduļi . Katrs modulis var definēt vienu vai vairākus datu, steku un koda segmentus. Jebkurai pilnīgai montāžas valodas programmai ir jāietver viens galvenais vai galvenais modulis, no kura sākas tās izpilde. Modulis var saturēt kodu, datus un steka segmentus, kas deklarēti ar atbilstošām direktīvām. Pirms segmentu deklarēšanas ir jānorāda atmiņas modelis, izmantojot .MODEL direktīvu.

Programmas "neko nedarīšanas" piemērs montāžas valodā:

686P
.MODEL FLAT, STDCALL
.DATI
.CODE
SĀKT:

RET
BEIGAS SĀKT

Šajā programmā ir tikai viena mikroprocesora instrukcija. Šī komanda ir RET. Tas nodrošina pareizu programmas pārtraukšanu. Parasti šī komanda tiek izmantota, lai izietu no procedūras.
Pārējā programmas daļa ir saistīta ar tulka darbību.
.686P — Pentium 6 (Pentium II) aizsargātā režīma komandas ir atļautas. Šī direktīva atlasa atbalstīto montētāja instrukciju kopu, norādot procesora modeli. Burts P direktīvas beigās norāda tulkotājam, ka procesors darbojas aizsargātā režīmā.
.MODEL FLAT, stdcall ir plakanas atmiņas modelis. Šis atmiņas modelis tiek izmantots operētājsistēma Windows. stdcall
.DATA ir programmas segments, kas satur datus.
.CODE ir programmas bloks, kas satur kodu.
START ir etiķete. Assembleerā liela loma ir etiķetēm, ko nevar teikt par mūsdienu augsta līmeņa valodām.
END START - programmas beigas un ziņojums tulkotājam, ka programma jāsāk no etiķetes START .
Katrā modulī ir jābūt END direktīvai, kas iezīmē programmas pirmkoda beigas. Visas rindas, kas seko END direktīvai, tiek ignorētas. Izlaižot END direktīvu, rodas kļūda.
Etiķete pēc direktīvas END norāda kompilatoram galvenā moduļa nosaukumu, no kura sākas programmas izpilde. Ja programmā ir viens modulis, etiķeti pēc direktīvas END var izlaist.




Tops