Nové výhodné předplatné namísto kreditů je tu! Více informací. Upravili jsme také naše provozní podmínky.
NOVINKA: Staň se datovým analytikem a získej jistotu práce, lepší plat a nové kariérní možnosti. Více informací:

Lekce 16 - Funkce v MASM

V minulé lekci, Assembler - Rejstřík instrukcí procesoru, jsme se podívali na přehled nejdůležitějších instrukcí.

V dnešním ASM tutoriálu se naučíme používat direktivy proc, endp, local a invoke, které nám používání funkcí velmi usnadní. Tyto direktivy fungují v kompilátorech UASM, ASMC, JWasm a také v 32-bitovém MASM. Ve FASM a TASM mají trochu odlišnou syntaxi. V NASM a ve 64-bitovém MASM tyto direktivy vůbec nejsou.

Motivace

Funkci v ASM voláme instrukcí CALL a její parametry na zásobník vkládáme instrukcí PUSH. Uvnitř funkce si hodnoty parametrů přečteme instrukcí MOV a na konec funkce dáme instrukci RET. Vypadá to jednoduše.

Jakmile má ale funkce více parametrů a k tomu ještě několik lokálních proměnných, pak je poměrně nepraktické používat pouze instrukce procesoru. Museli bychom si pamatovat, na které pozici na zásobníku leží jednotlivé proměnné a odkazovat se na ně číselnými indexy.

Definice funkce

Funkci pomocí direktivy proc deklarujeme následovně:


 

...konec náhledu článku...
Pokračuj dál

Znalosti v hodnotě stovek tisíc získáš za pár korun

Došel jsi až sem a to je super! Věříme, že ti první lekce ukázaly něco nového a užitečného.
Chceš v kurzu pokračovat? Přejdi do prémiové sekce.

Obsah článku spadá pod licenci Premium, koupí článku souhlasíš s Provozními podmínkami.

Co od nás v dalších lekcích dostaneš?
  • Přístup k jednotlivým lekcím dle způsobu pořízení.
  • Kvalitní znalosti v oblasti IT.
  • Dovednosti, které ti pomohou získat vysněnou a dobře placenou práci.

Popis článku

Požadovaný článek má následující obsah:

V assembler tutoriálu si ukážeme definice funkcí v MASM a to i s parametry a lokálními proměnnými. Čeká nás i přehled volacích konvencí různých systémů.
Článek pro vás napsal Petr Laštovička
Avatar
Autor se věnuje vývoji webových aplikací v ASP.NET a aplikací pro Windows v C++ nebo C#.
Aktivity