From Wikipedia, the free encyclopedia
Ассемблер хэл нь компьютер, микроконтроллер, болон бусад програмчлагддаг төхөөрөмжүүдийг програмчилдаг, кодны мөр бүр нь нэг машин кодтой харгалздаг доод түвшний програмчлалын хэл юм. Компьютерын архитектур бүрд өөр өөр ассемблер хэл байдаг.
Ассемблер хэл нь ассемблераар машин код уруу хөрвүүлэгддэг. Зарим опкод нь нэгээс олон операнд шаарддаг.
Ассемблер нь ассемблер кодыг объект код уруу хөрвүүлдэг. Ихэнх ассемблерууд макро хэрэглэдэг.
1950-аад оноос ассемблер бий болсон бөгөөд машин програмчлах ажил нь хялбар болжээ. Ихэнх ассемблер RISC архитектуртай байдаг.
Хөрвүүлж байгаагаар нь хоёр ангилдаг:
Аль аль тохиолдолд ассемблер нь кодны хэмжээ, хаягуудыг тооцно. Хөрвүүлэлтийн хувьд нэг уншдаг ассемблер нь хурдан юм.
Дээд түвшний ассемблер нь илүү нарийн бүтцүүдтэй:
Ассемблер хэлээр бичигдсэн програм нь цуварсан хийсвэр командууд, тайлбар, өгөгдлөөс тогтоно.
Жишээ нь: доорх команд x86/IA-32 процессорт 8 битийн шууд утгыг регистрт хадгалах үйлдэл хийж байна. Энэхүү командын машин код дахь 10110-н дараах 3 бит нь регистрийг заадаг буюу 000 нь AL регистрийг илэрхийлж байна. Тиймээс дараах машин код нь AL регистрт нь 01100001 гэсэн өгөгдлийг хадгалах команд байна.
10110000 01100001
Энэ машин кодыг хүнд арай уншигдам болгохын тулд бид 16-тын тооллын систем дээр дүрсэлдэг.
B0 61
Дээрх код нь 2-тын 01100001 буюу 16-тын 61 буюу 10-тын 94 гэсэн тоог AL регистрт хуул гэсэн утгатай болно. Intel-ийн ассемблер хэлд хуулах үйлдлийг MOV гэсэн мнемоник хэрэглэдэг бөгөөд дээр кодыг зохих ассемблер хэл уруу хөрвүүлье. Одоо илүү хялбар ойлгогдож, цээжлэгддэг болсон байна.
MOV AL, 61h ; 97-г AL-д хуулах (16-таар 61)
Зарим ассемблер хэлд ганц мнемоник тухайлбал MOV хадгалах, өгөгдөл хуулах, шууд утга хуулах, регистрт утга хуулах, санах ойгоод регистрт өгөгдөл хуулах гэх мэт олон үйлдлийг хийдэг мнемоник байдаг. Харин бусад ассемблер хэлд ялгаатай опкодыг хэрэглэдэг. Жишээ нь L - "санах ойгоос регистрт өгөгдөл хуулах", ST - "регистрийн өгөгдлийг санах ой уруу хуулах", LR - "Нэг регистрийн утгыг өөр регистр уруу хуулах", MVI - "санах ой уруу шууд утга хуулах", гэх мэт.
MOV AL, 1h ; AL уруу 1-г хуулах
MOV CL, 2h ; CL уруу 2-г хуулах
MOV DL, 3h ; DL уруу 3-г хуулах
MOV EAX, [EBX] ; Санах ойн EBX дэх хаягаас 4 байтыг EAX уруу хуулах
MOV [ESI+EAX], CL ; CL-н өгөгдлийг ESI+EAX хаяг дахь 1 байтад хуулах
Тохиолдол бүрд MOV ялгаатай опкод уруу хөрвөгдөнө.
Ассемблер кодыг машин код уруу хөрвүүлэх ажлыг ассемблер хийдэг бол эсрэгээр нь машин кодоос ассемблер код уруу хөрвүүлэгчийг урвуу ассемблер (disassembler) гэдэг. Дээд түвшний хэлээс ялгаатай нь кодоо мөр мөрөөр нь ихэвчлэн хөрвүүлдэг. Гэвч зарим тохиолдолд хийсвэр командууд (ялангуяа макро) хэд хэдэн энгийн ассемблер код юм уу машины код болдог.
Компьютерын архитектур бүр өөрсдийн гэсэн машин хэлтэй; хийдэг үйлдэл, регистрийн тоо, санах ойд өгөгдлийг хадгалах гэх мэт олон хүчин зүйлүүдээс болдог.
Ассемблер хэлийг янз бүрээр зохиосон байдаг ч ерөнхийдөө дараа зүйлүүдэд ангилж болно:
Өргөтгөсөн мнемоник нь хэд хэдэн команд болон задардаг.
Хувьсагч болон элементүүдэд өгөгдөл олгох командууд юм. Өгөгдлийн хэмжээ, төрөл, байрлал зэргийг заадаг. Мөн өөр програмд ашиглаж болдог, эсвэл зөвхөн програм дотроо ашигладаг эсэхийг зааж өгдөг.
Кодны хэсэгт псевдо опкодууд байна.
Ихэнх ассемблерүүд макротай байдаг. Макро гэдэг нь дараалалсан текст мөрүүд юм. Опкод ч агуулж болно. Макро нь нэг мнемоник нэрээр нэрлэгддэг. Ассемблер ассемблер кодоо хөрвүүлж эхлэхэд тодорхойлогдсон мнемоник нэр гарч ирвэл макро буюу текстээр нь сольж тавьдаг.
Энд гарч буй "макро" нь өөр бусад хэлний макроноос ялгаатай юм. Си хэлний макро нь #define гэсэн хэсэгт ганц мөрөөр тодорхойлогддог бол энд гарч буй макро нь нэлээд урт "програм" байх бөгөөд хөрвүүлэлтийн үед ассемблер ажиллуулдаг.
Эндээс дүгнэвэл макро гэдэг нь олон мөр кодыг богино нэрээр нэрлэснээр ассемблер програмын богино болгох сайн талтай юм.
Макро нь ихэвчлэн параметер авдаг. Зарим ассемблерууд нэлээд нарийн макротай бөгөөд дээд түвшний хэл шиг нөхцөл шалгах, тэмдэгт мөр, арифметик үйлдэл, хувьсагч, параметеруудтай байдаг.
Зарим ассемблерууд бүтэцлэгдсэн програмчлалын шинжүүдийг агуулсан байдаг.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.