นิยามภาษาแอสเซมบลี

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

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

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

ประเด็นที่สำคัญ

  • ภาษาแอสเซมบลีเป็นภาษาโปรแกรมประเภทหนึ่งที่แปลภาษาระดับสูงเป็นภาษาเครื่อง
  • เป็นสะพานเชื่อมที่จำเป็นระหว่างโปรแกรมซอฟต์แวร์และแพลตฟอร์มฮาร์ดแวร์พื้นฐาน
  • ภาษาแอสเซมบลีอาศัยไวยากรณ์ภาษา เลเบล ตัวดำเนินการ และคำสั่งในการแปลงโค้ดเป็นคำสั่งเครื่องที่ใช้งานได้
  • ภาษาแอสเซมบลีอาจส่งผ่านแอสเซมเบลอร์แบบ Single-pass หรือ Multi-pass ซึ่งแต่ละอันมีการใช้งานและประโยชน์เฉพาะ
  • ทุกวันนี้ ภาษาแอสเซมบลีมักไม่ค่อยถูกเขียนโดยตรง แม้ว่าจะยังใช้ในแอปพลิเคชันเฉพาะบางประเภท เช่น เมื่อข้อกำหนดด้านประสิทธิภาพสูงเป็นพิเศษ

ภาษาแอสเซมบลีทำงานอย่างไร

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

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

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

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

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

ส่วนประกอบของภาษาแอสเซมบลี

ไวยากรณ์

เมื่อเขียนโค้ดใดๆ ในภาษาโปรแกรมใดๆ จะมีลำดับกฎเกณฑ์ที่สังเกตได้และเฉพาะซึ่งต้องปฏิบัติตามเพื่อให้คอมไพเลอร์รันโค้ดได้โดยไม่มีข้อผิดพลาดกฎเหล่านี้ถูกกำหนดให้เป็นไวยากรณ์ และมีเกณฑ์ต่างๆ เช่น จำนวนอักขระสูงสุดที่อนุญาต บรรทัดโค้ดอักขระใดที่ต้องขึ้นต้นด้วย หรือสัญลักษณ์บางอย่าง "เช่น เครื่องหมายอัฒภาค" หมายถึงอะไร

ฉลาก

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

ผู้ประกอบการ

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

คำสั่ง

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

มาโคร

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

Mnemonic

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

การซื้อขายความถี่สูง

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

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

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

ข้อดีและข้อเสีย

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

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

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

ข้อดี
  • การดำเนินการอาจง่ายกว่าเมื่อเทียบกับภาษาอื่น

  • การดำเนินการมักจะเร็วกว่าเมื่อเทียบกับภาษาอื่น

  • ช่วยให้สามารถควบคุมฮาร์ดแวร์ได้โดยตรง

  • รหัสอาจเล็กกว่าเมื่อเทียบกับภาษาอื่น

ข้อเสีย
  • การเขียนโปรแกรมอาจจะยากกว่าเมื่อเทียบกับภาษาระดับสูง

  • ไวยากรณ์ของภาษาแอสเซมบลีนั้นยาก

  • ไม่สามารถเคลื่อนย้ายระหว่างเครื่องได้

ประเภทของแอสเซมบลี

ภาษาแอสเซมบลีต้องแปลเป็นภาษาเครื่องโดยใช้แอสเซมเบลอร์แอสเซมเบลอร์มีสองประเภทหลัก

แอสเซมเบลอร์แบบผ่านครั้งเดียวจะสแกนโปรแกรมหนึ่งครั้งและสร้างโปรแกรมไบนารีที่เทียบเท่ากันแอสเซมเบลอร์ประเภทนี้ตรวจสอบรหัสภาษาแอสเซมบลีโดยค้นหาโค้ดในตารางโค้ดช่วยจำแอสเซมเบลอร์แบบ Single-pass มักจะเร็วกว่าแอสเซมเบลอร์แบบมัลติพาส และโดยปกติไม่จำเป็นต้องสร้างโค้ดระดับกลางใดๆ

แอสเซมเบลอร์แบบหลายรอบหมายความว่าแอสเซมเบลอร์ใช้มากกว่าหนึ่งรอบแอสเซมเบลอร์ Multi-pass สร้างตารางที่มีทุกสัญลักษณ์และแต่ละค่าในการส่งผ่านครั้งแรก จากนั้นใช้ตารางในการส่งต่อในอนาคตเพื่อสร้างโค้ดใหม่แต่ละใบที่แยกกันมักจะจัดการงานเฉพาะที่แตกต่างกันแม้ว่าโดยทั่วไปแล้วจะช้ากว่า แต่แอสเซมเบลอร์แบบหลายรอบที่มีโครงสร้างแบบแยกส่วนก็มักจะนำกลับมาใช้ใหม่สำหรับเครื่องจักรต่างๆ

ตัวอย่างรหัสภาษาแอสเซมบลี

ด้านล่างนี้คือตัวอย่างรหัสภาษาแอสเซมบลีของ Netwide Assembler (NASM)

ตัวอย่างรหัสภาษาแอสเซมบลี

มหาวิทยาลัย Loyola Marymount

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

ตัวอย่างของภาษาแอสเซมบลีคืออะไร?

ภาษาแอสเซมบลีที่ใช้บ่อยที่สุด ได้แก่ ARM, MIPS และ x86

C ++ เป็นภาษาแอสเซมบลีหรือไม่?

C ++ ไม่ประกอบด้วยรหัสแอสเซมบลีภาษาคอมพิวเตอร์ C++ ประกอบด้วยรหัส C++ ซึ่งคอมไพเลอร์แปลเป็นรหัสเครื่องที่ปฏิบัติการได้

Python เป็นภาษาแอสเซมบลีหรือไม่?

Python นั้นล้ำหน้ากว่าภาษาแอสเซมบลีภาษาแอสเซมบลีถือเป็นภาษาระดับต่ำ ในขณะที่ภาษาระดับสูงเช่น C, Java หรือ Python ใช้เลข 0 และ 1 แทนตัวเลข สัญลักษณ์ และตัวย่อ

วันนี้มีการใช้ภาษาแอสเซมบลีอย่างไร?

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

บรรทัดล่าง

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