รายละเอียดสถาปัตยกรรมชุดคำสั่งสำหรับ Term Project

     กำหนดให้ CPU มี Databus ขนาด 8 บิต (P28:P35) มี Address Bus ขนาด 16 บิต (P39:P60) แบ่งเป็น Program Memory Space (EEPROM) และ Data Memory Space (ใช้ RAM) มี Accumulator (Acc) ขนาด 8 บิต Program Counter (PC) และ Stack Pointer (SP) ขนาด 16 บิต และ Z Flag ซึ่งจะมีค่าเป็น 0 เมื่อข้อมูลใน Acc เป็น 0 หมดทุกบิต ทั้งนี้ให้ SP เป็นแบบ Counter-down นอกจากนี้ยังมี Address และสัญญาณควบคุมของ I/O แยกเป็นอิสระจาก Address และสัญญาณควบคุมของ Memory โดยกำหนดให้ใช้ Port DC3 เป็น Address และ สัญญาณควบคุมที่ต่อพ่วงกับ I/O Board และ Port DC2 เป็น Bidirectional Port* เพื่อสื่อสารข้อมูลกับ I/O Board คำสั่งแต่ละคำสั่งอาจมีขนาด 1,2 หรือ 3 byte(s) ทั้งนี้กำหนดให้ Byte แรกเป็น Opcode และ Byte ถัดมาเป็น Operand (ุถ้ามี)

ลักษณะของ Opcode Byte

7 6 5 4 3 2 1 0
0 Addr . Mode Opcode

กำหนดให้ CPU มี Addressing Mode ทั้งสิ้น 3 แบบ คือ Inherit(IH), Immediate(IM) และ Direct(DI) ดังแสดงในตาราง

Code Mode จำนวน Byte การทำงาน
00 IH 1 ไม่มี Operand ทำงานเฉพาะ
01 IM 2 Operand เป็น Data ขนาด 1 Byte
10 DI 3 Operand เป็น Address ขนาด 2 Byte
11     ไม่มีการใช้งาน

กำหนดให้ CPU มีคำสั่งทั้งสิ้น 9 คำสั่งดังต่อไปนี้

Code คำสั่ง IH IM DI Flag การทำงาน หมายเหตุ
00000 NOP X       ไม่มีการทำงาน  
00001 LDA   X X Z Load ค่าจาก Data Memory มาเก็บใน Acc.  
00010 STA     X   Store ค่าของ Acc. เก็บใน Data Memory  
00011 ADD   X X Z,C Add ค่าจาก Data Mem เข้ากับค่าใน Acc.  
00100 COM X     Z 1'Compliment ค่าใน Acc.  
00101 AND   X X Z And ค่าจาก Data Mem เข้ากับค่าใน Acc.  
00110 ORA   X X Z Or ค่าจาก Data Mem เข้ากับค่าใน Acc.  
00111 LDS     X   นำค่า Address ที่ระบุมาเก็บใน SP  
01000 JMP     X   Unconditional Jump Address ที่ระบุเป็น Program Memory เสมอ
กรณี JSP ให้ Push ค่า PC Low Byte ก่อน High Byte
01001 JPZ     X   Jump if Zero is set
01010 JPC     X   Jump if Carry is set
01011 JSR     X   Jump to Sub Routine
01100 LDP     X Z Load ค่าจาก Program Mem มาเก็บใน Acc
01101 RTS X       Return from Sub Routine  
01110 PSH X       Push ค่าใน Acc. ลง Stack  
01111 POP X       Pop ค่าใน Stack มาเก็บใน Acc.  
10000 OUT     X   Output ค่าใน Acc ออกมาที่ I/O ตาม Address ที่ระบุ  
10001 INP     X Z Input ค่าจาก I/O ตาม Address ที่ระบุมายัง Acc.  

2.  จงเขียนโปรแกรมภาษา Assembly ของ CPU ที่ออกแบบพร้อมแสดงการทดสอบ เพื่อแสดงข้อความ เลขประจำตัวนิสิตออกมายัง 7 Segment ของ I/O Board

3.  จงเขียนโปรแกรมภาษา Assembly ของ CPU ที่ออกแบบพร้อมแสดงการทดสอบ เพื่อแสดงข้อความ “Hello, Word” ออกมายังจอ LCD

4.   จงเขียนโปรแกรมภาษา Assembly ของ CPU ที่ออกแบบพร้อมแสดงการทดสอบ เพื่อทำงานร่วมกับ LCD และ KeyPad ใน I/O Board โดยรับข้อมูลจาก KeyPad และแสดงออกมาเป็นตัวเลข / สัญลักษณ์ # , * บนจอ LCD และเมื่อมีการกดปุ่ม Reset ให้ลบค่าของข้อมูลในจอออกทั้งหมด ทั้งนี้หากข้อมูลที่แสดงเต็มจอแล้วให้ทำการ Clear หน้าจอก่อนเริ่มรับข้อมูลต่อไป

หมายเหตุ