A több modulra tagolás azért volt fontos, mert az assembly programok általában nagyon hosszúak voltak, másrészt az akkori számítógépek még nagyon lassúak voltak. Egy hosszú forráskód fordítása nagyon sok időbe került. Ugyanakkor a program jelentős része a fejlesztés közben már elkészült, azt a programozó nem módosította – mivel a program már másik pontján járt a fejlesztés. Ezt a szakaszt újra és újra lefordítani az assemblerrel felesleges idő és energiapocsékolás volt.
Ezért bevezették a több modulból történő fordítást. Ekkor az assembler a fordításhoz egy listát kapott, hogy mely forráskód-fileokból tevődik össze a project. Az assembler a forráskód-modulokat egyenként fordította le egy-egy tárgykód (object) állományba. Amennyiben a forráskódon nem történt módosítás, úgy azt az assembler egy gyors ellenőrzéssel észrevette, és nem generálta újra a hozzá tartozó object kódot. Így csak azon forráskódok fordítása történt meg, melyek változtak az utolsó fordítás óta. Miután az assembler végzett a forráskódok fordításával, egy másik, speciális feladatot végző program következett, a szerkesztő program (linker). A linker a sok apró kis tárgykód alapján készítette el a működőképes programot .
Ez jelentősen meggyorsította a fordítást egyéb hátrányok nélkül. Sőt, a programozók így az újra felhasználható, általános eljárásaikat külön kis kód-gyűjteményben tárolták, és újabb project kezdése esetén eleve hozzácsatolták a project forráskód-listájához.
Ez tovább erősítette a vágyat az általános célú eljárások írására, és egymás közötti megosztásra. De az assembly nyelv ez irányú képességeinek hiánya ebben továbbra is komoly gátat jelentett.
A fentiek bizonyítják, hogy az assembly nyelv sok olyan lehetőséget rejtett magában, amely miatt megérdemli a külön generációs sorszámot. Ugyanakkor a nyelvi korlátok gátolták a programozási stílus fejlődését.