|
|
|
|
วิธีการเข้าถึงข้อมูล
(Addressing Mode) |
|
|
|
|
|
มีวิธีกาารเข้าถึงข้อมูลอยู่ 5 วิธีดังนี้คือ |
|
|
1). |
การอ้างแอดเดรสของหน่วยความจำแบบทันทีทันใด |
(Immediate Addressing mode) |
2). |
การอ้างแอดเดรสของหน่วยความจำแบบโดยตรง |
(Direct Addressing mode) |
3). |
การอ้างแอดเดรสของหน่วยความจำแบบรีจิสเตอร์ |
(Register Addressing mode) |
4). |
การอ้างแอดเดรสของหน่วยความจำแบบโดยอ้อม |
(Indirect Addressing mode) |
5). |
การอ้างแอดเดรสของหน่วยความจำแบบฐานแอดเดรส |
(Index Addressing mode) |
|
|
|
|
|
1). |
การอ้างแอดเดรสของหน่วยความจำแบบทันทีทันใด
(Immediate Addressing mode) |
|
|
คือ การนำข้อมูลที่เป็นค่าคงที่ไปเก็บไว้ในรีจิสเตอร์ หรือเก็บไว้ในหน่วยความจำภายใน
โดยใช้เครื่องหมาย "#" ไว้หน้าค่าคงที่นั้นตัวอย่างเช่น
|
|
|
MOV |
X,#n |
;X=ตำแหน่งในหน่วยความจำ หรือรีจิสเตอร์ , n คือค่าคงที่ 8 bit |
|
|
|
MOV |
A,#0FFH |
;นำค่า FFH เก็บไว้ที่รีจีสเตอร์ A |
MOV |
R0,#0A3H |
;นำค่า A3H เก็บไว้ที่รีจีสเตอร์ R0 |
MOV |
P1,#11H |
;นำค่า 11H เก็บไว้ที่พอร์ต P1 |
MOV |
20H,#35H |
;นำค่า 35H เก็บไว้ที่หน่วยความจำตำแหน่งแอดเดรส 20H |
|
|
|
|
|
|
|
|
2). |
การอ้างแอดเดรสของหน่วยความจำแบบโดยตรง
(Direct Addressing mode) |
|
|
คือการอ้างถึงข้อมูลโดยระบุตำแหน่งแอดเดรสของหน่วยความจำโดยตรง ตัวอย่างเช่น
|
|
|
|
|
|
MOV |
A,20H |
;การนำข้อมูลในหน่วยความจำตำแหน่งแอดเดรส 20H ไปเก็บไว้ที่รีจิสเตอร์
A |
MOV |
25H,01H |
;การนำข้อมูลในหน่วยความจำตำแหน่งแอดเดรส 01H(R1) ไปเก็บไว้ที่ ที่หน่วยความจำตำแหน่งแอดเดรส
30H |
|
|
|
|
|
|
|
|
|
|
|
3). |
การอ้างแอดเดรสของหน่วยความจำแบบรีจิสเตอร์
(Register Addressing mode) |
|
|
คือการอ้างถึงข้อมูลโดยระบุตำแหน่งแอดเดรสของหน่วยความจำรีจิสเตอร์
R0-R7 ตัวอย่างเช่น |
|
|
|
|
|
MOV |
A,Rn |
;Rn = R0-R7 |
|
|
|
MOV |
A,R4 |
;การนำข้อมูลในรีจิสเตอร์ R4 ไปเก็บไว้ที่รีจิสเตอร์ A |
|
|
|
|
|
|
|
|
|
|
|
4). |
การอ้างแอดเดรสของหน่วยความจำแบบโดยอ้อม
(Indirect Addressing mode) |
|
|
การอ้างถึงข้อมูลแบบทางอ้อมโดยระบุตำแหน่งของแอดเดรสผ่านรีจิสเตอร์ R0 และ
R1 โดยมีเครื่องหมาย "@" นำหน้า R0 หรือ R1 (ใช้ได้เฉพาะรีจิสเตอร์
R0 และ R1 เท่านั้น) ตัวอย่างเช่น
|
|
|
|
|
|
MOV |
A,@Ri |
;Ri = R0-R1 |
|
|
|
MOV |
R0,#20H |
;่ก่อนอื่นต้องกำหนดค่าให้ R0 ก่อน โดยนำค่าแอดเดรส 20H
เก็บไว้ที่รีจีสเตอร์ R0 |
MOV |
A,@R0 |
;นำค่าข้อมูลที่อยู่ในตำแหน่งแอดเดรสที่ชี้โดย R0 ( R0 มีค่าเท่ากับ
20H) |
|
|
;นำไปเก็บไว้ที่รีจิสเตอร์ A |
|
|
|
|
|
|
|
|
5). |
การอ้างแอดเดรสของหน่วยความจำแบบอินเด็กซ์
(Index Addressing mode) |
|
|
การอ้างถึงข้อมูล โดยผ่านรีจิสเตอร์ที่กำหนดให้เป็นดัชนีชี้ต่ำแหน่งข้อมูล
DPTR (Data pointer) ซึ่งเป็น register 16 bit เรียกว่าอินเด็กซ์ |
|
|
|
|
|
|
|
|
หน่วยความจำโปรแกรม (Code Memory) |
|
MOVC |
A,@A+DPTR |
;นำค่าข้อมูลที่อยู่ที่ตำแหน่ง (A+DPTR) มาเก็บไว้ที่
A |
|
MOVC |
A,@A+PC |
;นำค่าข้อมูลที่อยู่ที่ตำแหน่ง (A+PC) มาเก็บไว้ที่ A |
|
|
|
|
หน่วยความจำข้อมูลภายนอก (External
RAM) |
|
MOVX |
@DPTR,A |
;นำค่าข้อมูลจาก A ไปเก็บไว้ที่ หน่วยความจำข้อมูลภายนอกที่ชี้โดย
DPTR |
|
MOVX |
A,@DPTR |
;นำค่าข้อมูลจากหน่วยความจำข้อมูลภายนอกที่ชี้โดย DPTR มาเก็บไว้ที่
A |
|
|
|
|
|
|
|
|
|
|
์NOTE |
|
|
- คำสัง MOVX ใช้สำหรับเมื่อมีการเพิ่มหน่วยความจำ RAM ภายนอกเท่านั้น |
|
|
|
|