ไมโครโปรเซสเซอร์ - หน่วยการทำงาน 8086
8086 ไมโครโปรเซสเซอร์แบ่งออกเป็นสองหน่วยการทำงานคือ EU (Execution Unit) และ BIU (หน่วยเชื่อมต่อบัส)
EU (หน่วยปฏิบัติการ)
หน่วยปฏิบัติการจะให้คำแนะนำแก่ BIU โดยระบุว่าจะดึงข้อมูลจากที่ใดจากนั้นถอดรหัสและดำเนินการตามคำสั่งเหล่านั้น หน้าที่ของมันคือการควบคุมการดำเนินการกับข้อมูลโดยใช้ตัวถอดรหัสคำสั่งและ ALU สหภาพยุโรปไม่มีการเชื่อมต่อโดยตรงกับบัสระบบดังที่แสดงในรูปด้านบนโดยดำเนินการกับข้อมูลผ่าน BIU
ตอนนี้ให้เราพูดถึงส่วนการทำงานของไมโครโปรเซสเซอร์ 8086
ALU
มันจัดการการดำเนินการทางคณิตศาสตร์และตรรกะทั้งหมดเช่น +, -, ×, /, หรือ, และไม่ใช่การดำเนินการ
ธง Register
เป็นรีจิสเตอร์ 16 บิตที่ทำหน้าที่เหมือนฟลิปฟล็อปกล่าวคือเปลี่ยนสถานะตามผลลัพธ์ที่เก็บไว้ในแอคคูมูเลเตอร์ มี 9 แฟล็กและแบ่งออกเป็น 2 กลุ่ม - Conditional Flags และ Control Flags
ธงตามเงื่อนไข
แสดงถึงผลลัพธ์ของคำสั่งทางคณิตศาสตร์หรือตรรกะสุดท้ายที่ดำเนินการ ต่อไปนี้เป็นรายการแฟล็กเงื่อนไข -
Carry flag - แฟล็กนี้บ่งบอกถึงสภาวะล้นสำหรับการคำนวณทางคณิตศาสตร์
Auxiliary flag- เมื่อดำเนินการที่ ALU จะส่งผลให้มีการพกพา / รถเข็นจากการแทะล่าง (เช่น D0 - D3) ไปยังการแทะบน (เช่น D4 - D7) จากนั้นจึงตั้งค่าแฟล็กนี้กล่าวคือดำเนินการโดยบิต D3 ถึง D4 คือ ธง AF โปรเซสเซอร์ใช้แฟล็กนี้เพื่อทำการแปลงไบนารีเป็น BCD
Parity flag- แฟล็กนี้ใช้เพื่อระบุความเท่าเทียมกันของผลลัพธ์กล่าวคือเมื่อลำดับที่ต่ำกว่า 8 บิตของผลลัพธ์มีจำนวนเท่ากันของ 1 ค่าสถานะพาริตีจะถูกตั้งค่า สำหรับเลขคี่ของ 1 ค่าสถานะพาริตีจะถูกรีเซ็ต
Zero flag - แฟล็กนี้ถูกตั้งค่าเป็น 1 เมื่อผลลัพธ์ของการดำเนินการทางคณิตศาสตร์หรือตรรกะเป็นศูนย์อื่น ๆ จะถูกตั้งค่าเป็น 0
Sign flag - แฟล็กนี้ถือสัญลักษณ์ของผลลัพธ์กล่าวคือเมื่อผลลัพธ์ของการดำเนินการเป็นลบจากนั้นแฟล็กเครื่องหมายจะถูกตั้งค่าเป็น 1 else ตั้งค่าเป็น 0
Overflow flag - แฟล็กนี้แสดงถึงผลลัพธ์เมื่อเกินความจุของระบบ
ธงควบคุม
แฟล็กควบคุมควบคุมการดำเนินการของหน่วยปฏิบัติการ ต่อไปนี้เป็นรายการแฟล็กควบคุม -
Trap flag- ใช้สำหรับการควบคุมขั้นตอนเดียวและอนุญาตให้ผู้ใช้ดำเนินการทีละคำสั่งสำหรับการดีบัก หากมีการตั้งค่าโปรแกรมจะสามารถทำงานได้ในโหมดขั้นตอนเดียว
Interrupt flag- มันเป็นแฟล็กเปิด / ปิดการขัดจังหวะเช่นใช้เพื่ออนุญาต / ห้ามการหยุดชะงักของโปรแกรม ตั้งค่าเป็น 1 สำหรับเงื่อนไขที่เปิดใช้งานการขัดจังหวะและตั้งค่าเป็น 0 สำหรับเงื่อนไขที่ปิดใช้งานการขัดจังหวะ
Direction flag- ใช้ในการทำงานของสตริง ตามชื่อที่แนะนำเมื่อมีการตั้งค่าไบต์สตริงจะถูกเข้าถึงจากที่อยู่หน่วยความจำที่สูงกว่าไปยังที่อยู่หน่วยความจำที่ต่ำกว่าและในทางกลับกัน
ลงทะเบียนวัตถุประสงค์ทั่วไป
มีการลงทะเบียนสำหรับวัตถุประสงค์ทั่วไป 8 รายการ ได้แก่ AH, AL, BH, BL, CH, CL, DH และ DL การลงทะเบียนเหล่านี้สามารถใช้แยกกันเพื่อจัดเก็บข้อมูล 8 บิตและสามารถใช้เป็นคู่เพื่อจัดเก็บข้อมูล 16 บิต คู่ลงทะเบียนที่ถูกต้องคือ AH และ AL, BH และ BL, CH และ CL และ DH และ DL เรียกว่า AX, BX, CX และ DX ตามลำดับ
AX register- เรียกอีกอย่างว่าการลงทะเบียนสะสม ใช้เพื่อจัดเก็บตัวถูกดำเนินการสำหรับการคำนวณทางคณิตศาสตร์
BX register- ใช้เป็นทะเบียนฐาน ใช้เพื่อจัดเก็บที่อยู่ฐานเริ่มต้นของพื้นที่หน่วยความจำภายในส่วนข้อมูล
CX register- เรียกว่าเคาน์เตอร์ ใช้ในคำสั่งลูปเพื่อเก็บตัวนับลูป
DX register - รีจิสเตอร์นี้ใช้เพื่อเก็บที่อยู่พอร์ต I / O สำหรับคำสั่ง I / O
ตัวชี้สแต็กลงทะเบียน
เป็นรีจิสเตอร์ 16 บิตซึ่งเก็บแอดเดรสตั้งแต่จุดเริ่มต้นของเซ็กเมนต์ไปจนถึงตำแหน่งหน่วยความจำซึ่งคำที่เก็บไว้ล่าสุดบนสแต็ก
BIU (บัสอินเตอร์เฟสยูนิต)
BIU ดูแลการถ่ายโอนข้อมูลและที่อยู่ทั้งหมดบนรถประจำทางสำหรับสหภาพยุโรปเช่นการส่งที่อยู่การดึงคำแนะนำจากหน่วยความจำการอ่านข้อมูลจากพอร์ตและหน่วยความจำตลอดจนการเขียนข้อมูลไปยังพอร์ตและหน่วยความจำ EU ไม่มีทิศทางการเชื่อมต่อกับ System Buses ดังนั้นจึงเป็นไปได้กับ BIU EU และ BIU เชื่อมต่อกับ Internal Bus
มีส่วนการทำงานดังต่อไปนี้ -
Instruction queue- BIU มีคิวการเรียนการสอน BIU รับคำสั่งถัดไปไม่เกิน 6 ไบต์และเก็บไว้ในคิวคำสั่ง เมื่อ EU ดำเนินการตามคำสั่งและพร้อมสำหรับคำสั่งถัดไปก็จะอ่านคำสั่งจากคิวคำสั่งนี้ซึ่งส่งผลให้ความเร็วในการดำเนินการเพิ่มขึ้น
เรียกคำสั่งถัดไปในขณะที่เรียกใช้คำสั่งปัจจุบัน pipelining.
Segment register- BIU มีรถประจำทาง 4 ส่วน ได้แก่ CS, DS, SS & ES มันเก็บที่อยู่ของคำสั่งและข้อมูลในหน่วยความจำซึ่งโปรเซสเซอร์ใช้เพื่อเข้าถึงตำแหน่งหน่วยความจำ นอกจากนี้ยังมี 1 ตัวชี้ลงทะเบียน IP ซึ่งเก็บที่อยู่ของคำสั่งถัดไปที่จะดำเนินการโดยสหภาพยุโรป
CS- ย่อมาจาก Code Segment ใช้สำหรับระบุตำแหน่งหน่วยความจำในส่วนรหัสของหน่วยความจำที่เก็บโปรแกรมปฏิบัติการไว้
DS- ย่อมาจาก Data Segment ประกอบด้วยข้อมูลที่ใช้โดยโปรแกรมและเข้าถึงได้ในส่วนข้อมูลโดยที่อยู่ออฟเซ็ตหรือเนื้อหาของรีจิสเตอร์อื่นที่มีที่อยู่ออฟเซ็ต
SS- ย่อมาจาก Stack Segment จัดการหน่วยความจำเพื่อจัดเก็บข้อมูลและที่อยู่ระหว่างการดำเนินการ
ES- ย่อมาจาก Extra Segment ES เป็นส่วนข้อมูลเพิ่มเติมซึ่งใช้โดยสตริงเพื่อเก็บข้อมูลปลายทางเพิ่มเติม
Instruction pointer - เป็นรีจิสเตอร์ 16 บิตที่ใช้เพื่อเก็บแอดเดรสของคำสั่งถัดไปที่จะดำเนินการ