Lab
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.5) คำสั่ง cla คืออะไร และจัดเก็บที่ location เท่าไรของหน่วยความจำ 2.6) คำสั่ง tad คืออะไร และจัดเก็บที่ location เท่าไรของหน่วยความจำ และส่วน operand อ้างถึง location เท่าไรของหน่วยความจำ
เราสามารถเริ่มคำสั่งแรกที่ 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 Phaze I : Fetch PC = PC = AC = AC = IR = MAR = MDR = Phaze II : Execute 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 I : Fetch PC = AC = IR = MAR = MDR = Phaze II : Execute PC = AC = IR = MAR = MDR =
Homework ให้เขียนโค๊ดของ pdp8 เพื่อคำนวณ 2110+1010-810