Jenis Pengalamatan Pada MCS51

Pengalamatan
Mode pengalamatan, mengacu bagaimana anda mengalamati suatu lokasi memori tertentu Mode pengalamatan pada set instruksi 8051 adalah ditunjukkan sebagai berikut

Immediate Addressing MOV A,#20h
Direct Addressing MOV A,30h
Indirect Addressing MOV A,@R0
External Direct MOVX A,@DPTR
Code Indirect MOVC A,@A+DPTR

1. Immediate Addressing
Immediate addressing dinamakan seperti ini, karena nilai yang akan disimpan didalam memori, secara langsung berada dalam kode.

      org 0h
start:MOV A,#20h; put constant 20 into Acc
end
Org 0h
Start:MOV 70h,#0h; put constant 0 into RAM 70h
MOV 71h,#1h;
MOV 72h,#2h;
end
;
Org 0h
Start:MOV DPTR,#1234h;put constant 1234 into DPTR
end
 Org 0h
Start:MOV PSW,#0; Select register bank 0
MOV R0,#0; put 0 into register 0
MOV R1,#1; put 1 into register 1
MOV R2,#2; put 2 into register 2
MOV R3,#3; put 3 into register 3
MOV R4,#4; put 4 into register 4
MOV R5,#5; put 5 into register 5
MOV R6,#6; put 6 into register 6
MOV R7,#7; put 7 into register 7
end
;
org 0h
Start:MOV PSW,#8; Select register bank 1
MOV R0,#0; put 0 into register 0
MOV R1,#1; put 1 into register 1
MOV R2,#2; put 2 into register 2
MOV R3,#3; put 3 into register 3
MOV R4,#4; put 4 into register 4
MOV R5,#5; put 5 into register 5
MOV R6,#6; put 6 into register 6
MOV R7,#7; put 7 into register 7
end

Immediate addressing adalah pengalamatan yang sangat cepat karena nilai yang akan diloadkan berada didalam instruksi tersebut.

1.2.2. Direct Addressing
Disebut direct addressing karena nilai yang akan disimpan didalam memori, diperoleh secara langsung dari memori yang lain.

      org 0h
Start:MOV A,30h;
end
      Org 0h
Start:Mov 70h,#1;put constant 1 into RAM 70h
Mov A, 70h;copy RAM 70 content into Acc
Mov A,#0 ;put constant 0 into Acc
Mov 90h,A ;copy Acc content into RAM 90h
end
Inbyte equ 70h
Port1 equ 90h
Org 0h
Start:Mov Inbyte,#3;put constant 3 into RAM 70h
Mov A,Inbyte ;copy RAM 70h content into Acc
Mov A,#0 ;Clear accumulator
Mov Port1,A ;copy Acc content into RAM 90h
end
Org 0h
Mov DPTR,#Character
Start:Mov A, #0
Inc DPTR
Movc A, @A+DPTR
Mov R0,A
Sjmp Start
Character:
DB 0,1,2,3,4,5,6,7,8,9

1.2.3 Indirect Addressing
Indirect addressing adalah mode pengalamatan yang sangat ampuh, yang memberikan fleksibelitas dalam hal transfer data. Indirect addressing juga satu-satunya cara untuk mengakses 128 byte ekstra dari internal RAM yang ditemukan pada keluarga 8052.

MOV A,@R0

Instruksi ini menyebabkan 8051 menganalisa nilai dari register R0. 8051 kemudian akan mengambil data dari akumulator dengan nilai yang berasal dari alamat RAM internal yang ditunjukkan oleh R0. Sebagai contoh, misal R0 akan digunakan untuk menandai alamat RAM 40h yang berisi data 67h. Ketika instruksi diatas, dieksekusi maka 8051 akan melihat nilai dari R0, yang berisi 40h, dan mengirimkan isi RAM 40h (dalam hal ini mempunyai nilai 67h) ke akumulator.

MOV R0,#99h ;
MOV @R0,#01h;

Instruksi tersebut adalah tidak valid. Karena indirect addressing selalu mengacu ke RAM internal, dua instruksi ini akan menulis nilai 01 ke RAM internal alamat 99h pada 8052. Pada 8051 instruksi tersebut akan menghasilkan hasil yang tak terdifinisi, karena 8051 hanya mempunyai internal RAM 128 byte

Org 0h
Start:Mov PSW, #0 ; choose register bank 0
Mov R0, #78h; put constant 78h into R0
Mov @R0, #1 ; put contanta 1 into 78h
end
Org 0h
Start:Mov PSW,#0; pilih register bank 1
Mov R0,90h; copy RAM 90h content into R0
Mov @R0,#1; put constant 1 into 90h
End
;

0 komentar: