Ассемблер хэл бол компьютерт шууд заавар өгдөг доод түвшний програмчлалын хэл юм. Python, Java зэрэг өндөр түвшний хэлнүүдээс ялгаатай нь Ассемблер хэл машин кодтой хавь илүү ойр ажилладаг. Энэ нь илүү хурдан, үр ашигтай , эрх чөлөөтэй боловч код унших, бичихэд хүндрэлтэй болгодог ажээ .
Ассемблер сурах хэрэгтэй вэ?
- Компьютер хэрхэн ажилладагийг ойлгох – Процессор (CPU) зааварчилгааг хэрхэн боловсруулдгийг сурах.
- Гүйцэтгэлийг сайжруулах – Ассемблер хэл програмуудыг илүү хурдан ажиллуулахад ашиглагддаг.
- Кибер аюулгүй байдал & Хакердалт – Reverse engineering болон аюулгүй байдлын шинжилгээнд хэрэглэгддэг.
- Суулгагдсан систем & Тоног төхөөрөмжийн хяналт – Микроконтроллер зэрэг жижиг төхөөрөмжүүд Ассемблерийг ашигладаг.
Үндсэн ойлголтууд
1. Бүртгэгч (Register) – CPU-ийн түр санах ой
Бүртгэгчүүд нь CPU-ийн доторх өгөгдлийг түр хадгалдаг жижиг санах ойн хэсгүүд юм. Эдгээр нь CPU-ийн гартай төстэй – мэдээллийг хурдан хандах боломжтойгоор барьж байдаг.
EAX
,EBX
,ECX
,EDX
– Ерөнхий зориулалттай бүртгэгчид.ESP
,EBP
– Санах ойн стектэй (stack) ажиллахад ашиглагддаг.EIP
– Дараагийн гүйцэтгэгдэх зааврыг заана.
2. Түгээмэл ашиглагддаг командууд
Команд | Хийх үйлдэл |
---|---|
MOV | Өгөгдлийг нэг газраас нөгөөд шилжүүлэх |
ADD | Тоонуудыг нэмэх |
SUB | Тоонуудыг хасах |
MUL | Тоонуудыг үржих |
DIV | Тоонуудыг хуваах |
JMP | Програмын өөр хэсэг рүү үсрэх |
CMP | Хоёр утгыг харьцуулах |
JE , JNE | Тэнцүү / тэнцүү биш үед үсрэх |
Энгийн жишээ : (Hello World гэж хэвлэх)
section .data
msg db "Hello, World!",10 ; Хэвлэх текст
len equ $ - msg ; Текстийн урт
section .text
global _start
_start:
mov eax, 4 ; Бичих системийн дуудлага
mov ebx, 1 ; Дэлгэц рүү хэвлэх
mov ecx, msg ; Мессежийн хаяг
mov edx, len ; Мессежийн урт
int 0x80 ; Үйлдлийн системийг дуудах
mov eax, 1 ; Гарах системийн дуудлага
xor ebx, ebx
int 0x80
Дүгнэлт
Ассемблер бол хүчирхэг боловч сурахад тун төвөгтэй хэл юм. Гэсэн хэдий ч үүнийг сурах нь компьютерийн ажиллагааг гүнзгий ойлгох, илүү хурдан програм бичих, асуудал шийдвэрлэх чадварыг нэмэгдүүлэхэд тусална. Өдөр тутмын програмчлалд түгээмэл хэрэглэгддэггүй ч үйлдлийн систем, аюулгүй байдал, суулгагдсан систем зэрэг салбарт зайлшгүй шаардлагатай.