Microprocessor and Interfacing PIC Code Execution II
Memory Mapped I/O (MMIO) MOVWF 06 W
PIC B0 B1 B2 B3 B4 B5 B6 B7 MOVLWXX MOVWF06
PIC-C Trick: Port-level Control #byte b_port = 6 // mem pointer b_port = 0xff; // drive port b
ข้อดีข้อเสียของ Memory Mapped I/O ไม่ต้องออกแบบคำสั่งเฉพาะสำหรับ I/O MOVWF 06 MOVWF 21 I/O Operation Mem Operation
ข้อดีข้อเสียของ Memory Mapped I/O ลดความซับซ้อนของ CPU ทำให้ราคาถูกลง และ ออกแบบได้ง่าย YESNO
ข้อดีข้อเสียของ Memory Mapped I/O แต่ก็ต้องเสียตำแหน่งใน Memory ไป บางส่วน 128 Bytes I/O Mapped 240 Bytes Available RAM
3 GB?? 4 GB?? The 3 Gig not 4 Gig RAM Problem 32 bit
The 3 Gig not 4 Gig RAM Problem ~1 GB 3 GB Address Space Video Card BIOS PCI Bus RAM (4 GB)
ข้อดีข้อเสียของ Memory Mapped I/O ถ้า Memory และ I/O ใช้ data bus เดียวกัน อาจทำ ให้ Memory Access ช้าลง MOVWF 06 MOVWF 21 Slow I/O Operation Fast Mem Operation
Port Mapped I/O (PMIO) มี I/O Bus แยกจาก Memory Bus ใช้คำสั่งแยกกัน
Machine Code Generation Methods
Options Write Machine Code Write Assembly Code Use a High-Level Compiler
Writing Machine Code ENIAC
Drawbacks of High-Level Compilers Poor optimization Non-Optimal Hardware Utilization
Poor Optimazation while (1) { output_b(i); 001A: BSF B: CLRF C: BCF D: MOVF 21,W 001E: MOVWF 06
Poor Optimization Ex int i; i = 5; 000D: MOVLW E: BCF F: MOVWF do { i--; 0010: DECF 21,F } while (i>0); 0011: MOVF 21,F 0012: BTFSS : GOTO 010
Non-Optimal HW Utilization Equivalent Program in ASM BCF 03.5 MOVF 0x21,W MOVWF 06 RLF 0x21, F GOTO 0x1A RLF
File Register Map
Status Register (Address 03)