140 likes | 328 Views
Lab. Label. แนวคิดเดียวกับการนิยามค่าคงที่หรือการนิยามตัวแปรในภาษาระดับสูง ตำแหน่งต่างๆของหน่วยความจำ เราสามารถนำมาทำ label เพื่อจัดเก็บหรือดึงค่าตามตำแหน่งที่ต้องการ ถ้ามีการอ้างถึง label จะหมายถึงการอ้างถึงตำแหน่งในหน่วยความจำของ label นั้น เช่น *10 count, 0 lim, 14 isz count.
E N D
Label • แนวคิดเดียวกับการนิยามค่าคงที่หรือการนิยามตัวแปรในภาษาระดับสูง • ตำแหน่งต่างๆของหน่วยความจำ เราสามารถนำมาทำ label เพื่อจัดเก็บหรือดึงค่าตามตำแหน่งที่ต้องการ • ถ้ามีการอ้างถึง label จะหมายถึงการอ้างถึงตำแหน่งในหน่วยความจำของ label นั้น เช่น *10 count, 0 lim, 14 isz count
คำถามข้อที่ 1 1.1) label มีอะไรบ้าง 1.2) 0 จัดเก็บที่ location เท่าไรของหน่วยความจำ 1.3) 14 จัดเก็บที่ location เท่าไรของหน่วยความจำ 1.4) isz เป็นคำสั่งอะไร และส่วน operand อ้างถึง location เท่าไรของหน่วยความจำ
Directives • เป็นการบอกตำแหน่งในหน่วยความจำให้กับคอมไพเลอร์ เช่น *0 101 one, 102 two, 103 *200 cla tad one hlt *1000 104 $
คำถามข้อที่ 2 2.1) ค่า 101 จัดเก็บที่ location เท่าไรของหน่วยความจำ 2.2) ค่า 102 จัดเก็บที่ location เท่าไรของหน่วยความจำ 2.3) ค่า 103 จัดเก็บที่ location เท่าไรของหน่วยความจำ 2.4) ค่า 104 จัดเก็บที่ location เท่าไรของหน่วยความจำ 2.5) คำสั่ง cla คืออะไร และจัดเก็บที่ location เท่าไรของหน่วยความจำ 2.6) คำสั่ง tad คืออะไร และจัดเก็บที่ location เท่าไรของหน่วยความจำ และส่วน operand อ้างถึง location เท่าไรของหน่วยความจำ
PDP8 • เมื่อเครื่อง PDP8 เริ่มทำงาน ค่าของ PROGRAM COUNTER จะมีค่าเท่ากับ 200 เสมอ ดังนั้นเราจึงต้องเขียนคำสั่งแรก location ที่ 200 เราสามารถเริ่มคำสั่งแรกที่ location อื่นได้หรือไม่ ? • และทุกครั้งที่เริ่มปฏิบัติงาน รีจีสเตอร์ทุกตัวยกเว้น PC และ location ในหน่วยความจำที่ไม่ได้ถูกอ้างถึงจะถูกกำหนดให้เท่ากับ 0 • ค่าทั้งหมดของเครื่อง PDP8 เป็นเลขฐาน 8
Load example • ตัวอย่างโค้ดของ PDP8 ที่โหลดค่า 5 เข้าสู่ Accumulator เช่น *0 five, 5 // store 5 at pos. 0 with label five *200 cla // clear acc tad five // add the value at label five hlt // halt $
คำถามข้อที่ 3 • 3.1) คำสั่งที่มีการโหลดค่า 5 เข้าสู่ Accumultor คืออะไร • 3.2) ในคำสั่งโหลดนี้รีจีสเตอร์มีค่าใด PC = AC = IR = MAR (ช่วงแรก) = MDR (ช่วงแรก) = MAR (ช่วงที่สอง) = MDR (ช่วงที่สอง) =
Addition • คำนวณการบวก 510+310 และเก็บผลลัพธ์ใน label(ตัวแปร) ชื่อว่า result *0 three, 3 five, 5 result, 0 *200 cla tad five tad three dca result hlt $
คำถามข้อที่ 4 • ให้แสดงชื่อlabel ทั้งหมดพร้อมทั้งระบุค่าของ address และค่าของ content ของแต่ละ label • คำสั่งใดที่เกี่ยวข้องกับการบวก 5+3 โดยตรงมากที่สุด • ก่อนเริ่มทำงาน “dca result” ไปจนกระทั่งจบการทำงาน รีจีสเตอร์ต่อไปนี้มีค่าใด
คำถามข้อที่ 4 • Phaze II : Execute • PC = • AC = • IR = • MAR = • MDR = Phaze I : Fetch PC = AC = IR = MAR = MDR =
subtraction • คำนวณการบวก 510-310 และเก็บผลลัพธ์ใน label(ตัวแปร) ชื่อว่า result *0 three, 3 five, 5 result, 0 *200 Cla tad three cia tad five dca result hlt $
คำถามข้อที่ 5 • อธิบายคำสั่งที่เกี่ยวข้องกับการคำนวณ 5-3 • ก่อนเริ่มทำงาน “dca result” ไปจนกระทั่งจบการทำงาน รีจีสเตอร์ต่อไปนี้มีค่าใด • Phaze II : Execute • PC = • AC = • IR = • MAR = • MDR = Phaze I : Fetch PC = AC = IR = MAR = MDR =
Homework • ให้เขียนโค๊ดของ pdp8 เพื่อคำนวณ 2110+1010-810