การประกอบ - บทนำ
ภาษาแอสเซมบลีคืออะไร?
คอมพิวเตอร์ส่วนบุคคลแต่ละเครื่องมีไมโครโปรเซสเซอร์ที่จัดการกิจกรรมทางคณิตศาสตร์ตรรกะและการควบคุมของคอมพิวเตอร์
โปรเซสเซอร์แต่ละตระกูลมีชุดคำสั่งของตัวเองสำหรับจัดการการทำงานต่างๆเช่นการรับอินพุตจากคีย์บอร์ดการแสดงข้อมูลบนหน้าจอและการทำงานอื่น ๆ ชุดคำสั่งเหล่านี้เรียกว่า 'คำแนะนำภาษาเครื่อง'
โปรเซสเซอร์เข้าใจเฉพาะคำแนะนำภาษาเครื่องซึ่งเป็นสตริงของ 1 และ 0 อย่างไรก็ตามภาษาเครื่องคลุมเครือและซับซ้อนเกินไปสำหรับใช้ในการพัฒนาซอฟต์แวร์ ดังนั้นภาษาแอสเซมบลีระดับต่ำจึงได้รับการออกแบบมาสำหรับตระกูลโปรเซสเซอร์เฉพาะที่แสดงถึงคำสั่งต่างๆในรหัสสัญลักษณ์และรูปแบบที่เข้าใจได้ง่ายขึ้น
ข้อดีของภาษาแอสเซมบลี
การมีความเข้าใจในภาษาแอสเซมบลีทำให้ตระหนักถึง -
- โปรแกรมเชื่อมต่อกับระบบปฏิบัติการโปรเซสเซอร์และ BIOS อย่างไร
- วิธีแสดงข้อมูลในหน่วยความจำและอุปกรณ์ภายนอกอื่น ๆ
- โปรเซสเซอร์เข้าถึงและดำเนินการคำสั่งอย่างไร
- คำแนะนำเข้าถึงและประมวลผลข้อมูลอย่างไร
- โปรแกรมเข้าถึงอุปกรณ์ภายนอกอย่างไร
ข้อดีอื่น ๆ ของการใช้ภาษาแอสเซมบลีคือ -
ต้องใช้หน่วยความจำและเวลาดำเนินการน้อยลง
ช่วยให้งานที่ซับซ้อนเฉพาะฮาร์ดแวร์ทำได้ง่ายขึ้น
เหมาะสำหรับงานที่มีเวลาสำคัญ
เหมาะที่สุดสำหรับการเขียนรูทีนเซอร์วิสขัดจังหวะและโปรแกรมอื่น ๆ ที่อาศัยอยู่
คุณสมบัติพื้นฐานของฮาร์ดแวร์พีซี
ฮาร์ดแวร์ภายในหลักของพีซีประกอบด้วยโปรเซสเซอร์หน่วยความจำและรีจิสเตอร์ รีจิสเตอร์คือส่วนประกอบของโปรเซสเซอร์ที่เก็บข้อมูลและแอดเดรส ในการดำเนินการโปรแกรมระบบจะคัดลอกจากอุปกรณ์ภายนอกไปยังหน่วยความจำภายใน โปรเซสเซอร์ดำเนินการตามคำสั่งของโปรแกรม
หน่วยพื้นฐานของการจัดเก็บคอมพิวเตอร์เป็นบิต อาจเป็น ON (1) หรือ OFF (0) และกลุ่มของ 8 บิตที่เกี่ยวข้องจะสร้างไบต์ในคอมพิวเตอร์สมัยใหม่ส่วนใหญ่
ดังนั้นจึงใช้พาริตีบิตเพื่อสร้างจำนวนบิตเป็นไบต์คี่ หากความเท่าเทียมกันระบบจะถือว่ามีข้อผิดพลาดเกี่ยวกับพาริตี (แม้ว่าจะเกิดขึ้นน้อยมาก) ซึ่งอาจเกิดจากความผิดพลาดของฮาร์ดแวร์หรือการรบกวนทางไฟฟ้า
โปรเซสเซอร์รองรับขนาดข้อมูลต่อไปนี้ -
- Word: รายการข้อมูล 2 ไบต์
- Doubleword: รายการข้อมูล 4 ไบต์ (32 บิต)
- Quadword: รายการข้อมูล 8 ไบต์ (64 บิต)
- ย่อหน้า: พื้นที่ 16 ไบต์ (128 บิต)
- กิโลไบต์: 1024 ไบต์
- เมกะไบต์: 1,048,576 ไบต์
ระบบเลขฐานสอง
ระบบตัวเลขทุกระบบใช้สัญกรณ์ตำแหน่งกล่าวคือแต่ละตำแหน่งที่เขียนตัวเลขจะมีค่าตำแหน่งต่างกัน แต่ละตำแหน่งคือพลังของฐานซึ่งก็คือ 2 สำหรับระบบเลขฐานสองและพลังเหล่านี้เริ่มต้นที่ 0 และเพิ่มขึ้น 1
ตารางต่อไปนี้แสดงค่าตำแหน่งสำหรับเลขฐานสอง 8 บิตโดยที่บิตทั้งหมดถูกตั้งค่าเป็น ON
ค่าบิต | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
---|---|---|---|---|---|---|---|---|
ค่าตำแหน่งเป็นกำลังของฐาน 2 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
หมายเลขบิต | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
ค่าของเลขฐานสองขึ้นอยู่กับการมีอยู่ของ 1 บิตและค่าตำแหน่ง ดังนั้นค่าของเลขฐานสองที่ระบุคือ -
1 + 2 + 4 + 8 +16 + 32 + 64 + 128 = 255
ซึ่งเหมือนกับ 2 8 - 1
ระบบเลขฐานสิบหก
ระบบเลขฐานสิบหกใช้ฐาน 16 ตัวเลขในระบบนี้มีตั้งแต่ 0 ถึง 15 ตามแบบแผนตัวอักษร A ถึง F ใช้แทนเลขฐานสิบหกที่สอดคล้องกับค่าทศนิยม 10 ถึง 15
เลขฐานสิบหกในการคำนวณใช้สำหรับการย่อการแทนค่าไบนารีที่มีความยาว โดยทั่วไประบบเลขฐานสิบหกจะแสดงข้อมูลไบนารีโดยการหารแต่ละไบต์เป็นครึ่งหนึ่งและแสดงค่าของแต่ละครึ่งไบต์ ตารางต่อไปนี้แสดงการเทียบเท่าทศนิยมไบนารีและเลขฐานสิบหก -
เลขฐานสิบ | การแทนค่าไบนารี | การแสดงเลขฐานสิบหก |
---|---|---|
0 | 0 | 0 |
1 | 1 | 1 |
2 | 10 | 2 |
3 | 11 | 3 |
4 | 100 | 4 |
5 | 101 | 5 |
6 | 110 | 6 |
7 | 111 | 7 |
8 | 1,000 | 8 |
9 | 1001 | 9 |
10 | 1010 | ก |
11 | 1011 | ข |
12 | 1100 | ค |
13 | 1101 | ง |
14 | 1110 | จ |
15 | 1111 | ฉ |
ในการแปลงเลขฐานสองให้เทียบเท่าเลขฐานสิบหกให้แบ่งออกเป็นกลุ่ม 4 กลุ่มต่อเนื่องกันโดยเริ่มจากด้านขวาและเขียนกลุ่มเหล่านั้นทับตัวเลขที่สอดคล้องกันของเลขฐานสิบหก
Example - เลขฐานสอง 1000 1100 1101 0001 เทียบเท่ากับเลขฐานสิบหก - 8CD1
ในการแปลงเลขฐานสิบหกเป็นเลขฐานสองเพียงแค่เขียนเลขฐานสิบหกแต่ละหลักลงในเลขฐานสองที่เทียบเท่ากัน 4 หลัก
Example - เลขฐานสิบหก FAD8 เทียบเท่ากับเลขฐานสอง - 1111 1010 1101 1000
เลขคณิตไบนารี
ตารางต่อไปนี้แสดงกฎง่ายๆสี่ข้อสำหรับการบวกไบนารี -
(ผม) | (ii) | (สาม) | (iv) |
---|---|---|---|
1 | |||
0 | 1 | 1 | 1 |
+0 | +0 | +1 | +1 |
= 0 | = 1 | = 10 | = 11 |
กฎ (iii) และ (iv) แสดงการพก 1 บิตในตำแหน่งซ้ายถัดไป
Example
ทศนิยม | ไบนารี่ |
---|---|
60 | 00111100 |
+42 | 00101010 |
102 | 01100110 |
ค่าไบนารีที่เป็นลบจะแสดงเป็น two's complement notation. ตามกฎนี้การแปลงเลขฐานสองเพื่อค่าลบของมันคือการกลับค่าบิตและเพิ่ม 1
Example
หมายเลข 53 | 00110101 |
ย้อนกลับบิต | 11001010 |
เพิ่ม 1 | 0000000 1 |
หมายเลข -53 | 11001011 |
ลบค่าหนึ่งจากอีกแปลงหมายเลขที่ถูกหักออกไปเป็นรูปแบบที่สมบูรณ์สองและเพิ่มตัวเลข
Example
ลบ 42 จาก 53
หมายเลข 53 | 00110101 |
หมายเลข 42 | 00101010 |
ย้อนกลับบิตของ 42 | 11010101 |
เพิ่ม 1 | 0000000 1 |
หมายเลข -42 | 11010110 |
53 - 42 = 11 | 00001011 |
ส่วนเกินของ 1 บิตสุดท้ายจะหายไป
การกำหนดแอดเดรสข้อมูลในหน่วยความจำ
กระบวนการที่โปรเซสเซอร์ควบคุมการดำเนินการตามคำสั่งเรียกว่า fetch-decode-execute cycle หรือ execution cycle. ประกอบด้วยสามขั้นตอนต่อเนื่อง -
- ดึงคำสั่งจากหน่วยความจำ
- การถอดรหัสหรือระบุคำสั่ง
- ดำเนินการตามคำสั่ง
โปรเซสเซอร์อาจเข้าถึงหน่วยความจำได้ครั้งละหนึ่งไบต์ ให้เราพิจารณาเลขฐานสิบหก 0725H ตัวเลขนี้จะต้องใช้หน่วยความจำสองไบต์ ไบต์ลำดับสูงหรือไบต์ที่สำคัญที่สุดคือ 07 และไบต์ลำดับต่ำคือ 25
โปรเซสเซอร์จัดเก็บข้อมูลในลำดับไบต์ย้อนกลับกล่าวคือไบต์ลำดับต่ำจะถูกเก็บไว้ในแอดเดรสหน่วยความจำต่ำและไบต์ลำดับสูงในแอดเดรสหน่วยความจำสูง ดังนั้นหากโปรเซสเซอร์นำค่า 0725H จากรีจิสเตอร์ไปยังหน่วยความจำมันจะโอน 25 อันดับแรกไปยังที่อยู่หน่วยความจำล่างและ 07 ไปยังที่อยู่หน่วยความจำถัดไป
x: ที่อยู่หน่วยความจำ
เมื่อโปรเซสเซอร์ได้รับข้อมูลตัวเลขจากหน่วยความจำเพื่อรีจิสเตอร์ข้อมูลจะกลับไบต์อีกครั้ง ที่อยู่หน่วยความจำมีสองประเภท -
ที่อยู่สัมบูรณ์ - การอ้างอิงโดยตรงของตำแหน่งเฉพาะ
ที่อยู่เซ็กเมนต์ (หรือออฟเซ็ต) - ที่อยู่เริ่มต้นของเซ็กเมนต์หน่วยความจำที่มีค่าออฟเซ็ต