ภาษาแอสเซมบลีคืออะไร

บางครั้งเรียกว่า แอสเซมบลี หรือ ASM ภาษาแอสเซมบลี เป็น ภาษา การเขียนโปรแกรมระดับต่ำ

โปรแกรมที่เขียนด้วยภาษาแอสเซมบลีจะถูกรวบรวมโดยแอสเซมเบลอร์ แอสเซมเบลอร์ทุกภาษามีภาษาแอสเซมบลีของตนเองซึ่งออกแบบมาสำหรับสถาปัตยกรรมคอมพิวเตอร์เฉพาะ

ภาษาของเครื่องเป็นเพียงตัวเลขซึ่งไม่ใช่เรื่องง่ายที่มนุษย์จะอ่าน การใช้ ASM โปรแกรมเมอร์สามารถเขียนโปรแกรมที่มนุษย์อ่านได้ซึ่งสอดคล้องกับภาษาของเครื่อง

ข้อเสียคือทุกอย่างที่คอมพิวเตอร์ทำจะต้องอธิบายอย่างชัดเจนในรายละเอียดที่แม่นยำ ข้อดีคือโปรแกรมเมอร์สามารถควบคุมสิ่งที่คอมพิวเตอร์ทำ

ทำไม ASM จึงเป็นภาษา "ระดับต่ำ"

แอสเซมบลีเรียกว่าภาษาการเขียนโปรแกรมระดับต่ำเนื่องจากมีความสัมพันธ์แบบหนึ่งต่อหนึ่งระหว่างสิ่งที่บอกให้คอมพิวเตอร์ทำและสิ่งที่คอมพิวเตอร์ทำ โดยทั่วไปหนึ่งบรรทัดของโปรแกรมแอสเซมบลีประกอบด้วยคำสั่งสำหรับคอมพิวเตอร์สูงสุดหนึ่งคำสั่ง

ASM แตกต่างจากภาษา "ระดับสูง" อย่างไร

ภาษาระดับสูงมีการสรุปที่เป็นนามธรรมของการดำเนินการระดับต่ำซึ่งทำให้โปรแกรมเมอร์สามารถมุ่งเน้นไปที่การอธิบาย สิ่งที่พวกเขาต้องการทำ มากขึ้นและน้อยลง ว่าควรจะทำ อย่างไร การเขียนโปรแกรมด้วยวิธีนี้สะดวกยิ่งขึ้นและทำให้โปรแกรมอ่านง่ายขึ้นเมื่อเสียสละของการควบคุมระดับต่ำ

โปรแกรมที่เขียนด้วยภาษาระดับสูงจะไม่ตรงกับความเร็วและประสิทธิภาพของโปรแกรมที่เขียนในชุดประกอบ ตัวอย่างภาษาระดับสูง ได้แก่ Python, Java, JavaScript, Clojure และ Lisp

ภาษา "ระดับกลาง" คืออะไร

ภาษา ระดับ กลาง หรือ ระดับ ล่าง มีบทคัดย่อระดับสูงที่จะทำให้ชีวิตของโปรแกรมเมอร์ง่ายขึ้นในขณะที่ยังคงให้การเข้าถึงการดำเนินงานระดับต่ำ พวกเขามักจะใช้เพื่อเขียนระบบปฏิบัติการดังนั้นบางครั้งพวกเขาเรียกว่า ภาษาการเขียนโปรแกรมระบบ

โปรแกรมที่เขียนด้วยภาษาระดับกลางสามารถทำงานได้ดีหรือเกือบจะเหมือนกันกับโปรแกรมที่เขียนด้วยภาษาแอสเซมบลี ตัวอย่างภาษาการเขียนโปรแกรมระดับกลาง ได้แก่ C, C ++, Ada, Nim และ Rust

ASM เป็นแบบพกพาหรือไม่?

ไม่เนื่องจากภาษาแอสเซมบลีนั้นเชื่อมโยงกับสถาปัตยกรรมคอมพิวเตอร์ที่เฉพาะเจาะจงพวกเขาจึงไม่สามารถพกพาได้ โปรแกรมที่เขียนด้วยภาษาแอสเซมบลีหนึ่งจะต้องถูกเขียนใหม่ทั้งหมดเพื่อให้ทำงานบนเครื่องประเภทอื่นได้

การพกพาเป็นหนึ่งในข้อได้เปรียบหลักของภาษาระดับสูงกว่า ภาษาการเขียนโปรแกรม C มักเรียกว่า "ชุดประกอบแบบพกพา" เนื่องจากคอมไพเลอร์ C มีอยู่เกือบทุกสถาปัตยกรรมระบบที่ทันสมัย โปรแกรมที่เขียนใน C อาจต้องการการเปลี่ยนแปลงบางอย่างก่อนที่จะรวบรวมในคอมพิวเตอร์เครื่องอื่น แต่ภาษาหลักเป็นแบบพกพา

โดยทั่วไปแล้วภาษาในระดับที่สูงกว่าจะต้องทำการเปลี่ยนแปลงให้น้อยลงเพื่อให้สามารถทำงานบนสถาปัตยกรรมอื่นได้ ภาษาระดับต่ำสุด - ภาษาเครื่องและภาษาแอสเซมบลี - ไม่สามารถเคลื่อนย้ายได้

ตัวอย่าง: สวัสดีโลก! ในแอสเซมบลี 32 บิตสำหรับ Windows

นี่คือ "Hello, World" ที่เขียนขึ้นสำหรับโปรเซสเซอร์ Intel แบบ 32 บิต มันจะทำงานบนโปรเซสเซอร์ 64 บิต เราจะรวบรวมและเรียกใช้บน Windows 10

 global _main extern ส่วน _printf. text _main: การส่งข้อความแบบพุช _printf เพิ่ม esp, 4 ข้อความซ้ำ: db 'Hello, World!', 10, 0 

ในการเริ่มต้นให้เปิด Notepad คัดลอกและวางรหัสด้านบนลงในไฟล์ข้อความใหม่และบันทึกไฟล์เป็น hello.asm

ในการรวบรวมแอสเซมบลีเราจะใช้ NASM ซึ่งเป็น Netwide Assembler สามารถดาวน์โหลดได้ที่ //www.nasm.us/

 nasm -f win32 hello.asm 

เมื่อคุณเรียกใช้คำสั่งนี้ NASM จะสร้างไฟล์วัตถุ ไฟล์ออบเจ็กต์มีรหัสเครื่อง แต่ไม่ใช่ไฟล์ที่เรียกใช้งานได้ ไฟล์วัตถุของเราเรียกว่า hello.obj

ในการสร้างไฟล์ปฏิบัติการเราจะใช้ MinGW รุ่น 32 บิต (Minimal GNU สำหรับ Windows) ซึ่งจะให้คอมไพเลอร์ gcc สามารถดาวน์โหลดได้ที่ //www.mingw.org/

 gcc -o hello.exe hello.obj 
 สวัสดี 
 สวัสดีชาวโลก! 

ตัวอย่าง: สวัสดีโลก! ในชุด 64 บิตสำหรับ Linux

นี่คือ "Hello, World" ที่เขียนขึ้นสำหรับหน่วยประมวลผล Intel 64 บิต เราจะรวบรวมและเรียกใช้บน Linux 64 บิต

 extern printf; ฟังก์ชัน C printf ที่จะเรียกว่าส่วน. data; ส่วนข้อมูลตัวแปรเริ่มต้น msg: db "Hello, world!", 0; สตริง C สิ้นสุดด้วย 0 fmt: db "% s", 10, 0; รูปแบบ printf "\ n", '0' ส่วน. text; เริ่มต้นส่วนรหัสสากลหลัก; จุดเริ่มต้น gcc มาตรฐานหลัก:; ฉลากโปรแกรมสำหรับรายการจุด push rbp; ตั้งค่ากรอบสแต็กต้องจัดชิด rdi mov, fmt mov rsi, msg mov rax, 0; สามารถเป็น: xor rax, rax call printf; เรียกฟังก์ชัน C printf pop rbp; คืนค่าสแต็ก mov rax, 0; ปกติไม่มีข้อผิดพลาดค่าส่งคืน ret; กลับ 

คัดลอกและวางโปรแกรมนี้เป็นไฟล์ใหม่ที่ชื่อว่า hello.asm

จากนั้นรวบรวมแอสเซมบลีด้วย NASM ซึ่งคุณสามารถติดตั้งกับตัวจัดการแพคเกจของคุณ ตัวอย่างเช่นบน Ubuntu หรือ Debian คุณสามารถติดตั้ง NASM โดยใช้ apt:

 อัปเดต sudo apt && sudo apt install nasm 

รันคำสั่งนี้เพื่อสร้างไฟล์อ็อบเจ็กต์ของคุณ:

 nasm -f elf64 hello.asm 

ไฟล์วัตถุชื่อ hello.o

จากนั้นใช้ gcc เพื่อลิงก์ไฟล์ออบเจ็กต์นี้ไปยังไลบรารีที่จำเป็นในคอมพิวเตอร์ของคุณและคอมไพล์ไฟล์นั้นไปยังไฟล์ปฏิบัติการที่เรียกว่า hello :

 gcc hello.o -o สวัสดี 

สุดท้ายให้เรียกใช้ไฟล์ปฏิบัติการ:

 ./สวัสดี 
 สวัสดีชาวโลก! 

สำหรับการอ้างอิงนี้เป็นโปรแกรมเดียวกันที่เขียนใน C:

 #include int main () {char msg [] = "สวัสดีชาวโลก \ n"; printf ( "% s \ n" ผงชูรส); กลับ 0 } 

  • ดูรูทีนการดีบักสำหรับตัวอย่างอื่น ๆ ของรหัสแอสเซมบลีระดับต่ำและข้อมูลเพิ่มเติมเกี่ยวกับสิ่งที่แต่ละรูทีนทำ
  • สำหรับตัวอย่างเพิ่มเติมของภาษาแอสเซมบลีดูที่เว็บไซต์ Happy Codings

2GL, แอสเซมเบลอร์, ภาษาระดับต่ำ, ภาษาเครื่อง, เงื่อนไขการเขียนโปรแกรม