Makro navodilo v računalniškem programiranju je eno samo navodilo, ki se pri prevajanju programa nadomesti z vnaprej določenim blokom kode. Izraz je bil prvotno uporabljen za navodila, uporabljena pri programiranju v zbirnem jeziku, v katerem je bila včasih potrebna dolga, ponavljajoča se koda za zelo preproste operacije. Razvoj makro navodil je bil eden od prvih korakov k ustvarjanju jezika, ki temelji na knjižnici reprezentativnih funkcij, tako da se lahko drobna dejanja zberejo skupaj z enim klicem ukaza v ločenem programu. Zgodnje knjižnice makro navodil so najpogosteje dobavili proizvajalci strojne in programske opreme, da bi programerjem pomagali pravilno uporabljati funkcije in dostopati do njih.
Programerji so makro navodila uporabljali iz različnih razlogov, najpogostejši pa so bili zmanjšati količino ponavljajoče se kode v programu, odpraviti možnost napak v kodi makra in zagotoviti pogosto uporabljene nabore navodil, tako da bi lahko več programerjev uporabljalo isto navodilo za makro. V zbirnem jeziku mora biti vsak korak, potreben za dosego določenega rezultata, izrecno napisan. Primer je lahko program, ki sešteje tri števila skupaj.
Operater seštevanja v jezikih višje ravni je pogosto samoumeven, vendar operacija seštevanja treh številk v zbirnem jeziku zahteva vsaj šest ločenih vrstic kode. Prvi dve vrstici naložita številke v polja, imenovana registri, ki dejansko ustrezajo fizičnim vezjem v računalniku. Tretja vrstica doda dva registra, četrta vrstica pa shrani rezultat v drug register. Peta vrstica naloži zadnjo številko, ki jo je treba dodati v register, končni stavek pa tretji številki doda prejšnji rezultat.
To zaporedje operacij je mogoče enostavno spremeniti v makro navodilo, tako da je potrebna samo ena vrstica kode, skupaj s tremi številkami, ki jih je treba dodati kot parametre. Ko program končno prevede sestavljalec in ga spremeni v strojno kodo, se izvedejo dejanja, imenovana predobdelava, preden se izvede sestavljanje. Predprocesor vzame ukaz in parametre makra ter jih razširi v zahtevane vrstice kode, tako da v dejanski kodi makra nadomesti parametre za reprezentativne ogradne oznake.
Ko je uporaba makro navodil postala zelo razširjena, bi bilo veliko pogosto uporabljenih blokov kode sestavljenih v knjižnice makro navodil. Te knjižnice so vsebovale več makrov, ki so pomagale poenostaviti programiranje v zbirnem jeziku in zagotoviti, da se določene operacije izvajajo na dosleden način v različnih programih. Obsežna uporaba knjižnic makro navodil je sčasoma privedla do jezikov višje ravni, ki so se zanašali na svoje lastne knjižnice, da bi zagotovile obsežno funkcionalnost z veliko manj ponavljajočimi se programskimi zahtevami.