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

ตัวเลข.png

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

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

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

เราจะใช้แอสเซมเบลอร์ในไอทีที่ไหน?

คอมพิวเตอร์แต่ละเครื่องมีโปรเซสเซอร์ที่ดำเนินการทางคณิตศาสตร์ตรรกะและกิจกรรมการควบคุมของคอมพิวเตอร์

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

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

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

  • เราต้องควบคุมขั้นตอนของโปรแกรมของเราอย่างระมัดระวัง จนถึงระดับไบต์และแม้แต่บิต
  • เราจำเป็นต้องเขียนรูทีนย่อยสำหรับฟังก์ชันที่ไม่ได้จัดเตรียมโดยภาษาโปรแกรมสัญลักษณ์อื่นๆ เช่น COBOL, Java หรือ C

นี่คือวิธีการทำงานของแอสเซมเบลอร์

  • คอมพิวเตอร์มาพร้อมกับชุดคำสั่งพื้นฐานเฉพาะที่สอดคล้องกับการทำงานพื้นฐานที่คอมพิวเตอร์สามารถทำได้ ตัวอย่างเช่นคำสั่ง“ Load” ทำให้โปรเซสเซอร์ย้ายชุดบิตจากตำแหน่งในหน่วยความจำของโปรเซสเซอร์ไปยังที่เก็บพิเศษที่เรียกว่ารีจิสเตอร์
  • โปรแกรมเมอร์สามารถเขียนโปรแกรมโดยใช้คำสั่งแอสเซมเบลอร์เหล่านี้
  • ลำดับของคำสั่งแอสเซมเบลอร์นี้เรียกว่า รหัสแหล่งที่มา หรือโปรแกรมต้นทางจะถูกระบุไว้ในโปรแกรมแอสเซมเบลอร์เมื่อเราเริ่มโปรแกรม
  • โปรแกรมแอสเซมเบลอร์รับแต่ละคำสั่งของโปรแกรมในโปรแกรมต้นทางและสร้างสตรีมบิตหรือรูปแบบที่สอดคล้องกัน (ชุดของศูนย์และชุดที่มีความยาวที่กำหนด)
  • เอาต์พุตของโปรแกรมแอสเซมเบลอร์เรียกว่าอ็อบเจ็กต์โค้ดหรือโปรแกรมอ็อบเจ็กต์ตามโปรแกรมอินพุตซอร์ส ชุดของศูนย์และชุดที่ประกอบขึ้นเป็นโปรแกรมวัตถุเรียกอีกอย่างว่ารหัสเครื่อง
  • จากนั้นเราสามารถรันโปรแกรมออบเจ็กต์ได้ตลอดเวลา

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

  • คำแนะนำเครื่อง
  • คำแนะนำสำหรับแอสเซมเบลอร์
  • คำแนะนำมาโคร

เราจะใช้รหัสประกอบได้อย่างไร

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

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

  • MOV - ย้ายข้อมูลจากที่หนึ่งไปยังอีกที่หนึ่ง
  • เพิ่ม - เพิ่มสองค่าเข้าด้วยกัน
  • SUB - ลบค่าหนึ่งออกจากค่าอื่น
  • PUSH - พุชข้อมูลไปยังสแต็ก
  • POP - ข้อมูลป๊อปจากสแต็ก
  • JMP - ข้ามไปยังตำแหน่งอื่น
  • INT - ขัดจังหวะกระบวนการ

เราสามารถใช้รหัสแอสเซมเบลอร์ต่อไปนี้เพื่อเพิ่มหมายเลข 3 และ 4:

mov eax, 3 - โหลด 3 ลงใน register“ eax”
mov ebx, 4 - โหลด 4 ลงในรีจิสทรี“ ebx”
เพิ่ม eax, ebx, ecx - เพิ่ม "eax" และ "ebx" และเก็บผลลัพธ์ (7) ใน "ecx"

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

ประโยชน์ของภาษาแอสเซมเบลอร์

ความรู้เกี่ยวกับภาษาพื้นฐานนี้ทำให้คุณตระหนักถึงวิธีการ:

  • โปรแกรมทำงานร่วมกับ OS โปรเซสเซอร์และ BIOS
  • ข้อมูลจะปรากฏในหน่วยความจำ
  • โปรเซสเซอร์ประมวลผลคำแนะนำ
  • ข้อมูลคำแนะนำกระบวนการ
  • โปรแกรมสามารถเข้าถึงอุปกรณ์ภายนอกได้

ข้อดีของการใช้ภาษาแอสเซมเบลอร์คือ:

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

เราจำเป็นต้องเรียนรู้ภาษาแอสเซมเบลอร์หรือไม่?

เราควรเรียนรู้ภาษาแอสเซมเบลอร์หรือไม่นั้นขึ้นอยู่กับงานของเรา สำหรับนักพัฒนาส่วนใหญ่คำตอบคือ "ไม่"

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

จากมุมมองในทางปฏิบัติมีวิศวกรและนักวิทยาศาสตร์คอมพิวเตอร์เพียงไม่กี่คนเท่านั้นที่ใช้แอสเซมเบลอร์

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

  • ระบบปฏิบัติการ
  • เฟิร์มแว
  • โปรแกรมอุปกรณ์
  • การออกแบบภาษาโปรแกรม
  • การออกแบบคอมไพเลอร์
  • ระบบฝังตัว.
  • การออกแบบฮาร์ดแวร์
  • ซับซ้อน การอ่านรหัส.
  • วิทยาศาสตร์คอมพิวเตอร์เชิงทฤษฎี

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

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

การสร้างรหัสภาษาแอสเซมบลี

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

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

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

คอมไพเลอร์บางตัวสร้างสองครั้ง: ขั้นแรกสร้างโค้ดใน "ภาษากลาง" เช่น SIL, LLVM IR, HIR, MIR, CIL และอื่นๆ จากนั้นพวกเขาสร้างโค้ด "ของจริง" ในภาษาเป้าหมายที่เราสามารถดำเนินการได้โดยตรง เช่น รหัสเครื่องเสมือน ภาษาแอสเซมเบลอร์ หรือภาษาเครื่อง

เป้าหมายของการสร้างรหัส

นี่คือเป้าหมายสามประการของตัวสร้างโค้ดที่ดี:

  • ควรสร้างรหัสที่ถูกต้อง
  • เครื่องกำเนิดไฟฟ้าควรสร้างรหัสที่มีประสิทธิภาพ
  • ควรสร้างรหัสที่มีประสิทธิภาพ

สิ่งอื่น ๆ ที่ต้องเรียนรู้

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

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

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

  • ภาษาฮาร์ดแวร์เช่น VHDL และ Verilog พร้อมทั้งความเข้าใจเกี่ยวกับไมโครโปรเซสเซอร์และวิศวกรรมไฟฟ้า
  • ภาษาระบบปฏิบัติการระดับต่ำเช่น C และอนุพันธ์: C ++, C # และ D
  • ภาษาโบราณเช่น Fortran และ Cobol.
  • ภาษาของแพลตฟอร์มเช่น Java และ Objective-C
  • อัลกอริทึม

คำแนะนำเทคโนโลยี ITpedia โทรคมนาคมและโครงสร้างพื้นฐาน

แนะนำซอฟต์แวร์ปัญญาประดิษฐ์ ซอฟต์แวร์ปัญญาประดิษฐ์ที่ดีที่สุดที่คุณสามารถหาได้ มากกว่าโซลูชันซอฟต์แวร์ 100 ให้เลือก!

เทคโนโลยี Iolo, LLC หากพีซีของคุณไม่ได้บูตหรือโหลดแอปพลิเคชันในจังหวะเดียวกับที่เคยทำเมื่อคุณแกะกล่องครั้งแรกให้ดาวน์โหลด Iolo System Mechanic 18.7 ยูทิลิตี้การปรับแต่งที่ยอดเยี่ยมนี้ช่วยปรับปรุงประสิทธิภาพพีซีของคุณได้อย่างมากโดยการ defra การฮาร์ดไดรฟ์ซ่อมแซม Registry ที่เป็นปัญหาของ Windows ปรับแต่งการใช้งาน CPU และ RAM แบบเรียลไทม์และอื่น ๆ ด้วยเวอร์ชัน 18.7 Iolo System Mechanic มีเครื่องมือความเป็นส่วนตัวเฉพาะของ Windows 10 เป็นทางเลือกของบรรณาธิการสำหรับแอปพลิเคชันปรับแต่งที่ต้องเสียค่าใช้จ่าย รับส่วนลด 50% สำหรับ Phoenix 360 ของ iolo การปกป้องความเป็นส่วนตัวและประสิทธิภาพโดยรวมสำหรับชีวิตดิจิทัลของคุณ

แนะนำซอฟต์แวร์ระบบปฏิบัติการ ระบบปฏิบัติการคอมพิวเตอร์อันดับต้น ๆ สำหรับธุรกิจ Windows, Linux, Oracle เป็นต้น

การป้องกันความน่าเชื่อถือ - Microsoft Surface Go สำหรับธุรกิจ - Meraki Security และ SD-WAN Cisco Meraki Security Appliances สามารถติดตั้งจากระยะไกลได้ภายในไม่กี่นาทีโดยใช้การจัดเตรียมระบบคลาวด์แบบไม่ต้องสัมผัส การตั้งค่าความปลอดภัยนั้นง่ายต่อการซิงโครไนซ์ข้ามไซต์หลายพันแห่งโดยใช้แม่แบบ เทคโนโลยี VPN อัตโนมัติเชื่อมต่อสาขาอย่างปลอดภัยใน 3 คลิกผ่านแผงควบคุมบนเว็บที่ใช้งานง่าย - การเข้ารหัสอีเมลที่สร้างขึ้นเพื่อความเป็นส่วนตัวและความสอดคล้อง การเข้ารหัสอีเมลที่ง่ายที่สุดในตลาด ส่งอย่างปลอดภัยจาก Microsoft Outlook และแอปพลิเคชันทางการแพทย์มากมาย ชุมชนขับเคลื่อนคุณเป็นผู้ตัดสินว่าเราจะทำอะไรต่อไป!

กลุ่ม LinkedIn

พูดคุยกับเรา LinkedIn.

ประวัติย่อ

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

บทความ

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

ลักษณะ

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

ผู้เขียน

ชื่อผู้เผยแพร่

ITpedia

โลโก้ผู้เผยแพร่โฆษณา

ITpedia