Kamchiliklari • Assembler tilining mashinaga yoʻnaltirilganligi (“past” darajasi) tufayli undagi dasturni yuqori darajadagi dasturlash tillariga nisbatan odam oʻqishi va tushunishi qiyinroq; dastur juda "kichik" elementlardan iborat - mashina ko'rsatmalari, mos ravishda, dasturlash va disk raskadrovka murakkablashadi, mehnatkashlik va xatolarni kiritish ehtimoli ortadi.
• Sifatli kod ishlab chiqarish uchun ilg'or dasturchi mahorati talab qilinadi: o'rtacha dasturchi tomonidan assembler tilida yozilgan kod odatda yuqori darajadagi tilda yozilgan taqqoslanadigan dasturlar uchun optimallashtiruvchi kompilyator tomonidan yaratilgan koddan yaxshiroq yoki hatto yomonroq emas.
• Yuqori darajadagi til dasturi yangi maqsadli platformaning funksiyalari uchun avtomatik optimallashtirish bilan qayta kompilyatsiya qilinishi mumkin, yangi platformadagi assembler tili dasturi esa kodni qo‘lda qayta yozmasdan o‘zining tezligi ustunligini yo‘qotishi mumkin.
• Qoidaga ko'ra, zamonaviy sanoat dasturlash tillariga nisbatan kamroq kutubxonalar mavjud.
• Boshqa arxitektura va buyruqlar tizimiga ega bo'lgan kompyuterlarga dasturlarni ko'chirish imkoniyati yo'q.
Sintaksis Assembly tillari sintaksisi uchun umumiy qabul qilingan standart mavjud emas. Biroq, de-fakto standartlar mavjud - ko'pchilik assembly tilini ishlab chiquvchilar amal qiladigan an'anaviy yondashuvlar. Bunday asosiy standartlar Intel sintaksisi va AT&T sintaksisidir.
Ko'rsatmalar yozishning umumiy formati ikkala standart uchun ham bir xil:
Opkod to'g'ridan-to'g'ri protsessorga yo'riqnomaning mnemonikidir. Unga prefikslar qo'shilishi mumkin (takrorlashlar, manzillar turini o'zgartirish va boshqalar). Operandlar konstantalar, registr nomlari, operativ xotira manzillari va boshqalar bo'lishi mumkin. Intel va AT&T standartlari o'rtasidagi farqlar, asosan, operandlarning ro'yxatga kiritilish tartibi va turli adreslash usullari uchun ularning sintaksisi bilan bog'liq.
Amaldagi mnemonika odatda bir xil arxitektura yoki arxitektura oilasining barcha protsessorlari uchun bir xil bo'ladi (keng ma'lum bo'lganlar orasida Motorola, ARM, x86 protsessorlari va kontrollerlari uchun mnemonika bor). Ular protsessor spetsifikatsiyasida tasvirlangan.
Masalan, Zilog Z80 protsessori Intel i8080 ko'rsatmalar to'plamini meros qilib oldi, uni kengaytirdi va mnemonikani (va ro'yxatga olish belgilarini) o'ziga xos tarzda o'zgartirdi. Misol uchun, men Intelning movini ld ga o'zgartirdim. Motorola Fireball protsessorlari Z80 ko'rsatmalar to'plamini meros qilib oldi va uni biroz qisqartirdi. Biroq, Motorola rasmiy ravishda Intel mnemonikasiga qaytdi. va hozirda Fireball assemblerlarining yarmi Intel mnemonikasida, yarmi esa Zilog mnemonikasida ishlaydi.
Mavjud buyruqlar ro'yxati
Tashish bilan ADC qo'shimchasi.
AD qo'shimchasi.
VA Mantiqiy VA.
BSF to'g'ridan-to'g'ri bitli skanerlash.
BSR teskari bitli skanerlash.
BT Bit tekshiruvi.
BTC Bitni tekshirish va inversiya qilish.
BTR Bitni tekshirish va tiklash.
BTS Beatni tekshiring va o'rnating.
CALL Protsedura chaqiruvi yoki vazifani almashtirish.
CBW Baytni so'zga aylantirish.
CLC Tashish bayrog'ini tozalang.
CLD Yo'nalishni tiklash bayrog'i.
CLI Reset uzilish bayrog'i.
CMC Tashish bayrog'ini aylantiring.
CDQ Doubleword to quadword ga aylantiring.
CMP solishtirish.
CWD So'zni qo'sh so'zga aylantiring.
CWDE So'zni qo'sh so'zga aylantiring.
DECning pasayishi.
DIV Imzosiz bo'linma.
IDIV Imzolangan bo'linma.
ENTER Stack ramkasini o'rnating.
IMUL imzolangan ko'paytirish.
INC ortishi.
J(COND) Shartli sakrash.
JMP Shartsiz sakrash.
LAHF Bayroq registrining past baytini AH ga yuklang.
LEAVE Stack ramkasini tiklang.
LOOP CX/ECX registridagi hisoblagich bilan halqa boshqaruvi.
LOOPNZ/LOOPNE CX/ECX registridagi hisoblagich bilan halqa boshqaruvi.
LOOPZ/LOOPE CX/ECX registridagi hisoblagich bilan halqa boshqaruvi.
MOV nusxasi.
MOVSX imzolangan kengaytma bilan nusxalash.
MOVZX Nol kengaytmasi bilan nusxalash.
MUL belgisiz ko'paytirish.
NEG belgisi o'zgarishi.
YO'Q Operatsiya yo'q.
Invert EMAS.
YOKI Mantiqiy YOKI.
POP Stackdan ko'tariladi.
POPA/POPAD Umumiy maqsadli registrlarni stekdan tiklang.
POPF/POPFD Stackdan bayroq registrini oching.
PUSH Stack ustiga bosing.
PUSHA/PUSHAD Umumiy maqsadli registrlarni stekga suring.
PUSHF/PUSHFD bayroq registrini stekga suring.
RCL Tashish bayrog'i orqali chapga burang.
RCR Yuk tashish bayrog'i bo'ylab o'ngga aylantiring.
RET/RETN/RETF Jarayondan qaytish.
ROL Chapga aylantiring.
ROR O'ngga aylantiring.
SAHF AH tarkibini bayroq registrining past baytiga yozing.
SAL Arifmetik chap siljish.
SAR arifmetik o'ngga siljish.
Qarz olish bilan SBB ayirish.
SHL Mantiqiy chap siljish.
SHLD Ikki marta aniqlikdagi chap siljish.
SHR Mantiqiy o'ngga siljish.
SHRD Ikki marta aniqlikdagi o'ngga siljish.
STC Yuk tashish bayrog'ini o'rnating.
STD Yo'nalish bayrog'ini o'rnating.
STI uzilish bayrog'ini o'rnating.
SUB olib tashlash.
TEST mantiqiy taqqoslash.
XCHG almashinuvi.
XOR Mantiqiy XOR.