นี่เป็นคำถามสองข้อในหนึ่งข้อ ...
ประการแรกอะไรคือความแตกต่างระหว่างไมโครคอนโทรลเลอร์และไมโครโปรเซสเซอร์?
ไมโครโปรเซสเซอร์เป็นซีพียูที่ทำตามชุดคำสั่งที่อ่านจากบัสหน่วยความจำภายนอก มันควบคุมอุปกรณ์ต่อพ่วงภายนอก (เช่นหน้าจอคีย์บอร์ดเม้าส์ฮาร์ดไดรฟ์ ฯลฯ ) ผ่านทางบัสสื่อสารภายนอก เมื่อคุณตั้งโปรแกรมไมโครโปรเซสเซอร์โปรแกรมของคุณจะอยู่ภายนอกกับอุปกรณ์ ในคอมพิวเตอร์หน่วยความจำนี้เริ่มต้นจากการบูท BIOS ROM ซึ่งเริ่มอ่านระบบปฏิบัติการจากฮาร์ดไดรฟ์ไปยังหน่วยความจำ RAM แล้วเริ่มดำเนินการต่อจากที่นั่น
ไมโครคอนโทรลเลอร์เป็นเหมือน CPU + หน่วยความจำ all-in-one ที่มีพอร์ตภายนอกบางตัวเพื่อสื่อสารกับโลกภายนอก มันมีอยู่ในตัวเองและไม่ได้ใช้หน่วยความจำภายนอกเพื่อเก็บโปรแกรม (แม้ว่าจำเป็นต้องใช้สามารถอ่านและเขียนข้อมูลการทำงานไปยังหน่วยความจำภายนอก)
ประการที่สองคือการเขียนโปรแกรมไมโครคอนโทรลเลอร์และไมโครโปรเซสเซอร์เหมือนกันหรือไม่?
ในบางวิธีใช่และในบางวิธีไม่
ภาษาแอสเซมบลีเป็นคำกว้างที่อธิบายชุดคำสั่งที่ CPU สามารถเข้าใจได้โดยตรง เมื่อคุณรวบรวมภาษาแอสเซมบลี 'มันไม่ได้รวบรวมอะไรจริงๆมันทั้งหมดจะแปลงเป็นลำดับของไบต์ที่แสดงคำสั่งและปลั๊กในบางตำแหน่งหน่วยความจำญาติ นี่เป็นเรื่องปกติสำหรับทั้งไมโครโปรเซสเซอร์และไมโครคอนโทรลเลอร์
อย่างไรก็ตามซีพียูชนิดต่าง ๆ นั้นเข้าใจคำสั่ง CPU ที่แตกต่างกัน ตัวอย่างเช่นถ้าคุณเขียนโปรแกรมภาษาแอสเซมบลีที่ทำงานร่วมกับไมโครคอนโทรลเลอร์ pic 16F877 มันจะไร้สาระสมบูรณ์ไปยังไมโครโปรเซสเซอร์หรือไมโครคอนโทรลเลอร์อื่น ๆ ที่อยู่นอกไมโครคอนโทรลเลอร์ตระกูล pic 16Fxxx
ดังนั้นแม้ว่าแอสเซมบลีจะทำงานในลักษณะเดียวกันกับไมโครโปรเซสเซอร์และไมโครคอนโทรลเลอร์ทั้งหมด แต่รายการคำสั่งจริงที่คุณเขียนแตกต่างกันมาก ในการเขียนด้วยภาษาแอสเซมบลีคุณต้องมีความรู้เชิงลึกเกี่ยวกับสถาปัตยกรรมของอุปกรณ์ซึ่งโดยปกติแล้วคุณจะได้รับจากแผ่นข้อมูลในกรณีของไมโครคอนโทรลเลอร์