kontroler atmega 8535

55
 3-1 MODE PENGALAMATAN-DATA MIKROPROSESOR Oleh: Kelompok : 3 ( tiga )  Nama : 1.Kusendro Harry Wibowo 0608 3032 0205 : 2.Putri Ulan Sari 0608 3032 0209 : 3.Siti Jamilatun 0608 3032 0213 : 4.Yopan 0608 3032 0214 Kelas :4EA POLITEKNIK NEGERI SRIWIJAYA PALEMBANG 2010

Upload: xxroninzz

Post on 12-Apr-2018

347 views

Category:

Documents


10 download

TRANSCRIPT

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 1/55

 

3-1 MODE PENGALAMATAN-DATA

MIKROPROSESOR

Oleh:

Kelompok : 3 ( tiga )

 Nama : 1.Kusendro Harry Wibowo 0608 3032 0205

: 2.Putri Ulan Sari 0608 3032 0209

: 3.Siti Jamilatun 0608 3032 0213

: 4.Yopan 0608 3032 0214

Kelas :4EA

POLITEKNIK NEGERI SRIWIJAYA

PALEMBANG

2010

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 2/55

 

3-1 MODE PENGALAMATAN-DATA

BAB 3

Mode Pengelamatan

PENDAHULUAN

Pengembangan perangkat lunak yang efisien untuk mikroprosesor memerlukan

 penguasaan yang baik mengenai mode pengalamatan yang terdapat pada setiap instruksi.

Dalam bab ini, kita akan menggunakan instruksi MOV (move data) untuk menjelaskan

mode pengalamatan-data. MOV memindahkan byte atau word data di antara register atau

antara register dan memori dalam 8086 sampai 80286, dan byte, word, atau doubleworddalam 80386 dan versi rnikroprosesor di atasnya. Dalam menjelaskan mode

 pengalamatan memori program, kita akan menggunakan instruksi CALL dan JUMP yang

menunjukkan bagaimana mengubah aliran program. Mode pengalamatan-data yang akan

kita bahas di sini mencakup; register, segera, langsung, register tidak langsung, base-plus-

index, register relatif, dan base relatif-plus index dalam mikroprosesor 8086 sampai

80286. 80386 dan versi mikroprosesor di atasnya juga mencakup mode indeks berskala

dan pengalamatan data memori. Mode pengalamatan-memori program mencakup:

 program relatif, langsung, dan tidak langsung. Pengoperasian stack memory dijelaskan

sedemikian rupa sehingga instruksi PUSH dan POP dapat dipahami.

TUJUAN BAB

Setelah menyelesaikan bab mi, Anda diharapkan mampu:

1.  Menjelaskan operasi dan tiap mode pengalamatan-data.

2.  Menggunakan mode pengalamatan-data untuk membentuk pernyataan bahasa rakitan.

3.  Menjelaskan operasi dan tiap mode pengalamatan-memoni program.

4.  Menggunakan mode pengalamatan-mernorj program untuk membentuk pemyataan

 bahasa rakitan (assembly) dan mesin.

5.  Memilih mode pengalamatan yang tepat untuk mencapai tugas yang ditentukan.

6.  Memperinci perbedaan antara pengalamatan data memori dengan menggunakan

operasi mode real dan mode terlindung (protected mode).

7.  Menggambarkan urutan kejadian yang menempatkan data ke dalam stack atau

menghapus data dan stack.

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 3/55

 

3-1 MODE PENGALAMATAN-DATA

8.  Menerangkan bagaimana sebuah struktur data ditempatkan dalam memori dan

digunakan dengan perangkat lunak.

3-1 MODE PENGALAMATAN-DATA

Karena instruksi MOV merupakan instruksi yang umum dan fleksibel, memori

tersebut memberikan dasar untuk menerangkan mode pengalamatan-data. Gambar 3-

1 menggambarkan instruksi MOV dan menentukan arah dan aliran data. Perhatikan

 bahwa sumber terletak di sebelah kanan dan tujuannya di kiri, di samping opcode

MOV dengan sumber dan tujuannya terpisah oleh koma. (Sebuah opcode, atau kode

operasi, menyatakan kepada mikroprosesor tentang operasi yang harus

dilaksanakannya). Arah aliran ini, yang digunakan oleh semua instruksi, pada

mulanya tidak lazim. Kita secara alamiah mengasumsikan bahwa benda-benda

 bergerak dan kin ke kanan, sedangkan di sini berpindah dan kanan ke kin. Perhatikan

 bahwa sebuah koma selalu memisahkan tujuan dan sumber dalam sebuah instruksi.

Juga, perhatikan bahwa pemindahan dari memori-ke-memori tidak diijinkan oleh

instruksi apapun kecuali instruksi MOVS.

Dalam Gambar 3-1, instruksi MOV AX, BX memindahkan isi dan register

sumber (BX) ke dalam register tujuan (AX). Dengan kata lain, instruksi ini menyalin

isi dari register BX ke dalam register AX. Penting untuk dicatat bahwa sumber tidak

 pernah berubah tetapi tujuan hampir selalu berubah. MOV tidak pernah benar-benar

mengambil data dan memindahkannya. Juga, perhatikan bahwa register flag tidak

dipengaruhi oleh sebagian besar instruksi pemindahan data. Sumber dan tujuan sering

disebut sebagai operand.

Gambar 3-2 menggambarkan semua variasi yang mungkin dan mode

 pengalamatan data dengan menggunakan instruksi MOV. Ilustrasi ini membantu kita

melihat bagaimana setiap mode pengalamatan-data dirumuskan dengan instruksi

MOV dan juga berperan sebagai sebuah referensi. Perhatikan bahwa ada mode

 pengalamatan-data yang sama yang ditemukan dengan semua variasi mikroprosesor

Intel, kecuali mode pengalamatani indeks-berskala, yang hanya ditemukan dalam

mikroprosesor 80386 sampai Pentium II. Mode pengalamatan-data yang digunakan

dengan instruksi mi mencakup: P

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 4/55

 

3-1 MODE PENGALAMATAN-DATA

Digunakan untuk memindahkan salman dan byte atau

word register dan register atau lokasi memori sumber ke

dalam register atau lokasi memon tujuan. (Contoh:

instruksi MOV CX,DX ak menyalin isi dan register DX

ke dalam register CX). Dalam rnikroprosesor 80386 dan

versi di atasnya, data doubleword dapat dipindahkan

dan register sumber atau lokasi memori ke register

tujuan atau lokasi memori. (Contoh: instruksi MOV

ECX,EDX akan menyalin isi register EDX ke dalarn

register ECX.)

Pengalamatan Digunakan untuk memindahkan data

yang berukuran byte  segera atau word langsung ke

dalam register tujuan. (Contoh: instruksi MOV

AL,22H menyalin bilangan 22H ke dalam register AL.).

Dalam 80386 dan versi di atasnya, data doubleword

dapat langsung dipindahkan ke dalam sebuah register

atau lokasi memori. (Contoh: instruksi MOV

EBX,12345678H menyalin bilangan 12345678H

langsung ke dalam register 32-bit EBX.)

GAMBAR 3-1  Instruksi MOV yang

menggambarkan sumber, tujuan, dan

aliran data.

Pengecualian yaitu instruksi CMP dan TEST, yang tak pemah mengubah tujuan.

Instruksi ini dijelaskan di bab-bab selanjutnya.

Pengalamatan

Segera

MOV AX, BX

Tujuan Sumber

Pengalamatan

Register

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 5/55

 

3-1 MODE PENGALAMATAN-DATA

Memindahkan byte atau word antara lokasi memori

dan register. Kumpulan instruksi tidak menyediakan

 pemindahan data antara memori-ke-memori, kecuali

 pada instruksi MOVS. (Contoh: instruksi MOV CX,

LIST menyalin isi dan lokasi memori LIST ke dalam

register CX.) Pada mikroprosesor 80386 dan versi di

atasnya, lokasi memori berukuran-doubleword dapat

 juga dilakukan pengalamatan. (Contoh: instruksi MOV

ESI,LIST menyalin sebuah bilangan 32-bit, disimpan

dalam 4  byte memori secara berurutan, dan lokasi

LIST ke dalam register ESI.)

Register Memindahkan byte atau word antara register

dan lokasi memori yang alamatnya ditunjuk oleh suatu

register indeks atau register basis. Register indeks dan

 basis adalah BP, X, DI, dan SI. (Contoh: instruksi

MOV AX,[BX] menyalin data 16- bit dan alamat

offset segmen data yang alamatnya ditunjuk oleh

register BX ke dalam register AX.) Pada 80386 dan

versi di atasnya, data yang berukuran byte, word,

doubleword dipindahkan antara register dan lokasi

memori yang alamatnya ada dalam setiap register:

EAX, EBX, ECX, EDX, EBP, EDI, atau ESI. (Contoh:

instruksi MOV AL,[ECX} mengisi register AL dengan

data yang berasal dari alamat offset segmen yang

alamatnya ada di register ECX).

Memindahkan data yang berukuran byte atau word

antara register dan lokasi memori yang ditunjuk oleh

register basis (BP atau BX) ditambah dengan isi

register indeks (DI atau SI). (Contoh: instruksi MOV

[BX+DIj,CL menyalin isi register CL yang berukuran

 byte ke dalam lokasi memoni segmen data yang

ditunjuk oleh BX ditambah DI.) Pada 80386 dan versi

Pengalamatan

Langsung

Pengalamatan

Tidak Langsung

Pengalamatan

Base-Plus-Indeks

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 6/55

 

3-1 MODE PENGALAMATAN-DATA

di atasnya, setiap register EAX, EBX, ECX, EDX, BP,

EDI. atau ESI dapat dikombinasikan untuk

memperoleh alamat memori. (Contoh: instruksi MOV

EAX+EBX1, CL menyalin isi register CL yang

 berukuran byte ke dalam lokasi memori segmen data

yang ditunjuk oleh EAX ditarnbah EBX).

Memindahkan data yang berukuran byte atau word

antara register dan lokasi memori yang ditunjuk oleh

suatu register indeks atau basis ditambah displacement.

(Contoh: MOV AX,[BX+4j atau MOV AX, ARRAY

[BX]. Instruksi pertama mengisi AX dengan data yang

alamat segmen datanya dibentuk oleh BX ditambah 4.

Instruksi kedua mengisi AX dengan data yang lokasi

memori segmen datanya dalam ARRAY ditambah

isi register BX.) Pada 80386 dan versi di atasnya

menggunakan setiap register untuk mengalamatkan

memori. (Contoh: MOV AX,[ECX+4j atau MOV AX,

ARRAY[EBX). Instruksi pertama mengisi AX dengan

data yang alamat segmen datanya dibentuk oleh ECX

ditambah 4. Instruksi kedua mengisi AX dengan data

yang lokasi memori segmen datanya merupakan isi AR

AY ditambah isi EBX.).

Memindahkan data yang berukuran byte atau word

antara register dan lokasi memori yang ditunjuk oleh

suatu register basis dan register indeks ditambah

displacement. (Contoh: MOV AX, ARRAY[BX+DI]

atau MOV AX,[BX+DI+4j. Contoh-contoh ini mengisi

register AX dengan data yang pada lokasi memori

segmen data. Instruksi pertama menggunakan sebuah

alamat yang dibentuk oleh penambahan ARRAY, BX,

dan DI dan yang kedua dengan penambahan BX, DI,

dan 4.) Pada 80386 dan versi di atasnya, MOV EAX,

Pengalamatan

Register relatif

Pengalamatan

Relatif-Plus-Indeks

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 7/55

 

3-1 MODE PENGALAMATAN-DATA

ARRAY [EBX+ECX] mengisi register EAX dengan

data yang ada pada lokasi memori segmen data yang

dialcses dengan suatu alamat. Alamat tersebut

dibentuk dengan penjumlahan ARRAY, EBX, dan

ECX.

Pengalamatan ini hanya ada pada mikroprosesor 80386

sampai Pentium Pro. Register kedua dan pasangan

register dimodif ikasi dengan faktor skala 2X, 4X, atau

8X untuk memperoleh alamat memori operand.

(Contoh: instruksi MOV EDX,{EAX+4*EBX]

mengisi register EDX dengan data yang ada pada

lokasi memori segmen data yang alamatnya ditunjuk

oleh EAX ditambah 4 dikali EBX.) Penskalaan

mengijinkan akses data array memori yang berukuran

word (2X), doubleword(4X), atau quadword (8X).

Perhatikan bahwa faktor skala 1X juga ada, tetapi

dinyatakan secara normal dan tidak muncul dalam

instruksi. MOV AL,[EBX+ECX] merupakan sebuah

contoh penskalaan dengan faktor satu. Sebagai

alternatif, instruksi tersebut dapat ditulis kembali

seperti MOV AL,[EBX+1*ECX]. Contoh lainnya

adalah instruksi MOV AL,[2*EBX] yang hanya

menggunakan register skala satu untuk mengalamati

memori.

PENGALAMATAN REGISTER

Pengalamatan register merupakan bentuk pengalamatan data yang paling dikenal dan,

 begitu nama-nama register dipelajari, maka akan lebih mudah untuk memakainya. Untuk

itu ada register 8-bit berikut: AH, AL, BH, BL, CH, CL, DH, dan DL. Dan sekarang ada

register 16-bit berikut: AX, BX, CX, DX, SP, BP, SI, dan DI. Pada mikroprosesor 80386

dan versi di atasnya, terdapat register 32-bit yaitu, EAX, EBX, ECX, EDX, ESP, EBP,

EDI, dan ESI. Dengan pengalamatan register, banyak instruksi MOV, dan instruksi

PUSH dan POP, juga rnenggunakan register segmen 16-bit (CS, ES, DS, SS, FS, dan

Pengalamatan

Indeks-bersekala

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 8/55

 

3-1 MODE PENGALAMATAN-DATA

GS.) Penting sekali bahwa register yang digunakan memiliki ukuran yang seragam.

Jangan pernah campurkan jenis register 8- dan 16-bit, register 8-bit dengan register 32-

 bit, atau register 16-bit dengan register 32-bit karena hal ini tidak diijinkan oleh

mikroprosesor dan hasilnya akan mengeluarkan pesan kesalahan pada saat dilakukan

 perakitan. Hal ini juga berlaku pada instruksi MOV AX,AL atau MOV EAX,AL. Tentu

saja, instruksi MOV AX,AL atau MOV EAX, AL tidak diijinkan karena register-register

ini merupakan register yang berukuran berbeda. Perhatikan bahwa beberapa instruksi,

salah satunya SHL DX,CL merupakan pengecualian dan aturan ini, seperti ditunjukkan

dalam bab-bab selanjutnya. Hal yang juga perlu diperhatikan adalah bahwa tidak ada

instruksi MOV yang mempengaruhi bit flag.

Tabel 3-1 mengilustrasikan sebagian dan banyak versi yang berbeda dan instruksi

 pemindahan register. Hampir tidak mungkin untuk memperlihatkan semuanya karena ada

 banyak sekali kombinasi yang tersedia. Sebagian contoh, subset 8-bit dan instruksi MOV

saja mempunyai 64 variasi yang berbeda. Hanya tipe instruksi MOV pada register

segmen ke register segmen saja yang tidak diijinkan. Perhatikan bahwa register segmen

kode secara normal tidak diubah oleh instruksi MOV karena alamat instruksi berikutnya

ditemukan dalam IP/EIP dan CS. Jika hanya CS yang diubah, maka alamat instruksi

 berikutnya tidak dapat diramalkan. Oleh karena itu, pengubahan register CS dengan

instruksi MOV tidak diijinkan.

 Bahasa Assembly

MOV AL,BL

MOV CH,CL

MOV AX,CX

MOV SP,BP

MOV DS,AX

MOV SI,Dl

MOV BXES 

8-bit

8-bit

16-bit

16-bit

16-bit

16-bit

16-bit 

Ukuran Operasi

Menyalin isi register BL ke register AL ke CH

Menyalin isi register register CX ke AX

Menyalin isi register register SP

Menyalin isi register register AX ke DS

Menyalin isi register register ke SI

Menyalin isi register register ke BX

Menyalin isi register EBX ke ECX

Tabel 3-1 Contoh-contoh instruksi

register teralamati

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 9/55

 

3-1 MODE PENGALAMATAN-DATA

Gambar 3-3 mengilustrasikan fungsi instruksi MOV BX,CX. Perhatian bahwa isi

register sumbernya tidak berubah, tetapi isi register tujuannya berubah. Di sini 1234H

disalin dan register CX ke dalam register BX. Instruksi ini akan menghapus isi register

yang lama (76AFH) dan register BX, tetapi isi CX tidak diubah. Isi dan register tujuan

atau lokasi memori tujuan berubah untuk semua instruksi kecuali instruksi CMP danTEST. Perhatikan bahwa instruksi MOV BX,CX tidak mempengaruhi 16 bit paling kiri

dan register EBX.

Contoh 3-1 memperlihatkan urutan instruksi rakitan yang menyalin data

 berbedab eda antara register 8-, 16-, dan 32-bit. Seperti yang telah disebutkan, gerakan

 pemindahan data dan satu register ke register lainnya hanya mengubah register tujuan,

tidak pernah mengubah register sumber. Instruksi terakhir dalam contoh ini (MOV

CS,AX) dikompilasi tanpa kesalahan, tetapi menyebabkan masalah jika dieksekusi. Jika

2 2 3 4 7 6 A F

1 1 A C 1 2 3 4

MOV ECX,EBX

MOV ESP,EDX

MOV ES,DS

MOV BL,DX

MOV CS,AX 

32-bit

32-bit

 —  

 —  

 —  

ke ESP

Menyalin isi register register

Tidak diijinkan (segmen-ke-segmen)

Tidak diijinkan (ukuran tidak

Tidak diijinkan (register segmen oleh

merupakan register tujuan) 

Tabel 3-3 pengaruh darimenjalankan instruksiMOV BX, CX tepat padasaat sebelum register BX berubah. OPerhatikan bahwa hanya 16-bit palingkanan dari register EBX

yang berubah

Array Register

EAX

EBX

ECX 1 2 3 4

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 10/55

 

3-1 MODE PENGALAMATAN-DATA

hanya isi CS yang berubah tanpa mengubah IP, langkah berikutnya dalam program tidak

diketahui dan oleh karena itu menyebabkan program menjadi salah.

CONTOH 3-1

PENGALAMATAN SEGERA

Mode pengalamatan-data lainnya adalah pengalamatan segera. Istilah segera

menyatakan bahwa data segera mengikuti kode operasi heksadesimal dalam memori.

Juga perhatikan bahwa data segera merupakan data konstan, sedangkan data yang

dipindahkan dan register adalah data berubah. Pengalamatan segera bekerja berdasarkan

data yang berukuran byte atau word. Dalam mikroprosesor 80386 sampai Pentium II,

 pengalamatan langsung juga bekerja pada data doubleword. Instruksi segera MOV

memindahkm salinan data segera ke dalam sebuah register atau sebuah lokasi memori.

gambar 3-4 menggambarkan instruksi operasi MOV EAX,13456H. Instruksi ini menyalin

13456H dan instruksi, yang ditempatkan dalam memori secara segera mengikuti kode

operasi heksadesimal, ke dalam register EAX. Seperti dengan instruksi MOV yang

diilustrasikan dalam Gambar 3-3, data sumber menimpa data tujuan.

Dalam bahasa rakitan simbolis, data segera didahului oleh simbol # pada

 beberapa assembler (perakit).2 MOV AX, #3456H merupakan sebuah contoh. Sebagian

 besar assembler tidak menggunakan simbol #, tetapi mewakili data segera seperti dalam

instruksi MOV AX,3456H. Dalam teks ini tidak menggunakan simbol # untuk

menunjukkan data segera. Sebagian besar assembler yang ada seperti Intel ASM,

Microsoft MASM, dan Borland TASM, tidak menggunakan simbol # untuk data segera,

00000002000400060009000C000F0012

00140016

8BBABA666666668C

8E8E

C3CECD8B8B8B8BC8

D8C8 

C308C8

00

MOVMOVMOVMOVMOVMOVMOVMOV

MOVMOV

AX, BXCL,DHCL,CHEAX,EBXEHX,EAXECX,EAXEDX,EAXAX,CS

DS,AXCS, AX

; salin isi dari BX ke dalam AX; salin isi dari DH ke dalam CL; salin isi dari CH ke dalam CL; salin EBX ke dalam EAX; salin EAX ke EBX, ECX, dan EDX

; salin CS ke dalam DS 

; merakit, tapi akan menimbulkanmasalah

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 11/55

 

3-1 MODE PENGALAMATAN-DATA

tetapi assembler yang lebih lama yang digunakan dengan sistem pengembangan logika

Hewlett-Packard menggunakan simbol #, sama seperti yang lainnya.

Assembler simbolis memperlihatkan data segera dalam banyak cara. Huruf H

ditambahkan kepada data heksadesimal. Jika data heksadesimal mulai dengan suatu

huruf, assembler memerlukan data yang dimulai dengan 0. Sebagai contoh, untuk

merepresentasikan heksadesimal F2, OF2H digunakan dalam bahasa rakitan. Dalam

 beberapa assembler (diasumsikan bukan dalam MASM3, TASM4, atau teks ini), data

heksadesimal direpresentasikan dengan ‗h. seperti dalam MOV AX,#‘h 1234. Data

desimal direp resentasikan tanpa kode khusus atau modifikasi. (Sebuah contoh adalah

desimal 100 dalam instruksi MOV AL, 100.) Karakter atau kode-ASCII dapat

digambarkan dalam bentuk segera jika data ASCII ditutup dalam tanda ―. (Sebuah contoh

adalah instruksi MOV BH,‘A‘, yang rnemindahkan kode ASCII huruf A (41H) ke dalam

register BH.) Ingatlah untuk selalu menggunakan tanda apostrof (‗) untuk data ASCII dan

 bukan tanda quotation tunggal (S). Data biner direpresentasikati jika bilangan hiner

diikuti dengan huruf B, atau, dalam banyak assembler, huruf Y. Tabel 3-2

mernperlihatkan berbagai variasi yang berbeda dan instruksi MOV yang memakai data

segera.

Contoh 3-2 mernperlihatkan berbagai instruksi segera dalam suatu program

 pendek yang rnenempatkan 0000H ke dalarn register 16-bit AX, BX, dan CX. Kemudjan

diikuti dengan instruksi yang menggunakan pengalamatan register untuk menyalin isi AX

ke dalam register SI, DI, dan BP. ini adalah program lengkap yang menggunakan model

 pemrograman untuk perakitan dan eksekusi. Pernyataan .MODEL TINY mengarahkan

assembler untuk merakit program ke dalam segmen kode tunggal. Pernyataan atau

3 3 3 3 6 2 9 1GAMBAR 3-4 Operasi Program

instruksi MOV EAX,3456H.

Instruksi ml menyalin data

segera (13456H) ke dalam

EAX. 

Array register Program

EAX

EAX

MOVEAX,13456H 

13456H. 

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 12/55

 

3-1 MODE PENGALAMATAN-DATA

2Hal ini benar untuk assembler Hewlett-Packard dalam beberapa sistem pengembangan

3ASM (Macro Assembler) adalah merek dagang dan Microsoft Corporation.

4TASM (Turbo Assembler) adalah merek dagang dan Borland Corporation

Catatan: ini bukan kesalahan. Karakter ASCII disimpan sebagai BA, sehingga perlu

dilatih ketelitian saat memakai pasangan karakter ASCII ukuran-word.

direktif .CODE menunjukkan awal segmen kode; pernyataan .STARTUP menunjukkan

awal instruksi dalam program; dan pernyataan .EXIT menyebabkan keluar menuju DOS.

Pernyataan END menunjukkan akhir dan file program. Program ini dikompilasi dengan

MASM dan dieksekusi dengan CodeView(CV)5  untuk memperlihatkan eksekusinya.

Perhatikan bahwa sebagian besar versi TASM yang ada juga akan menerima kode

MASM. Untuk menyimpan program ke dalam sistem digunakan salah satunya program

EDIT DOS atau Programmer’s Work -Be,thh (PWB)6. Perhatikan bahwa sebuah program

TINY selalu terkompilasi menjadi program perintah (.COM).

Bahasa Assembler

MOV BL,44

MOVAX,44H

MOV SI,0

MOV CH,100

MOV AL,‘A‘

MOV AX,‘AB‘

MOV CL,11001110B

MOV EBX,12340000H

MOV ESI,12

MOV EAX,100Y

Operasi

Menyalin 44 desimal (2CH) ke dalam BL

Menyalin 0044H ke dalam AX

Menyalin 0000H ke dalam SI

Menyalin 100 desimal (64H) ke dalam CH

Menyalin ASCII A ke dalam AL

Menyalin ASCII BA* ke dalam AX

Menyalin 11001110 biner ke dalam CL

Menyalin 12340000H ke dalam EBX

Menyalin 12 desimal ke dalam ESI

Menyalin 100 biner ke dalam EAX

Ukuran

8-bit

16-bit

16-bit

8-bit

8-bit

16-bit

8-bit

32-bit

32-bit

32-bit

TABEL 3-2 Contoh-

contoh pengalamatan

segera yang

nenggunakan instruksi

MOV

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 13/55

 

3-1 MODE PENGALAMATAN-DATA

CONTOH 3-2

Setiap pernyataan dalam suatu program terdiri dan empat bagian atau field,

seperti diilustrasikan dalam Contoh 3-3. Field paling kiri disebut label dan digunakan

untuk menyimpan suatu nama simbol pada lokasi memori yang merepresentasikannya.

Semua label dimulai dengan sebuah hunuf atau salah satu dan karakter khusus berikut ini:

@, $, _, atau ?. Sebuah label panjangnya antara 1 sampai 35 karakter. Label muncul

dalam program untuk mengidentifikasi nama dan lokasi memori untuk menyimpan data

dan untuk tujuan-tujuan lainnya yang diterangkan pada saat lebel tersebut muncul. Field

 berikutnya disebut field opcode (kode openasi); dirancang untuk menyimpan instruksi,

atau opcode. Bagian MOV dan instruksi pemindahan data merupakan sebuah contoh dan

sebuah opcode. Di sebelah kanan field opcode adalah field operand yang berisi informasi

yang digunakan oleh opcode. Sebagai contoh, instruksi MOV AL, BL mempunyai

opcode MOV  dan  Operand AL dan  BL. Perhatikan bahwa beberapa instruksi berisi

antara nol dan tiga operand. Field terakhir, field keterangan, berisi sebuah komentar

tentang sebuah instruksi atau sekumpulan instruksi. Sebuah komentar selalu dimulai

dengan tanda semicolon atau titik koma (;).

CONTOH 3-3

LABEL OPCODE OPERAND KOMENTAR  

DATA1 DB 23H ;defiisikan DATA1 sebagai byte 23H

DATA2 DW 1000H ;defiisikan DATA2s ebagai word100011

START: MOV AL,BL ;salin BL ke dalam AL

MOV BH,AL ;salin AL ke dalajn BR

MOV CX,200 ;salin 200 desimal ke dalain CX

0000

0100010301060109010B010D

B8BBB98B8B

8B

000000000000F0F8

E8

.MODEL TINY.CODE

.STARTUP

MOVMOVMOVMOVMOVMOV

. EXIT

END

; pilih mode segment tunggal; tandai awal segment code;tandai awal program;tempatkan 0000H ke dalarn AX;tempatkan 0000H ke dalarn BX;tempatkan 0000H ke dalam CX;salin AX ke dalam SI;salin AX ke dalam DI;salin AX ke dalam BP

; keluar dari DOS

; akhir file

CodeView adalah merek dagang terdaftar dan Microsoft Corporation

6Programmer‘s Workbench adalah merek dagang terdaftar dan Microsoft Corporation.

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 14/55

 

3-1 MODE PENGALAMATAN-DATA

Saat program dirakit dan file list (1ST) diperlihatkan, maka akan muncul program

yang ada dalam Contoh 3-2. Bilangan heksadesimal pada sebelah kin merupakan alamat

offset dan instruksi atau data. Bilangan mi dibangkitkan oleh assembler. Bilangan atau

 bilangan-bilangan di sebelah kanan alamat offset merupakan instruksi-instruksi atau data

dalam kode mesin yang juga dibangkitkan oleh assembler. Sebagai contoh, jika instruksi

MOV AX,0 muncul dalam sebuah file dan dikompilasi, maka akan muncul dalam lokasi

memori offset 0100 dalam Contoh 3-2. Bentuk bahasa mesin heksad esimalnya adalah B8

0000. B8 merupakan kode operasi dalam bahasa mesin dan 0000 merupakan data 16-bit

dengan nilai nol. Pada saat program ditulis, hanya MOV AX,0 yang diketik ke dalam

(teks) editor; assembler membangkitkan kode mesin dan alamata lamat, dan menyimpan

 program dalam sebuah file yang diakhiri dengan ekstensi .LST. Perhatikan bahwa semua

 program dipenlihatkan dalam teks mi dalam bentuk seperti yang dibangkitkan oleh

assembler.

PENGALAMATAN DATA LANGSUNG

Sebagian besar instruksi dapat menggunakan mode pengalamatan-data langsung.

Pada kenyataannya, pengalamatan langsung dipakai untuk sebagian besar instruksi dalam

 program biasa. Ada dua bentuk dasar pengalamatan data langsung: (1) pengalamatan

langsung. yang menggunakan instruksi MOV antara lokasi memoni dan AL. AX atau

EAX; dan (2) pengalamatan displacement, yang digunakan pada hampir semua instruksi

dalam kumpulan instruksi. Dalam salah satu kasus, alamat dibentuk dengan penambahan

displacement dan alamat segmen data default atau alamat segmen alternatif.

 Pen galamatan Langsung. Pengalamatan 1agsung dengan instruksi MOV memindahkan

data antara lokasi memorii, yang ditempatkan dalam segmen data, dan register AL (8-bit),

AX (16-bit), atau EAX (32-bit). Instruksi MOV yang menggunakan tipe pengalamatan mi

 biasanya merupakan instruksi yang mempunyai panjang 3 byte. (Pada 80386 dan versi di

atasnya, awalan ukuran register muncul sebelum instruksi. yang menyebabkan panjang

instruksi tersebut melebihi 3 byte.)

Instruksi MOV AL,DATA, seperti yang ditunjukan pada sebagian besar

assembler mengisi AL dengan data yang disimpan dalam lokasi memoni DATA (1234H

Lokasi memori DATA merupakan sebuah simbol dan lokasi memoni, sedangkan 1234H

menup akan lokasi heksadesimal yang sebenarnya. Pada beberapa assembler. instruksi ini

direpresentasikan seperti instruksi MOVAL,[l234H]7. [1234H1 merupakan lokasi

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 15/55

 

3-1 MODE PENGALAMATAN-DATA

memori absolut yang tidak diijinkan oleb semua program assembler. Perhatikan bahwa

instruksi mi perlu dibentuk seperti MOV AL,DS:[1234H] pada beberapa assembler,

untuk memperl ihatkan bahwa alamatnya ada dalam segmen data. Gambar 3-5

menunjukkan bagaimana instruksi mi memindahkan salman isi yang berukuran byte dan

lokasi memori 11234H

Memori

AH AL8AH

Ke dalam register AL. Alamat efektif dibentuk dengan penambahan 1234H (alamat

offset) dan 1000H (alamat segmen data dari 1000H) dalam suatu sistem operasi pada

mode real.

Tabel 3-3 mencatat tiga instruksi pengalamatan langsung. Instruksi-instruksi ini

sering muncul dalam program, sehingga intel memutuskan untuk membuatnya menjadi

instruksi khusus dengan panjang 3-byte untuk mengurangi panjang program. Semua

instruksi lainnya yang memindahkan data dari lokasi memori ke register, disebut

instruksi pengalamatan-displacement.  Instruksi ini memerlukan memori yang

 panjangnya empat byte atau lebih untuk penyimpanan dalam sebuah program.

 Pengalamatan Displacement .

Pengalamatan Displacement hampir mirip dengan pengalamatan langsung kecuali bahwa

instruksi itu mempunyai lebar 4 byte bukan 3 byte. Pada 80386 sampai Pentium II,

instruksi ini lebarnya menjadi sampai 7 byte jika menggunakan register 32-byte dan

displacement 32-byte. Type pengalamatan data langsung ini juga lebih fleksibel karena

sebagian besar instruksi bisa menggukannya.

8AH 8 A

11235H

11234H

11233H

11232H

EAX

EBX

ECX

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 16/55

 

3-1 MODE PENGALAMATAN-DATA

Tabel 3-3 instruksi-instruksi pengalamatan langsung yang menggunakan EAX, AX, danAL.

Bahasa Rakitan Ukuran OperasiMOV AL,NUMBER 8-bit Menyalin isi byte lokasi memori segmen

data NUMBER ke dalam ALMOV AX,COW 16-bit Menyalin isi word dari lokasi memori

segmen data COW ke dalam AXMOV EAX,WATER* 32-bit Menyalin isi doubleword dari lokasi

segmen memori WATER ke dalam EAXMOV NEWS,AL 8-bit Menyalin AL ke dalam lokasi memori

segmen data NEWSMOV THERE,AX 16-bit Menyalin AX ke dalam lokasi memori

segmen data THEREMOV HOME,EAX* 32-bit Menyalin EAX ke dalam lokasi memori

segmen data HOMEMOV ES:[2000 H],AL 8-bit Menyalin AL ke dalam lokasi memori

segmen data tambahan 2000H

*Catatan: Mikroprosesor 80386-Pentium II terkadang memakai lebih dari tiga byte memori untuk pemindahan 32-bit antara EAX dan memori.

BAB 3 MODE PENGALAMATAN

Jika operasi instruksi MOV CL,DS:[1234H] dibandingkan dengan instruksi

MOV AL,DS:[1234H] dari gambar 3-5, keduanya pada dasarnya melakukan operasi yang

sama kecuali register tujuannya (CL versus AL). Perbedaannya lainnya hanya menjadi

 jelas setelah dilakukan kompilasi pada kedua versi instruksi ini. Instruksi MOV

AL,DS:[1234H] adalah instruksi yang panjangnya 3 byte, dan instruksi MOV

CL,DS:[1234H] adalah instruksi yang panjangnya 4 byte, seperti yang ditunjukan pada

contoh 3-4. Contoh ini memperlihatkan bagaimana assembler mengubah dua instruksi ini

kedalam bahasa mesin heksadesimal. Anda harus memasukan register segmen DS: dalam

contoh ini, sebelum bagian instruksi (offset). Anda boleh menggunakan register segmen

manapun, tetapi dalam sebagian besar kasus, data disimpan dalam segmen data, sehingga

contoh ini menggunakan DS:[1234H].

Format ini dapat dipakai dengan MASM, tetapi sering muncul bila program diketik atau didaftardengan DEBUG, alat debugging yang tersedia dalam DOS.

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 17/55

 

3-1 MODE PENGALAMATAN-DATA

CONTOH 3-4 

0000 A0 1234 R MOV AL,DS: [1234H]

0003 8A 0E 1234 R MOV CL,DS: [1234H]

Tabel 3-4 menunjukkan beberapa untuk instruksi MOV yang menggunakan

 bentuk displacement pada pengalamatn data langsung. Tidak semua bentuk didaftar

karena ada banyak instruksi MOV dari tipe ini. Register segmen dapat disimpan atau diisi

dari memori.

Contoh 3-5 memperlihatkan suatu program pendek yang menggunakan model

yang mengalamatkan informasi dalam segmen data. Perhatikan bahwa segmen data 

mulai dengan pernyataan .DATA untuk memberitahukan kepada assembler dimana

segmen data dimulai. Ukuran model diatur dari TINY, seperti ditunjukkan dalam contoh

3-3, sampai SMALL sehingga segmen data dapat dimasukkan. Model SMALL 

memungkinkan satu segmen data dan satu segmen kode. Model SMALL sering

digunakan pada saat data memori diperlukan pada sebuah program. Program model

SMALL mengkompilasi program eksekusi (.EXE). Perhatikan bagaimana contoh ini

CONTOH 3-4 ontoh-contoh pengalamtan langsung dengan menggunakan displacement,

 Bahasa rakitan Ukuran Operasi

MOV CH,DOG 8-bit Menyalin isi byte lokasi memori

segmen data DOG ke dalam CH

MOV CH,[1000H]* 8-bit Menyalin isi byte alamat offset

segmen data 1000H ke dalam CH

MOV ES,DATA6 16-bit Menyalin isi word lokasi memori

segmen DATA6 ke dalam ESMOV DATA7,BP 16-bit Menyalin BP kedalam lokasi memori

segmen data DATA7

MOV NUMBER,SP 16-bit Menyalin SP ke dalam lokasi

memori segmen data NUMBER

MOV DATA1,EAX 32-bit Menyalin EAX ke dalam lokasi

memori segmen data DATA1

MOV EDI,SUM1 32-bit Menyalin isi doubleword lokasi

memori segmen data SUM1 ke dalam

EDI

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 18/55

 

3-1 MODE PENGALAMATAN-DATA

*Catatan: Bentuk pengalamatan ini jarang dipakai oleh kebanyakan assembler karena

alamat offset numerik yang sebenarnya jarang diakses.

mengalokasikan lokasi memori dalam segmen data dengan menggunakan direktif

DB dan DW. Disini pernyataan .STARTUP tidak hanya menunjukkan awal kode, tetapi

 juga mengisi register segmen data dengan alamat segmen dari segmen data. Jika program

ini dikompilasi dan dieksekusi dengan CodeView, instruksi dapat diamati pada saat

instruksi tersebut mengeksekusi dan mengubah register dan lokasi memori.

CONTOH 3-5

.MODEL SMALL ;pilih model SMALL0000 .DATA ;tandai awal dari segmen DATA

0000 10 DATA1 DB 10H ;tempatkan 1OH dalam DATA10001 00 DATA2 DB 0 ;tempatkan 0 dalam DATA20002 0000 DATA3 DW 0 ;tempatkan 0 dalam DATA30004 AAAA DATA4 DW 0AAAAH ;tempatkan AAAAH dalam

DATA40000 .CODE ;tandai awal dan segmen CODE

STARTUP ;tandai awal dan program0017 A0 0000 R MOV AL,DATA1 ;salin NATAl ke AL

OO1A 8A 26 0001 R MOV AH,DATA2 ;salin DATA2 ke AHOO1E A3 0002 R MOV DATA3,AX ;simpan AX di DATA30021 8B 1E 0004 R MOV BX,DATA4 ;muati BX dengan DATA4

.EXIT ;keluar ke DOSEND ;akhir file

Pengalamatan Register Tidak Langsung 

Pengalamatan register tidak langsung-memungkinkan data dialamatkan pada

lokasi memori melalui alamat offset yang ditunjukkan oleh setiap register berikut ini: BP,

BX, DI, dan SI. Sebagai contoh, jika register BX berisi 1000H dan instruksi MOV AX,

[BX] dilakukan, isi dan segmen data yang berukuran word pada alamat offset I000H

disalin ke dalam register AX. Jika mikroprosesor dioperasikan dalarn mode dan DS =

0100H, instruksi mi mengalamatkan data word yang disimpan pada lokasi memori 2000H

dan 2001H, dan memindahkannya ke dalam register AX (dilihat Gambar 3-6). Perhatikan

 bahwa isi dan 2000H dipindahkan ke dalam AL dan isi 2001H dipindahkan ke dalam AH.

Simbol [] menjelaskan pengalamatan tidak langsung dalam hahasa rakitan. Selain

menggunakan register BP, BX, DI, dan SI ke memori alamat secara tidak langsung.

rnikroprosesor 80386 dan versi di atasnya mengijinkan pengalamatan register tidak

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 19/55

 

3-1 MODE PENGALAMATAN-DATA

langsung dengan setiap register 32-bit kecuali ESP. Beberapa instruksi khusus yang

menggunakan pengalamatan tidak langsung tampak pada Tabel 3-5.

Segmen data digunakan secara default dengan pengalamatan register tidak

langsung atau mode pengalamatan lainnya yang menggunakan BX. Dl, atau SI, untuk

mengalamatkan memori. Jika register UP mengalamatkan memori, maka segmen stack

digunakan. Kondisi ini dipertimbangkan default pada empat register indeks dan basis.

Pada 80386 dan versi di atasnya, EUP mengalamatkan memori dalam segmen stack

(default); EAX, EBX, ECX, EDX, EDT. dan ESI mengalamatkan memori dalam segmen

data (default). Bila rnenggunakan register 32-bit untuk mengalamatkan memori dalam

mode real, maka isi register 32-bit tidak pernah melebihi 0000FFFFH. Dalam mode

terlindung, setiap nilai dapat digunakan dalam register 32-bit yang digunakan untuk

mengalamatkan memori secara tidak langsung, sepanjang tidak rnengakses suatu lokasi di

luar segmen, seperti yang ditentukan dalam byte hak akses. Sebagai contoh instruksi

80386/80486/Pentium II adalah MOV EAX,[EBX]. Instruksi ini mengisi EAX dengan

 bilangan yang berukuran doubleword yang disimpan pada alamat offset segmen data

yang ditunjuk oleh EBX.

*Setelah DS ditambah dengan 0.

AH

3 4

AL

1 2

1 0 0 0

EAX

EBXECX

0 1 0 0

3 4

1 2

00002002

00002001

00002000

00001002

00001001

00001000

CS

DS

+

*1000

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 20/55

 

3-1 MODE PENGALAMATAN-DATA

GAMBAR 3 — 6 Operasi instruksi MOV AX,[BX] pada saat BX = 1000H dan DS =

0100H. Perhatikan bahwa instruksi ini ditunjukkan setelah isi memori dipindahkan ke

register AX.

TABEL 3 — 5 Contoh pengalamatan register tidak langsung.

Bahasa Rakitan Ukuran Operasi

MOV CX,[RX] 16-bit Menyalin isi word lokasi memori

segrnen data yang dialamatkan oleh HX

ke dalarn CX

MOV [BP],DL* 8-bit Menyalin DL ke lokasi memori

segrnen stack yang dialamatkan oleh BP

MOV [DI],BH 8-bit Menyalin BH ke lokasi memori

segmen data yang dialamatkan oleh DI

MOV [DI],[BX]  —   Perpindahan dari memori ke rnemori

tak diijinkan kecuali dengan instruksistring

MOV AL,[EDX] 8-bit Menyalin isi byte lokasi memori

segmen data yang dialamatkan oleh

EDX ke dalam AL

MOV ECX,[EBX] 32-bit Menyalin isi doubleword lokasi

rnemori segmen data yang dialamatkan

oleh EBX ke dalam ECX

*Catatan: Data yang dialamatkan oleh BP atau EBP secara default berlokasi di segmen stack,

sedangkan pengalamatan tak-langsung yang lain secara default memakai segmen data.

Dalam beberapa kasus, pengalamatan tidak kngsung memerlukan ukuran data khusus

yang ditetapkan dengan clirektif assembler khusus BYTE PTR, WORD PTR, atau

DWORD PTR. Direktif ini menunjukkan ukuran data memori yang dialamatkan oleh

 penunjuk memori (PTR). Sebagai contoh, instruksi MOV AL;[DI]secara jelas merupakan

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 21/55

 

3-1 MODE PENGALAMATAN-DATA

instruksi pemindahan yang berukuran byte, tetapi instruksi MOV [DI],10H merupakan

instruksi yang tidak jelas. Apakah instruksi MOV [DI], 10H mengalamatkan lokasi

memori yang berukuran byte, word, atau doubleword? Assembler tidak menentukan

ukuran 10H.instruksi MOV BYTE PTR [DI], 10H secara jelas merancang lokasi yang

dialamatkan oleh DI sebagai lokasi memori yang berukuran byte. Begitu juga, MOV

DWORD PTR [ DI], I0H secara jelas mengidentifikasi lokasi memori yang berukuran

doubleword. Direktif BYTE PTR, WORD PTR, dan DWORD PTR digunakan hanya

dengan instruksi yang mengalamatkan lokasi memori melalui sebuah register penunjuk

atau register indeks dengan data langsung, dan untuk beberapa instruksi Iainnya

digambarkan dalam bab-bab berikutnya.

Pengalamatan tidak langsung sering digunakan untuk menunjukan data tabular

dalam sistem memori. Misalnya, Anda harus menciptakan suatu tabel informasi yang

akan menampung 50 sampel yang diambil dari lokasi memori 0000;046C. Lokasi

0000:046C berisi sebuah penghitung yang dikontrol oleh clock real-time dari komputer

 pribadi. Gambar 3-7 menggambarkan tabel dan juga register BX yang digunakan untuk

menangani setiap lokasi dalam tabel secara berurutan. Untuk mencapai hal ini, Anda

 perlu memasukkan lokasi awal tabel ke dalam register BX dengan instruksi langsungMOV. Setelah inisialisasi alamat awal tabel, Anda kemudian menggunakan pengalamatan

register tidak langsung untuk menyimpan 50 sampel secara berurutan.

Urutan yang ditunjukkan dalam Contoh 3-6 mengisi register BX dengan alamat

awal dan tabel dan menginisialisasi perhitungan yang ditempatkan dalam register CX,

sampai 50. Direktif OFFSET memerintahkan kepada assembler untuk mengisi BX

dengan alamat offset dan lokasi memori TABEL, bukan isi TABEL. Sebagai contoh,

instruksi MOV BX,DATAS menyalin isi lokasi memori DATAS ke dalam BX,

sedangkan instruksi MOV BX,OFFSET DATAS menyalin alamat offset dari DATAS ke

dalam BX. Pala saat direktif OFFSET digunakan dengan instruksi MOV, maka assembler

menghitung alamat offset dan kemudian menggunakan instruksi langsung MOV untuk

mengisi alamat ke dalam register 16-bit yang ditentukan.

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 22/55

 

3-1 MODE PENGALAMATAN-DATA

C0NTOH 3 — 6

.NODEL SMALL  ;pilih model SMALL 

0000 .DATA ;awal dan segmen DATA0000 0032 [ DATAS DW 50 DUP (?) ;setup array berisi 50 byte

0000]

0000 .CODE ;awal dan segmen CODE.STARTUP ;awal dari program

0017 B8 0000 MOV AX,0001A 8E C0 MOV ES,AX ;alamati segmen 0000 dengan

ES001C BB 0000 R MOV BX,OFFSET DATAS ;alamati DATAS array001F B9 0032 MOV CX,50 ;muati penghitung dengan 500022 AGAIN:0022 26:A1 046C MOV AX,ES:[046CH] ;dapatkan nilai clock0026 89 07 MOV [BX],AX ;simpan nilai clock dalam

DATAS0028 43 INC BX ;tambahi BX ke elemen

 berikutnya0029 E2 F7 LOOP AGAIN ;ulangi 50 kali

.EXIT ;keluar ke DOSEND ;akhir file

GAMBAR 3 — 7 Sebuah

array (TABEL) berisi 50

 byte yang dialamatkan secara

tidak Iangsung melalui register BX.

Tabel + 49

Memori

0 0 0 0 T A B E LEBX

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 23/55

 

3-1 MODE PENGALAMATAN-DATA

Sekali penghitung dan penunjuk dinisialisasi, loop pengulangan hingga CX = 0

dieksekusi. Di sini data dibaca dari lokasi memori segmen ekstra 46CH dengan instruksi

MOV AX,ES:[046CH] dan disimpan dalam memori yang dialamatkan secara tidak

langsung oleh alamat offset yang ditempattan dalam register BX. Berikutnya. BX

ditambahkan dengan satu untuk lokasi tabel berikutnya, dan akhirnya instruksi LOOP

 berulang sampai 50 kali. insturksi LOOP niengurangi dengan satu penghitung (CX); jika

CX tidak nol, maka LOOP menyebabkan loncat ke lokasi memori AGAIN Jika CX

menjadi nol, tidak terjadi loncat dan urutan instruksi ini berakhir. Contoh ini menyalin

sebagian besar 50 nilai dari clock ke dalam array memori DATAS. Program ini sering

menunjukkan data yang sama dalam setiap lokasi karena isi dock hanya diubah 18,2 kali

 per detik, Untuk menganalisa program dan eksekusinya, gunakan program CodeView.

Untuk meuggunakan CodeView, ketik CV PILE.EXE atau rnengaksesnya sebagai

DEBUG dan program Programmers Work Bench pada menu RUN. Perhatikan bahwa

Code View berfungsi hanya dengan file .EXE atau .COM. Beberapa switch CodeView

merupakan /50 untuk peraga 50-bails dan /S untuk menggunakan peraga video resolusi

tinggi dalam suatu aplikasi. Untuk mencari kesalahan dan memperbaiki file TEST.COM

dengan 50 bails, ketiklah CV /50 TEST.COM pada prompt DOS.

Pengalamatari Basis-Plus-Indeks

Pengalamatan basis-plus-indeks mirip dengan pengalamatan tidak langsung karena secara

tidak langsung menangani data memori, Dalam mikroprosesor 8086 sampai 80286, tipe

 pengalamatan inii menggunakan satu register basis (BP atau BX), dan register indeks (Dl

atau SI) untuk secara tidak langsung mengalamatkan memori. Register basis sering

menampung alamat awal dari suatu array memori, sedangkan register indeks menampung

 posisi relatif dari elemen dalam array. Ingat bahwa kapanpun DX mengalamatkan data

memori, kedua register segmen stack dan BP ini memhangkitkan alamat efektif

Dalam 80386 dan versi di atasnya, tipe pengalamatan ini mengijinkan kombinasi

setiap dua register 32-bit kecuali ESP. Sebagai contoh, instruksi MOV DL,[EAX+EBX]

menggunakan EAX (sebagai basis) dirambah EBX (sebagai indeks). Jika register EBP

digunakan, maka data ditempatkan dalam segmen stack bukan dalam segmen data.

 Penempatan Data dengan Pengalamatan Basis-plus-indeks. Gambar 3-8

menggambarkan bagaimana data dialamatkan untuk instruksi MOV DX,[BX+DI] pada

saat mikroprosesor beroperasi dalam mode real. Dalam contoh ini, BX = 1000H DI =

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 24/55

 

3-1 MODE PENGALAMATAN-DATA

0010H, dan DS = 0100H. yang menterjemahkan ke alamat memori 02010H. Instruksi ini

memindahkan salinan data yang berukuran word dan lokasi 02010H ke dalam register

DX. Tabel 3-6 mencatat beberapa instruksi yang digunakan untuk pengalarnatan basis-

 plus-indeks. Perhatikan bahwa assembler Intel mensyaratkan mode pengalamatan

tersebut muncul sebagai [DXI[DI] bukan [BX+DI], Instruksi MOV DX,[BX+DI] adalah

MOV DX,[BX][DI] untuk sebuah program yang ditulis pada assembler ASM Intel. Teks

ini menggunakan bentuk yang pertama dalam semua contoh program, tetapi bentuk kedua

dapat digunakan dalam banyak assembler, termasuk MASM dari Microsoft. lnstruksi-

instruksi seperti MOV DI.[BX+DI] dapat dikompilasi, tetapi tidak dapat dieksekusi

secara benar.

 Penempatan Data Array Menggunakan Pengalamatan Basis-plus-indeks.

Penggunaan utama dari mode pengalamatan basis-plus-indeks adalah untuk

mengalamatkan elemen di dalam suatu array memori. Anggaplah bahwa elemen dalam

array, yang terdapat di dalam segmen data pada lokasi memori ARRAY, harus diakses.

Untuk menyelesaikan hal ini, isi register BX (basis) dengan alamat awal array, dan

register DI (indeks) dengan bilangan elemen yang akan diakses. Gambar 3-9

memperlihatkan penggunaan BX dan DI untuk mengakses sebuah elemen dalam arraydata.

+

A B 0 3

1 0 0 0

A B 0 3

EAX

EBX

ECX

EDX

Array register

A B

0 3

Memori

0 0 1 0

ESP

EBP

ESI

EDI

02015H

02014H

02013H

02012H

02011H

02010H

+

0201FH

0010H

A B 0 3

1000H2010H

1010H 1000H

DS x 10H

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 25/55

 

3-1 MODE PENGALAMATAN-DATA

GAMBAR 3 — 8 Suatu contoh yang menunjukan bagaimana mode pengalamatan basis-

 plus-indeks berfungsi untuk instruksi MOV DX, [BX+DI]. Perhatikan bahwa alamat

memori 02010H diakses karena DS = 0100H,

BX = 100H, dan DI 0010H.

TABEL 3 — 6 Contoh pengalamatan basis-plus-indeks.

Bahasa Rakitan Ukuran Operasi

MOV CX,[BX+DI] 16-bit Menyalin isi word lokasi memori

segmen data yang dialamatkan oleh BX

ditambah DI ke dalam CX

MOV CH,[BP+SI] 8-bit Menyalin isi byte dari lokasi memori

segmen stack yang dialamatkan oleh BP

ditambah SI ke dalam CH

MOV [BX+SI],SP 16-bit Menyalin SP ke lokasi segmen data

yang dialamatkan oleh BX ditambah SI

MOV [BP+DI],AH 8-bit Menyalin AH ke dalam lokasi

memori segmen stack yang dialamatkanoleh BP ditambah DI

MOV CL,[EDX+EDI] 8-bit Menyalin isi byte dari lokasi memori

segmen stack yang dialamatkan oleh

EDX ditambah EDI ke dalam CL

MOV [EAX+EBX],ECX 32-bit Menyalin ECX ke dalam lokasi

memori segmen data yang dialamatkan

oleh EAX ditambah EBX

Sebuah program pendek, yang dicatat dalam Contoh 3-7, memindahkan array elemen

10H ke dalam array elemen 20H. Perhatikan bahwa bilangan elemen array, yang diisi ke

dalam register DI, mengalamatkan elemen array. Juga perhatikan bagaimana isi ARRAY

diinisialisasi sehingga elemen 10H berisi 29H.

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 26/55

 

3-1 MODE PENGALAMATAN-DATA

GAMBAR 3 — 9 Sebuah contoh mode pengalamatan basis-plus-indeks. Di sini suatu

elemen (DI) dari ARRAY (BX) dialamatkan.

CONTOH 3 — 7

.MODEL SMALL

0000 . DATA ;pilih model SMALL

;awal dari segmen DATA

0000 0010 [ ARRAY DB 16 DUP (?) ;setup ARRAY

00

]

0010 29 DB 29H ;data sampel di elemen 10H

0011 001E [ DB 30 DUP (?)

00

]

ARRRAY + 5

ARRRAY + 4

ARRRAY + 3

ARRRAY + 2

ARRRAY + 1

ARRRAY

Elemen

ARRAY

BX

DI

Memori

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 27/55

 

3-1 MODE PENGALAMATAN-DATA

0000 .CODE ;awal dan segmen CODE

.STARTUP ;awal dan program

0017 BB 0000 R MOV BX,OFFSET ARRAY ;alamati ARRAY

001A BF 0010 MOV DI,10H ;alamati elemen 10H

001D 8A 01 MOV AL, [BX+DI] ;dapatkan elemen 10H

001F BF 0020 MOV DI, 20H ;alamati elemen 20H

0022 88 01 MOV [BX+DI],AL ;simpan di elemen 20H

.EXIT ;keluar ke DOS

END ;akhir file

Pengalamatan Register Relatif

Pengalamatan register relatif mirip dengan pengalamatan basis-plus-indeks dan

 pengalamatan displacement. Dalam pengalamatan register relatif, data dalam segmen

memori dialamatkan dengan menambahkan displacement pada isi register basis atau

register indeks (BP, BX, DI atau SI). Gambar 3-10 menggambarkan operasi instruksi

MOV AX,[BX+1000H]. Dalam contoh ini, BX = 0l00H dan DS = 0200H, sehinggaalamat

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 28/55

 

3-1 MODE PENGALAMATAN-DATA

GAMBAR 3 — 10 Operasi

instruksi MOV AX,(BX + 

1000H), pada saat BX =

0100H dan DS = 0200H.

yang dihasilkan adalah jumlah DS x 10H, BX, dan displacement 1000H atau total

03100H. Ingat bahwa BX, DI, atau SI mengalamatkan segmen data dan BP

mengalamatkan segmen stack. Dalam 80386 dan versi di atasnya, displacement dapat

 berupa bilangan 32-bit dan register bisa register 32-bit yang manapun kecuali register

ESP. Ingat bahwa ukuran panjang segmen mode real adalah 64K byte. Tabel 3-7

mencatat beberapa instruksi yang menggunakan pengalamatan register relatif.

Displacement dapat berupa bilangan yang ditambah dengan isi register dalam [ ], seperti

dalam instruksi MOV AL,[DI+2], atau dapat berupa displacement dikurangi dari isi

register, seperti dalam instruksi MOV AL,[SI — 1]. Displacement juga dapat berupa

alamat offset yang ada dalam [], seperti dalam MOV AL,[DI]. Kedua bentuk dari

displacement juga dapat muncul secara simultan, seperti dalam instruksi MOV

AL,DATA[DI+3]. Dalam semua kasus, kedua bentuk dari displacement ditambahkan

dengan isi register basis atau isi register basis dan isi register indeks dalam [ ]. Dalam

inikroprosesor 8086-80286, nilai displacement dibatasi sampai bilangan bertanda 16-bit

+

A 0 7 6

0 1 0 0

2 2 2 2

0 0 0 0

EAX

EBX

Array register

7 6

A 0

Memori

03101H

03100H

+

2000H

A 0 7 6

0100H

3100H

1100H

1000H

DS x 10H

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 29/55

 

3-1 MODE PENGALAMATAN-DATA

dengan daerah nilai antara +32.767 (7FFFH) dan — 32.768 (8000H); Dalam 80386 dan

versi di atasnya, displacement 32-bit diijinkan dengan nilai antara +2.147.483.647

(7FFFFFFFH) dan — 2.147.483.647 (80000000H).

TABEL 3-7 Contoh-contoh pengalamatan register relatif.

Bahasa Rakitan Ukuran Operasi

MOV AX,[DI+100H] 16-bit Menyalin isi word lokasi

memori segmen data yang

dialamatkan oleh DI ditambah

100H ke dalam AX

MOV ARRAY[SI],BL 8-bit Menyalin BL ke dalam lokasi

memori segmen data yang

dialamati oleh ARRAY

ditambah SI

MOV LIST[SI+2],CL 8-bit Menyalin CL ke dalam Iokasi

memori segmen data yangdialamati oleh jumlah dan LIST,

SI, dan 2

MOV DI,SET_IT[BX] 16-bit Menyalin isi word lokasi

memori segmen data yang

dialamati oleh jumlah dan

SET_IT dan BX ke dalam DI

MOV DI,[EAX+10H] 16-bit Menyalin isi word lokasi

memori segmen data yang

dialamati oleh jumlah dari EAX

dan 10H ke dalam DI

MOV ARRAY[EBX],EAX 32-bit Memindahkan EAX ke dalam

lokasi memori segmen data

yang dialamati oleh jumlah dari

ARRAY dan EBX

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 30/55

 

3-1 MODE PENGALAMATAN-DATA

GAMBAR 3-11 Pengalamatan register relatif digunakan untuk mengalamatkan elemen

ARRAY. Displacement mengalamatkan awal dari ARRAY, dan DI mengakses elemen.

 Pengalamatan Data Array dengan Register Relatif . Data array dimungkinkan dengan

 pengalamatan register relatif, salah satunya seperti apa yang dilakukan oleh pengalamatan

 basis-plus-indeks. Dalam Gambar 3-1l, pengalamatan register relatif diilustrasikan

dengan contoh yang sama dengan seperti pada pengalamatan basis-plus-indeks. Ini

menunjukkan bagaimana displacement ARRAY ditambahkan pada register indeks DI

untuk menghasilkan suatu referensi pada suatu elemen array.

Contoh 3-8 menunjukkan bagaimana mode pengalamatan yang baru ini bisa

memindahkan isi dari elemen array I0H ke dalam elemen array 20H. Perhatikan

ARRRAY + 5ARRRAY + 4

ARRRAY + 3

ARRRAY + 2

ARRRAY + 1

ARRRAY

Elemen

ARRAY

Displacement

Memori

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 31/55

 

3-1 MODE PENGALAMATAN-DATA

kemiripan antara contoh ini dan Contoh 3-7. Perbedaan utama adalah bahwa, dalam

Contoh 3-8, register BX tidak digunakan untuk mengalamatkan area memori ARRAY;

sebagai gantinya, ARRAY digunakan seperti sebuah displacement untuk menyelesaikan

tugas yang sama.

CONTOH 3 — B .MODEL SMALL ;pi1ih model SMALL

0000 . DATA ;awal dari segmen DATA0000 0010 [ ARRAY DB 16 DUP (?) ;setup ARRAY

00]

0010 29 DB 29H ;data sampel di elemen 10H0011 001E [ DB 30 DUP (?)

00]

0000 . CODE ;awal dari segmen CODE.STARTUP ;awal dari program

0017 BF 0010 MOV DI,10H ;alamati elemen 10H001A 8A 85 0000 R MOV AL,ARRAY[DI] ;dapatkan elemen l0H001E BF 0020 MOV DI,20H ;alamati elemen 20H0021 88 85 0000 R MOV ARRAY[DI],AL ;simpan di elemen 20H

.EXIT ;keluar ke DOSEND ;akhir file

Mode pengalamatan basis relatif-plus-indek

Mode pengalamatan basis relatif-plus-indek mirip dengan pengalamatan basik-plus

indeks, namun selain menamhahkan isi suatu register base dan register indeks, juga

rnenambahkan suatu displacement untuk menghasilkan alamat memori. Tipe mode

 pengalamatan ini sering digunakan untuk menangani array dua dimensi dan data memori.

 Pengalamatan Date dengan Basis Relatif-PIus-lndeks. Pengalamatan basis relative plus-

indeks adalah mode pengalarnatan yang paling jarang digunakan. Gambar 3-12

menunjukkan bagaimana data ditunjukkan jika instruksi yang dieksekusi oleh

mikroprosesor adalah MOV AX,LBX+S1+IOOH]. Displacement 100H ditamhah dan SI

untuk membentuk alamal offset dalam segmen data. Register BX = 0020H. SI = 0010H.

dan DS = l000H, sehingga alamat efektif untuk instruksi ini adalah 10130H-hasil

 penjumlahan register-register ini ditambah displacement 100H. Mode pengalamatan ini

sangal kompleks untuk digunakan dalam suatu program, beberapa instruksi khusus

dengan menggunakan pengalamatan basis relatif-plus-indeks tampak dalam Tabel 3-8.

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 32/55

 

3-1 MODE PENGALAMATAN-DATA

Perhatikan bahwa dengan 80386 dan versi di atasnya, alamat efektif dibangkitkan oleh

 penjumlahan dua regiser 32-bit ditambah displacement 32-bit.

TABEL 3 — 8 Contoh instruksi relatif-plus-indeks.

GAMBAR 3-12

Contoh penga -

lamatan basis

relatif-plus-indeks

menggunakan

instruksi MOV

AX,[BX+Sl+100H]

Gatatan:

DS 1000H.

 Bahasa Rakitan

MOV DH,[BX+DL+20H]

MOV AX.FILE(BX+DI]

MOV LIST[BP+DI],CL

MOV LIST[BP+S1+4],DH

MOV EAX,F1LE[EBX+ECX+2] 

Ukuran

8-bit

16-bit

8-bit

8-bit

32-bit 

Operasi

Menyalin isi byte lokasi memori segmen datayang dialamatkan oleh jumlah BX, Dl, dan20H ke dalam DHMenyalin isi word lokasi memori segmen datayang dialamatkan oleh jumlah FILE, BX, dan

Dl ke dalam AXMenyalin CL ke dalam lokasi memori segmendata berukuran stack yang dialamatkan oleh jumlah LIST, BP, dan Dl.Menyalin DH ke dalam lokasi memori segmendata berukuran stack yang dialamatkan oleb jumlah LIST, BP, SI, dan 4

Menyalin isi doubleword lokasi memorisegmer data yang dialamatkan oleh jumlah

FILE. EBX. ECX, dan 2 ke dalam AX 

0 0 1 0

A 3 0 0

1 6

2 0

A316

+ ++

A 3

1 6EAX

EBX

ECX

EDX

ESP

EBP

ESI

Array register

0020H0030H 0130H

0010H

0100H 10000H

DS x 10H

10130H

10131H

10130H

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 33/55

 

3-1 MODE PENGALAMATAN-DATA

 pengalamatan Array dengan Basis Relatif-plus indeks, Misalkan bahwa suatu file dan

 banyak record ada dalam memori dan tiap record itu berisi banyak elemen. Displacement

ini mcngalarnatkan file itu, register basis mengalamatkan suatu elemen record. Gambar 3-

13 mengilustrasikan bentuk pengalamatan yang sangat kompleks inl

Contoh 3-9 merupakan suatu program yang akan menyalin elemen 0 dan record

A ke dalam elemen 2 dari record C, dengan rnenggunakan mode pengalamatan basis

relatif-plus-indeks. Contoh FILE ini mengandung empat record dan setiap record terdiri

dan 10 elemen. Perhatikan bagaimana pernyataan THIS BYTE digunakan untuk

mendefinisikan label FILE dan RECA sebagai lokasi memoni yang sama.

CONTOH 3 — 9MODEL SMALL ;model SMALL

0000 DATA ;awal dari segmen DATA0000 = 0000 FILE EQU THIS BYTE ;tetapkan FILE pada byte ini0000 000A [ RECA DB 10 DUP (?) ;cadangkan 10 byte untuk RECA

00]

000A 000A [ RECB DB 10 DUP (?) ;cadangkan 10 byte untuk RECB00

]0014 000A [ RECC DB 10 DUP (?) ;cadangkan 10 byte untuk RECC

00]

001E 000A [ RECD DB 10 DUP (?) ; cadangkan 10 byte untuk RECD00

]0000 .CODE ;awal dari Segmen CODE

.STARTUP ;awal dan program0017 BB 0000 R MOV BX,OFFSET RECA ;alamati RECA00IA BF 0000 MOV DI,O ;alamati elemen 0001D 8A 81 0000 R MOV AL,FILE[BX+DI] ;ambil data0021 BB 0014 R MOV BX,OFFS RECC ;alamati RECC0024 BF 0002 MOV DI,2 ;alamati elemen 2

0027 88 81 0000 R MOV FILE(BX.DI),AL ;simpan data

EXIT ;keluar ke DOSEND ;akhir file

Pengalamatan Indeks-Berskala

Pengalamatan indeks-berskala merupakan tipe mode pengalamatan data yang

terakhir dibicarakan. Mode pengalamatan data inii adalah khusus untuk mikroprosesor

80386 sampai Pentiurn II. Pengalamatan indeks-berskala menggunakan dua register 32-

 bit (register basis dan register indeks) untuk mengakses memori. Register kedua (indeks)

dikalikan dengan faktor skala. Faktor skalanva adalah 1X. 2X. 4X. atau 8X. Faktor skala

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 34/55

 

3-1 MODE PENGALAMATAN-DATA

1X dinyatakan dan tidak perlu dimasukkan dalam instruksi bahasa rakitan (MOV

AL,[EBX+ECX]). Faktor skala 2X digunakan untuk mengalamatkan array memori yang

 berukuran word, fakor skala 4X digunakan untuk mengalamatkan array memori yang

 berukuran doubleword, dan faktor skala 8X digunakan untuk mcngalamatkan array

memori yang berukuran quadword

Sebuah contoh instruksi adalah MOV AX,[EDI+2*ECX], Instruksi mi

menggunakan faktor skala 2X, yang mengalikan isi ECX dengan 2 sebelum pcnambahan

dengan isi register EDI untuk membentuk alamat memori. Jika ECX berisi 00000000H,

elemen memori 0 yang berukuran word akan ditunjukkan: jika ECX berisi 00000001H,

elemen memori 1 yang berukuran word akan diakses, dan seterusnya. ini mengimbangi

indeks

GAMBAR 3-13 Pengelamatan

Basis relatif-plus-indeks yang

digunakan untuk mengakses FILE

yang berisi banyak record (REC).

(ECX) dengan faktor 2 pada array memori yang berukuran word. Lihat Tabel 3-9

 beberapa contoh pengalamatan indek-berskala. Seperti yang dapat Anda bayangkan

sejumlah besar kombinasi register yang dialamatkan dengan indeks Penskalaan juga

dipakai untuk instruksi-instruksi yang menggunakan satu register untuk memori alamat

secara tidak 1angung.

Contoh 3-10 memperlihatkan suatu urutan instruksi yang menggunakan pengekamatan

Elemen

REC C

EDI

EBX

Memori

REC C

REC B

REC A

FILE

Dis lacement

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 35/55

 

3-1 MODE PENGALAMATAN-DATA

indeks-berskala untuk rnengakses array data berukuran word yang disebut LIST.

Perhatikan bahwa alamat offset LIST diisi ke dalam register EBX dengan MOV

EBX,OFFSET LIST. Begitu EBX mengalamatkan array LIST. ditambahkan

(ditempatkan dalarn ECX) dan array 2, 4, dan 7 selebar word, menggunakan faktor skala

2 untuk mengakses elemen. Program ini menyimpan 2 pada elemen 2 ke dalam element 4

dan 7. Juga perhatikan direktif .386 untuk merniiih mikroprosesor 80386. Direktif ini

harus mengikuti pernyataan .MODEL pada assembler untuk memproses instruksi-

instruksi 80386 pada DOS. Jika 80486 digunakan, maka direktif .486 muncul setelah

 pernyataan .MODEL; jika Pentiurn. Pentium Pro, atau Pentium II digunakan. maka

direktif .586 akan muncul setelah MODEL. Jika direktif pemilihan mikroprosesor tampak

sebelum peryataan MODEL. maka mikroprosesor mengeksekusi instruksi-instruksi dalam

mode 32-bit, yang tidak kompatibel dengan DOS.

TABEL 3 — 9 Contoh-contoh pengalamatan indeks-berskala

 Bahasa Rakitan Ukuran Operasi

MOV EAX,(EBX+4ECX] 32-bit Menyalin isi doubleword lokasi memori

segmen data yang dialamati oleh jumlah dan

4 kaIl ECX ditambah EBX ke dalam EAXMOV [EAX+2*EDI+100H),CX 16-bit Menyahn CX ke datam lokasi rnemori

segmen dialamati oleh jumlah dari EAX,

100H dan 2 kali EDI .

MOV AL,[EBP+2*ED-2] 8-bit Menyalin isi byte lokasi segmen stack yang

dialamati dari jumlah EBR, -2, dan 2 kali

EDI, ke dalam AL.

MOV EAX,ARRAY[4*ECX] 32-bit Menyalin isi doubleword lokasi memori

segrnen dialamati oleh jumlah dari ARRAY

ditambah 4 kali ECX ke dalam EAX

CONTOH 3-10.MODEL SMALL ;pilih model SMALL.386 ;gunakan 80386

0000 .DATA ;awal dan segmen DATA0000 0000 0001 0002 LISP DW 0,1,2,3,4 ;tentukan array list

0003 0004000A 0005 0006 0007 DW 5,6,7,8,9

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 36/55

 

3-1 MODE PENGALAMATAN-DATA

0008 00090000 .CODE ;awal dan segmen CODE

.STARTUP ;awal dari program0010 66| BB 00000000 R MOV EBX,OFFSET L1ST ;alamati array LIST0016 66| B9 00000002 MOV ECX,2 :ambil elemen 2001C 67& 8B 04 4B MOV AX, [EBX+2*ECX]0020 66| B9 00000004 MOV ECX,4 ;simpan di elemen 40026 67& 89 04 4B MOV (EBX+2*ECX],AX002A 66| 89 00000007 MOV ECX,7 ;simpan di elemen 70030 67& 89 04 4B MOV [EBX÷2*ECX],AX

.EXIT ;keluar ke DOSEND ;akhir file

Struktur Data

Struktur data digunakan untuk rnenetapkan bagaimana informasi disimpan dalarn array

mernori dan akan sangat berguna untuk apliksi yang menggunakan array. Sangat baik

untuk rnenganggap struktur data sebagai sebuah pola data. Awal dan strukrur

diidentikasikan dengan direktif bahasa rakitan STRUC dan diakhiri dengan pernyataan

ENDS. Suatu struktur data khusus didefinisikan dan digunakan tiga kali dalam. Contolh

3-11. Perhatikan bahwa nama dan struktur muncul dengan peryataan STRUC dan ENDS.

CONTOH 3-11:Definisikan struktur data INFO

0057 INFO STRUC0000 0020 [ NAMES DB 32 DUP (?) ;32 byte untuk name

00]

0020 0020 [ STREET DB 32 DUP (?) ;32 byte untuk  street

00]

0040 0010 [ CITY DB 16 DUP (?) :16 byte untuk city00

]0050 0002 [ STATE DB 2 DUP (7) :2 byte unruk state

00]

0052 0005 [ ZIP DB 5 DUP (N ;5  byte untuk zip-code. 00

]INFO ENDS

0000 42 6F 62 20 53 6D NAME1 INFO <‗Bob Srnith‘,‘123 Main Street‘, ‗Wanda‘, ‗OH‘ ,‗44444‘>

69 74 680017 [

00]

31 32 33 20 4D61 69 6E 20 53 74

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 37/55

 

3-1 MODE PENGALAMATAN-DATA

72 65 65 740011 [

00]

57 61 6E 64 61000B [

00]

4F 48 34 34 340057 53 74 65 76 65 20 NAME2 INFO <‘Steve Doe‘. ‗222 Mouse Lane‘.

. ‘Miller’. ‗PA,‘18100‘>44 6F 650017 [

00]

32 32 32 20 4D6F 75 73 65 20 4C61 6E 650012 [

00]

4D 69 6C 6C 6572000A [

00]

50 41 31 38 3130 30

00AE 42 65 6E 20 44 6F NAME3 INFO <Ben Dover‘.‘303 Main Street‘.‗Orender‘.‘CA‘.‘ 90000‘> 76 65 720017 [

00]

33 30 33 20 4D61 69 6E 20 53 7472 65 65 740011 [

00]

4F 72 65 6E 6465 720009 [

00]

43 41 39 30 3030 30

Struktur data dalam Contoh 3-11 mcndcfinisikan lima field informasi. Yang pertama

 panjangnya 32-byte dan menyimpan sebuah nama; yang kedua panjangnya 32 byte dan

 penyimpan alamat jalan: yang ketiga panjangnya 16 byte untuk kota: yang keempat

 panjangnya 2 byte untuk negara: yang kelima panjangnya 5 byte untuk kode Pos.sekali

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 38/55

 

3-1 MODE PENGALAMATAN-DATA

struktur didefinisikan (INFO). dapat diisi, seperti diilustrasikan, dengan nama dan alamat.

Tiga conton dari penggunaan INFO telah diilustrasikan. Perhatikan bahwa kata demi kata

dikelilingi dengan apostrophe dan seluruh field dikelilingi dengan simbo < > pada saat

struktur data digunakan untuk ,mendefinisikan data.

Pada saat data dialamatkan dalam struktur, gunakan nama struktur dan nama field untuk

memilih field yang ada dalam struktur. Sebagai contoh, untuk mengalamatkan JALAN

dalam NAMA2. gunakan operand NAMA2.JALAN, di mana nama struktur diikuti

 pertama kali oleh titik dan kemudian dengan nama field. Demikian juga, gunakan

 NAMA3.KOTA untuk merujuk ke kota dalam struktur NAMA3.

CONTOH 3-12;Hapus name di array NAME1

0000 B9 0020 MOV CX,320003 BO 00 MOV AL,00005 BE 0000R MOV SI,OFFSET NAME1.NAME0008 F3/AA REP STOSB

:Hapus street di array NAMES2000A B9 0020 MOV CX,32000D BO 00 MOV AL,00010 BE 0077R MOV SI,OFFSET NAME2.STREET0013 F3/AA REP STOSB

:Hapus Zip-code di array NAMES20015 B9 0050 MOV CX,50018 BO 00 MOV AL,0001A BE 0100R MOV SI,OFFSET NAME3.ZIP0013 F3/AA REP STOSB

Urutan instruksi yang pendek tampak dalam Contoh 3-12 yang memperjelas field nama

dalam struktur NAME1, field alamal dalarn struktur NAME2, dan field kode POS dalam

sruktur NAME3. Fungsi dan operasi instruksi dalam program ini didefinisikan dalam bab

 berikutnya dalam teks. Anda dapat merujuk contoh ini pada saat instruksi instruksi ini

dipelajari.

3-2.MODE PENGALAMATAN MEMORI PROGRAM.

Mode pengalamatan memori program, yang digunakan dengan lnstriksi JMP dan CALL.

terdiri, dari tiga bentuk yang berbeda: Langsung, relative, dan tidak langsung. Bagian ini

menyajikan ketiga bentuk pengalamatan tersebut, dengan meoggunakan instruksi JMP

untuk mengilustrasikan operasi ini.

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 39/55

 

3-1 MODE PENGALAMATAN-DATA

Pengalamatan Memori Program Langsung 

 pengalamatan memori program langsung adalah apa yang digunakan oleh mikroprosesor

untuk semua loncatan dan panggilannya. Pengalamatan memori program juga digunakan

dalam bahasa tingkat tinggi, satunya seperti bahasa BASIC yaitu instruksi GOTO dan

GOSUB. Mikroprosesor menggunakan bentuk pcngalamatan ini, tetapi tidak sesering

menggunakan pengalamatan memori program relatif dan tidak langsung.

Instruksi-instruksi untuk pengalamatan memogi program Iangsung menyimpan alamat

dengan opcode. Misalnya, jika sebuah program akan meloncat (jump) ke lokasi memori

10000H untuk instruksi berikutnya, alamat (10000H) disimpan mengikuti opcode dalarn

momori. Gambar 3-14 menunjukan instruksi JMP antar segmen secara langsung dan

empat byte yang dibutuhkan untuk menyimpan alamat 10000H. Instruksi JMP ini mengisi

CS dengan 1000H dan IP dengan 0000H untuk meloncat ke lokasi memori 10000H untuk

instriksi berikutnya. (loncat antar segmen  merupakan loncat ke lokasi memori.

GAMBAR 3-14 Versi bahasa mesin 5-byte untuk instruksi JMP [10000H]

manapun dalam seluruh sistem memori). Loncat Iangsung sering disebut loacatan jauh

karena dapat meloncat ke setiap lokasi mernori untuk instruksi berikutnya. Dalam mode

real, loncat jauh mengakses setiap lokasi dalam memori 1M byte yang pertama dengan

mengubah CS dan IP. Dalam operasi mode terlindung, loncat jauh mengakses deskripcor

segmen kode yang baru dan Label deskniptor. mengijinkannya untuk loncatan ke setiap

lokasi memori dalam seluruh memori 4G-byte pada rnikroprosesor 80386 sampai

Pentium II.

Satu-satunya instruksi lainnya yang menggunakan pengalamatan program

langsung adalah instruksi CALL antar segmen atau jauh. Biasanya, nama alamat rnemori

disebul label, mengacu pada suatu lokasi yang dipanggil atau diloncati ke bukan suatu

alarnal numerik yang sebenarnya. Pada saat menggunakan label dengan instruksi CALL

E A  0 0  0 0 0 0 1 0

Opcode Offset (Rendah) Offset (Tinggi) Segmen (Rendah) Segmen (Tinggi)

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 40/55

 

3-1 MODE PENGALAMATAN-DATA

atau JMP, maka sebagian besar assembler memilih bentuk pengalarnatan program yang

 paling baik.

Pengalamatan Memori Program Relatif

Pengalamatan memori program relatif tidak terdapat di dalam mikroproseso versi

lama, namun tersedia pada kerabat mikroprosesor ini. Istilah relatif   sebenamya berati

relatif terhadap  pointer instruksi (IP).‖ Misalnya, jika suatu instruksi JMP akan

melompati dua byte berikutnya, maka alarnat dalam hubungannya dengan penunjuk

instruksi adalah yang ditambahkan ke penunjuk instruksi. flat ini mengembangkan alarnat

instruksi program berikutnya. Contoh instruksi IMP relatif digambarkan pada Gambar 3-

15. Perhatikan bahwa instruksi JMP adalah instruksi 1-byte, dengan displacement satu-

 byte atau dua-byte yang ditambahkan ke penunjuk instruksi. Displacement satu-byle

digunakan dalam loncat pendek, dan displacement 2-byte digunakan dengan loncat dekat

dan panggil. Kedua tipe tersebut dipentimbangkan menjadi loncat intra segmen.

(loncatan intra segmen merupakan loncat ke mana saja dalam segmen kode saat ini.).

Dalam 80386 dai versi di atasnya. displacement dapat juga bernilai 32-bit, dengan

mengijinkan mereka untuk mcnggunakan pengalamatan retatif ke setiap lokasi dalam

segmen kode 4G byte.

Instruksi JMP dan CALL relatif berisi baik displacement 8-bit dan 16-bit. (Pada

80380 dan versi di atasnya mempunyai displacement 8-bit atau 32-bit.) Semua assembler

Scara otomatis menghitumg jarak pada displacement dan rnemilih bentuk satu dua-,atau

empat-byte yang tepat. Jika jaraknya terlalu besar untuk displacement dua byte dalam

mikroprosesor 8086 sampai 80286, banyak assembler menggunakan JMP langsung.

Displacement 8-bit (pendek) mcmpunyai jangkauan loncatan antara +127 da

 — 128 byte dan instruksi berikutnya, sedangkan displacement 16-bit (dekat) rnempunyai

 jangkauan ± 32K byte. Dalam 80386 dan versi di atasnya. displacement 32-bit

memungkinkan jangkauan ± 2G byte. Displacement 32-bit hanya dapat digunakan dalam

mode tertindung.

Pengalamatan Memori Program Tidak langsung

Mikroproscsor mcmungkinkan beberapa bentuk pengalamatan memori program tidak

langsung untuk instruksi JMP dan CALL. Tabel 3-10 mencatat beberapa instruksi jump

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 41/55

 

3-1 MODE PENGALAMATAN-DATA

tidak langsung dalam program yang bisa diterima yang menggunakan semua register 16-

 bit (AX. BX, CX, DX, SR, BP, Dl atau SI). Semua register relatif ([BP]. [BX], [DI],

GAMBAR 3-16 Tabel loncat yang TABLE DW LOC0 menyimpan alamat dan beraneka DW LOC1 

ragam program. Alamat sebenamya DW LOC2 

dipdih dan TABLE yang ditentukan DW LOC3 o4eh indeks yang disiinpan dengan

instruksl loncat.

atau [SI]; dan sernua register relatif dengan displacement. Dalarn 80386 dan versi

diatasnya, register 32-bit dapat juga digunakan untuk menyimpan alamat atau alamat

tidak langsung dan JMP atau CALL relatif. Sebagai contoh, JMP EAX meloncat ke

alamat lokasi yang ada dalam regiter EAX.

GAMBAR 3-15 InstruksiJMP [2] melompati dua bytememori berikutnya yang

mengikuti instruksi JMP.

1000 B EB

10001 02 10002 -

10003 -

10004

JMP

JMP AXJMP CXJMP NEAR PTR[BX]

JMP TAVBLE[BX]

JMP ECX

JMP ECX

Lompat ke lokasi segmen kode sekarang yang dialamati oleh isi dariAXLompat ke lokasi segmen kode sekarang yang dialamati oleh isi dariCXLompat ke lokasi segmen kode sekarang yang dialamati oleh isi darilokasi memori segmen data yang dialamati oleh BXLompat ke lokasi segmen kode sekarang yang dialamati oleh isi darilokasi memori segmen data yang dialamati oleh DI ditambah 2Lompat ke lokasi segmen kode sekarang yang dialamati oleh isi darilokasi memori segmen data yang dialamati oleh TABLE ditambahBX

Lompat ke lokasi segmen kode sekarang yang dialamati oleh isi olehECX

Bahasa Rakitan Operasi

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 42/55

 

3-1 MODE PENGALAMATAN-DATA

Jika register 16-bit menyimpan alarnat instruksi JMP, maka loncatnya dekat. Sebagai

contoh, jika register BX berisi 1000H dan instnsksi JMP BX dieksekui, maka

rnikroprosesor meloncat ke alamat offset J000H dalarn scgmen kode saat ini.

Jika register relatif menyimpan alamat,Ioncatnya juga dapat dipertimbangkan

sebagai loncat tidak langsung. Sebagai contoh, JMP [BX] mengacu pada lokasi memori

dalam segrnen data pada alamat offset yang diisi dalam BX . Pada alamat offset mi

adalah bilangan 16-bit yang digunakan sebagai alamat offset dalam loncat antara segmen.

Tipe loncat ini kadang-kadang disebut loncat tidak, langsug-tidak langsung atau loncat

tidak Ian gung-ganda. 

Gambar 3-16 menunjukkan suatu tabel Ioncat yang disimpan, rnulai pada lokasi memori

TABEL. Tabel ini diacukan oleh program pendek yang digambarkan pada Contoh 3-13.

Dalam contoh ini, register BX disi dengan 4, sehingga pada saat menggabungkannya

dalam instrusi JMP TABLE [BX] dengan TABEL, alamat efektif adalah isi dan alamat

kedua dalam tabel loncat.

CONTOH 3-13

;memakai pengalamatan taklangsung untuksuatu

;loncatan;

0000 BB 004 MOV BX,4 ;alamat LOC20003 FF A7 23A1 R JMP TABLE [BX] ;lompat ke LOC 1

MODE PENGALAMATAN MEMORI STACK

Stack memegang peranan yang penting dalarn sernua rnikroprosesor.

menampung data sementara dan menyimpan alamat untuk kembali ke prosedur.

Memori stack adalah memori LIFO (last-in. first-out = masuk terakhir. keluar pertama)

yang menggambarkan cara data disimpan dan dihapus dan stack. Data ditempatkan pada

stack dengan intruksi PUSH dan dihapus dengan Instruksi POP, Instruksi CALL juga

menggunakan stack untuk menyirnpan alamat kernbali prosedur dan instruksi RET

(kembali) untuk menghapus alamat kembali dari stack.

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 43/55

 

3-1 MODE PENGALAMATAN-DATA

Memori stack dipelihara oleh dua register. stack pointer (SP atau ESP) dan stack

segment register (SS). Bila suatu data word dipaksakan masuk ke stack [lihat Gambar 3-

17(a)], 8-bit orde-tinggi ditempatkan dalam lokasi yang dialamatkan oleh SP-1. 8-bit orde

rendah ditempatkan pada lokasi yang dialamatkan oleh SP-2. SP kemudian dikurangi oleh

dua sehingga data word berikutnya disimpan dalam lokasi memori stack yang tersedia

 berikutnya. Register SP/ESP selalu menunjuk pada daerah memori yang terletak di dalam

segmen stack. Register SP/ESP selalu ditambahkan pada SS x 10H untuk membentuk

alamat memori stack dalam mode real. Dalam operesi mode terlindung, register SS

menyimpan selektor yang mengakses deskriptor untuk alamal basis dari segmen stack.

Blila data dimunculkan dan stack (lihat Gambar 3-17(b), 8 bit orde-rendah

dihilangkan dari lokasi yang ditunjuk oleh SR. 8 bit orde-tinggi dihilangkan dari lokasi

yang ditunjuk oleh SP+1. Register SP kernudian ditambah dengan 2. Tabel 3-11 mencatat

 beberapa instruksi PUSH dan POP yang terdapat dalam mikroprosesor. Perhatikan bahwa

PUSH dun POP sealu menyimpan atau mencari kembali data word-bukan byte-dalarn

mikroprosesor 8086 sampai 80286. 80386 dan versi di atasnya mengijinkan word dan

+

1 2

3 41 2 3 41 2 3 4

EAX

EBX

ECX

EDX

ESP

SS x 10H

(a)

Array register

Memori

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 44/55

 

3-1 MODE PENGALAMATAN-DATA

GAMBAR 3-17 Instruksi PUSH dan POP. (a) PUSH BX menempatkan isi BX ke

dalam stack, (b) POP CX menghapus data dari stack dan menempatkannya kedalam CX. Kedua instruksi diperlihatkan setelah eksekusi.

+

1 2 3 41 2 3 4

EAX

EBX

ECX

EDX

ESP

SS x 10H

(b)

Array register

1 2

3 4

Memori

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 45/55

 

3-1 MODE PENGALAMATAN-DATA

 Bahasa Rakitan Operasi 

POPF

POPFD

PUSHF

PUSHFD

PUSH AX

POP BX

PUSH DS

PUSH 1234H

POP CS

PUSH WORD PTR[BX]

PUSHA

POPA

PUSHAD

POPAD

POP EAX

PUSH EDI

doubleword dipindahkan ke dan dari stack. Data dapat dirnasukkan ke dalam

stack dan setiap regicter 16-bit atau register segmen: dalam X0386 dan versi di atasnya.dan setiap register 32-bit, Data dapat dikeluarkan dan stack ke dalam setiap register 16-bit

atau setiap register segmen kecuali CS. Alisan bahwa data tidak dapat dikeluarkan dan

stack ke dalam Cs adalah bahwa hal ini hanya mengubah bagian alarnat dan instruksi

 berikutnya.

lnstruksi PUSHA dan POPA merupakan instruksi masukan atau mengambil sernua isi

register, kecuali register segmen dalam stack. lnstruksi ini tidak tersedia dalam

mikroprosesor 8086/8088 larna. lnstruksi push segera juga baru ada di mikroprosesor

80286 sampal Pentium, Perhatikan contoh-contoh dalam Tabel 3-11 yang

Memindahkan word dari stack dan menempatkannya ke flag

Memindahkan doubleword dan stack dan menempatkannya ke

register EFLAG

Menyalin flag ke stack

Menyalin register EFLAG ke stack

Menyalin AX ke stack

Memindahkan word dan stack dan menempatkannya ke dalarn BX

Menyalin DS ke stack

Menyalin 1234H ke stack

Instruksi ilegal

Menyalin word dari lokasi memori segmen data yang dialamatkan

oleh BX ke dalam stack

Menyalin isi word dan AX, CX, DX.BX. SP, BP, DI. Ian SI ke stack

Memindahkan data dan stack dan menempatkannya ke dalam SI, DI,

BP, SP, BX, DX, CX, dan AX

Menyalin isi doubleword dari EAX, ECX, EDX, EBX, ESP, EBP,

EDI dan ESI ke stackMemindahkan data dari stack dan rnenempatkannya ke dalam ESI,

EDI, EBP, ESP, EBX, EDX, ECX, dan EAX

Memindahkan data dari stack dan rnenempatkannya ke dalam

EAX Menyalin EDI Ice stack

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 46/55

 

3-1 MODE PENGALAMATAN-DATA

memperlihatkan urutan register yang dipindahkan dengan instruksi PUSHA dan POPA.

80386 dan versi di atasnya juga mengijinkan isi recister 32-bit dirnasukkan atau

dikeluarkan dari stack.

Contoh 3-14 mencatat suaru program pendek yang memasukkan isi AX. BX. dan

CX ke dalam stack. POP yang pertama mencari kembali nilai yang dimasukkan ke dalarn

stack dan CX dan rnenempatkannya ke dalam AX. POP yang kedua menempatkan nilai

asli dari BX ke dalain CX. POP yang terathir menernpakan nilai asli dan AX ke dalarn

RX,

CONTOH 3-14

• MODEL TINY :PILIH MODEL0000 • CODE ;awal segmen code

• STARTUP 0100 B8 1000 MOV AX,1000H ;muati data uji

0103 BB 2000 MOV BX,2000H

0106 B9 3000 MOV CX,3000H

0109 50 PUSH AX ;1000H ke stack

010A 53 PUSH BX ;2000H ke stack010B 51 PUSH CX ;3000H ke stack010C 58 POP AX ;3000H ke AX010D 59 POP CX ;2000H ke CX010C 5B POP BX ;1000H ke BX

.EXIT ;keluar ke DOS;akhir file

RINGKASAN

1.  Mode pengalamatan data mencakup pengalamatan register, segera, langsung,

register tidak langsung, basis-plus-indeks, registerrelatif dan basis relative-

 plus-indeks. Dalam mikroprosesor 80386 sampai Pentium II, mode

 pengalamatan tambahannya adalah pengalamatan indeks- berskala.

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 47/55

 

3-1 MODE PENGALAMATAN-DATA

2.  Mode pengalamatan memori program mencakup pengalamatan langsung,

relative dan tidak langsung. 

3.  Table 3-12 mencatat semua mode pengalamatan data mode real yang terdapat

di dalam mikroprosesor 8086 sampai 80286. Perhatikan bahwa 80386 dan

versi di atasnya menggunakan mode ini, ditambah banyak lagi yang

didefinisikan didalam bab ini. Dalam mode terlindung, fungsi register segmen

adlah untuk pengalamatkan pendeskripsi yang beralamat basis dari segmen

memori.

4.  Mikroprosesor 80386, 80486, Pentium, Pentium Pro dan Pentium II

mempunyai mempunyai mode pengalamatan tambahan yang memungkinkan

register 32-bit EAX, EBX, ECX, EDX, EBP, EDI, dan ESI untuk

mengalamatkan memori. Meskipun mode pengalamatan ini sangat banyak

untuk dapat dicatat dalam bentuk tabular, pada umumnya, setiap register ini

 berfungsi dengan cara yang sama dalam table 3-12. sebagai contoh, MOV AL,

TABLE[EBX+2*ECX+10H] merupakan mode pengalamatan yang sah pada

mikroprosesor 80386/ 80486/Pentium II.

5.  Instruksi MOV menyalin isi dari operand sumber ke operand tujuannya.

Sumber tidak pernah berubah pada setiap instruksi.

6.   pengalamatn register menguraikan setiap register 8-bit (AH, AL, BH, BL, CH,

CL, DH atau DL), atau setiap register 16-bit (AX, BX, CX, DX, SP, BP, SI,

atau DI). Rwgister segmen (CS,DS,SS atau ES) juga dapat dialamatkan untuk

memindahkan data antara register segmendan register/lokasi memori 16 bit

atau untuk PUSH dan POP. Dalam mikroprosesor 80386 sampai Pentium II,

register extended 32-bit juga digunakan untuk pengalamatan register; mereka

terdiri dari EAX, EBX, ECX, EDX, EBP, EDI, dan ESI. Juga tersedia register

segmen FS dan GS pada mikroprosesor 80386 dan versi di atasnya.

7.  Instruksi segera MOV memindahkan data yang berukuran byte atau word

yang secara langsung mengikuti opcode ke dalam register atau lokasi memori.

Pengalamatan segera memanipulasi data konstan dalam program. Dalam

80386 dan versi di atasnya, data segera yang berukuran doubleword dapat juga

dimuat ke dalam register 32-byte atau lokasi memori.

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 48/55

 

3-1 MODE PENGALAMATAN-DATA

8.  Pernyataan .MODEL digunakan dengan bahasa rakitan untuk

mengidentifikasikan awal file dan tipe model memori yang digunakan dengan

file. Jika ukurannya TINY,, program mempunyai satu segmen, yaitu segmen

kode yang dikompilasi seperti program perintah (.COM). Jika model SMALL

digunakan, maka program mengguanaka segmen kode dan data, dan

mengkomplikasi sebagai program ekskusi (.EXE). ukuran model dan

atributnya yang laian ada di dalam lampiran A.

TABEL 3-12 contoh mode pengalamatan data mode real.

Bahasa Rakitan Operasi

MOV AL,BL

MOV AX,BX

MOV EAX,ECX

MOV DS,CX

MOV AL,LIST

MOV CH,DATA1

MOV ES,DATA2

MOV AL,12

MOV AL,[BP]

MOV AL,[BX]

MOV AL,[DI]

MOV AL,[SI]

MOV AL,[BP+2]

MOV AL,[BX-4]

MOV AL,[DI+1000H]

MOV AL,[SI+300]

MOV AL,LIST[BP]

MOV AL,LIST[BX]

MOV AL,LIST[DI]

Pengalamatan register 8-bit

Pengalamatan register 16-bit

Pengalamatan register 32-bit

Pengalamatan register segmen

(DSx10H)+LIST

(DSx10H)+DATA1

(DSx10H)+DATA2

Data segera 12H

(SSx10H)+BP

(DSx10H)+BX

(DSx10H)+DI

(DSx10H)+SI

(SSx10H)+BP+2

(DSx10H)+BX-4

(DSx10H)+DI+1000H

(DSx10H)+SI+300H

(SSx10H)+LIST+BP

(DSx10H)+LIST+BX

(DSx10H)+LIST+DI

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 49/55

 

3-1 MODE PENGALAMATAN-DATA

MOV AL,LIST[SI]

MOV AL,LIST[BP+2]

MOV AL,LIST[BX-6]

MOV AL,LIST[DI+100H]

MOV AL,LIST[SI+200H]

MOV AL,[BP+DI]

MOV AL,[BP+SI]

MOV AL,[BX+DI]

MOV AL,[BX+SI]

MOV AL,[BP+DI+4]

MOV AL,[BP+SI-8]

MOV AL,[BX+DI+10H]

MOV AL,[BX+SI-10H]

MOV AL,LIST[BP+DI]

MOV AL,LIST[BP+SI]

MOV AL,LIST[BX+DI]

MOV AL,LIST[BX+SI]

MOV AL,LIST[BP+DI+2]

MOV AL,LIST[BP+SI-7]

MOV AL,LIST[BX+DI+3]

MOV AL,LIST[BX+SI-2]

(DSx10H)+LIST+SI

(SSx10H)+LIST+BP+2

(DSx10H)+LIST+BX-6

(DSx10H)+LIST+DI+100H

(DSx10H)+LIST+SI+200H

(SSx10H)+BP+DI

(DSx10H)+BP+SI

(DSx10H)+BX+DI

(DSx10H)+BX+SI

(SSx10H)+BP+DI+4

(DSx10H)+BP+SI-8

(DSx10H)+BX+DI+10H

(DSx10H)+BX+DI-10H

(SSx10H)+LIST+BP+DI

(SSx10H)+LIST+BP+SI

(DSx10H)+LIST+BX+DI

(DSx10H)+LIST+BX+SI

(SSx10H)+LIST+BP+DI+2

(SSx10H)+LIST+BP+SI-7

(DSx10H)+LIST+BX+DI+3

(DSx10H)+LIST+BX+SI-2

9.  Pengalamatan data langsung terjadi dalam dua bentuk pada mikroprosesor. (1)

 pengalamatan langsung dan (2) pengalamatan displacement. Kedua bentuk

 pengalamatan identik kecuali bahwa pengalamatan langsung digunakan untuk

memindahkan data antara EAX, AX, atau AL dan memori; pengalamatan

displacement digunakan pada setiap pemindahan register-memori.memerlukan

tiga byte memori, sedangkan pengalamatan displacement memerlukan empat byte.

Perhatikan beberapa instruksi ini pada 80386 dan versi diatasnya memerlukan byte

tambahan dalam bentuk awalan (prefiks) untuk ukuran register dan operand. 

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 50/55

 

3-1 MODE PENGALAMATAN-DATA

10. Pengalamatan register tidak langsung memungkinkan data dialamatkan pada lokasi

memori yang ditunjukkan baik oleh register basis (BP dan BX) maupun register

indeks (DI dan SI). Dalam 80386 dan versi diatasnya, register 32-bit EAX, EBX,

ECX, EDX, EBP, EDI, dan ESI digunakan untuk mengalamatkan data memori. 

11. Pengalamatan basis-plus-indeks sering digunakan untuk mengalamatkan data dalam

suatu array.Alamat memori untuk mode ini dibentuk dengan menambahkan register

 basis, register indeks, dan isi register segmen dikali 10H.Dalam 80386 dan versi

diatasnya, register basis dan register indeks bisa berupa setiap register 32-bit kecuali

EIP dan ESP. 

12. Pengalamatan register relative menggunakan baik register basis maupun registerindeks ditambah displacement untuk mengakses data memori. 

13. Pengalamatan basis relative-plus-indeks digunakan untuk mengalamatkan data

didalam array dua dimensi. Alamat ini dibentuk dengan menambahkan register basis,

register indeks, displacement, dan isi register segmen dikali 10H. 

14. Pengalamatan indeks-berskala adalah keunikan mikroposesor 80386 sampai Pentium

II. Register kedua dari dua register (indeks) disklakan dengan faktor 2X, 4X, atau 8X

untuk mengakses data word, doubleword, atau quadword dalam array memori. MOV

AX, [EBX+2*ECX] dan MOV [4*ECX], EDX merupakan contoh-contoh dari

instruksi indeks-berskala. 

15. Struktur data merupakan pola untuk penyimpanan array data dan dialamatkan oleh

nama array dan field. Sebagai contoh, array NUMBER dan field TEN dari array

 NUMBER dialamatkan sebagai NUMBER.TEN.

16. Pengalamatan memori program langsung dimungkinkan dengan instruksi JMP dan

CALL ke setiap lokasi dalam sistem memori. Dengan mode pengalamatan ini, alamat

offset dan alamat segmen disimpan dengan instruksi. 

17. Pengalamatan program relatif memungkinkan instruksi JMP atau CALL untuk

mencabang ke depan atau ke belakang dalam segmen kode saat ini hingga lebih dari

± 32 K byte. Dalam 80386 dan versi diatasnya, displacement 32-bit memungkinkan

 percabangan ke setiap lokasi dalam segmen kode saat ini dengan menggunakan nilai

displacement ± 2 G byte. Displacement 32-bit hanya dapat digunakan dalam mode

terlindung. 

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 51/55

 

3-1 MODE PENGALAMATAN-DATA

18.  pengalamatan program tidak langsung memungkinkan instruksi JMP dan CALL

untuk mengalamatkan bagian program atau subrutin lainnya secara tidak langsung

melalui suatu register atau lokasi memori. 

19. Instruksi PUSH dan POP memindahkan data word antara stack dan register atau

lokasi memori. Instruksi PUSH segera tersedia untuk menempatkan data segera ke

dalam stack. Instruksi PUSHA dan POPA memindahkan AX, CX, DX, BX, BP, SP,

SI, dan DI antara stack dan register ini. Dalam mikroposesor 80386 dan diatasnya,

register extended 32-bit dan flag extended dpat juga dipindahkan antara register dan

stack. PUSHFD menyimpan EFLAGS, sedangkan PUSHF menyimpan FLAGS. 

20. Contoh 3-15 memperlihatkan banyak mode pengalamatanyang dijelaskan dalam babini. Contoh program dibawah mengisi ARRAY1 dari lokasi 0000:00000000:0009.

Program ini kemudian mengisi ARRAY2-0 sampai 9. Akhirnya, program itu

mengubah isi ARRAY1 elemen 2 dengan ARRAY2 elemen 3.

CONTOH 3-15

0000 MODEL SMALL ; pilih model SMALLDATA ; awal segmen DATA

0000 000A [ ARRAY1 DB 10 DUP (?) ; cadangan untukARRAY1

00]

0000 000A [ ARRAY2 DB 10 DUP (?) ; cadangan untukARRAY200

]0000 CODE ; awal segmen CODE

STARTUP ; awal program

0017 B8 0000 MOV AX, 0 ;segmen ES 0000H001A 8E C0 MOV ES, AX

001C BF 0000 MOV DI, 0 ; alamati elemen 0001F B9 000A MOV CX, 10 ; penghitungan 100022 LAB1:0022 26 : 8A 05 MOV AL, ES: [DI] ; salin data0025 88 85 0000 R MOV ARRAY1[DI] ; ke ARRAY10029 47 INC DI002A E2 F6 LOOP LAB1

002C BF 0000 MOV DI, 0 ; alamati elemen 0

002F B9 000A MOV CX, 10 ; penghitungan 10

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 52/55

 

3-1 MODE PENGALAMATAN-DATA

0032 B0 00 MOV AL, 0 ; nilai awal0034 LAB2:

0034 88 85 000A R MOV ARRAY2[DI], AL ; isi ARRAY20038 FE C0 INC AL003A 47 INC DI003B E2 F7 LOOP LAB2

003D BF 0003 MOV DI, 3 ; pertukaran data array0040 8A 85 0000 R MOV AL, ARRAY1[DI]0044 8A A5 000B R MOV AH, ARRAY2[DI+1]0048 88 A5 0000 R MOV ARRAY1 [DI], AH004C 88 85 000B R MOV ARRAY2 [DI+1], AL

EXIT ; keluar ke DOSEND ; akhir file

PERTANYAAN DAN SOAL

1.  Apa yang dilakukan oleh instruksi MOV berikut ini?

(a) MOV AX, BX

(b) MOV BX, AX

(c) MOV ESP, EBP

(d) MOV AX,CS

2.  Sebutkan register 8-bit yang digunakan untuk pengalamatan register.

3.  Sebutkan register 16-bit yang digunakan untuk pengalamatan register.

4.  Sebutkan register 32-bit yang digunakan untuk pengalamatan register pada

mikroposesor 80386 sampai Pentium II.

5.  Sebutkan register segmen 16-bit yang digunakan dalam pengamatan

register oleh MOV, PUSH, dan POP.

6.  Apa yang tidak beres dengan instruksi MOV BL, CX.

7. Apa yang tidak beres dengan instruksi MOV DS, SS?

8. Pilihlah sebuah instruksi untuk setiap tugas ini:

a)  Salin EBX ke dalam EDX

 b)  Salin BL ke dalam CL

c)  Salin SI ke dalam BX

d)  Salin DS ke dalam AX

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 53/55

 

3-1 MODE PENGALAMATAN-DATA

e)  Salin AL ke dalam AH

9. Pilihlah sebuah instruksi untuk setiap tugas berikut ini :

a)   pindahkan 12 H ke balam AL

 b)   pindahkan 123Ah kedalam Ax

c)   pindahkan 0CDH kedalam Cl

d)   pindahkan 1000H kedalam Si

e)   pindahkan 1200A2h kedalam EBX

21. Symbol khusus apa yang kadang –  kadang menandai data segera?

22. Apa kegunaan dari pernyataan .MODEL TINY?

23. Direktif bahasa rakitan apa yang menunjukkan awal segmen CODE?

24. Apa yang dimaksud dengan label?

25. Intruksi MOV ditempatkan dalam field pernyataan apa?

26. Label boleh diawali dengan model apa?

27. Apa kegunaan dari direktif .EXIT?

28. Apakah pernyataan dari .MODEL TINY menyebabkan suatu program untuk

mengkompilasi suatu program eksekusi?

29. Tugas apa yang dikerjakan direktif. STARTUP dalam model memori kecil?

30. Apa itu displacement? Bagai mana displacemen menentukan alamat memori

dalam intrupsi MOV[2000H], AL?

31. Apa yang ditunjukkan oleh symbol [ ]?

32. Misalkan DS=0200H. BX=0300H, dan DI=400H. tentukan memori yang

diakses oleh setiap intrupsi berikut ini, dengan asumsi operasi mode real:

a) MOV AL, [1234H]

 b) MOV EAX, [BX]

c) MOV [DI], AL

22. Apa yang tidak beres dengan instruksi MOV [BX], [DI]?

23. Pilihlah suatu instruksi yang memerlukan BYTE PTR?

24. Pilihlah suatu instruksi yang memerlukan WORD PTR?

25. Pilihlah suatu instruksi yang memerlukan DWORD PTR?

26. Jelaskan perbedaa antara instruksi MOV BX, DATA dan instruksi MOV BX,

OFFSET DATA?

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 54/55

 

3-1 MODE PENGALAMATAN-DATA

27. Misalkan bahwa DS = 1000H, SS = 2000H, BP = 1000H, dan DI = 0100H.

tentukan alamat memori yang diakses oleh setiap instruksi berikut ini, dengan

asumsi operasi mode real:

a)  MOV AL, [BP+DI]

 b)  MOV CX,[DI]

c)  MOV EDX,[BP]

28. Apa yang tidak bers dengan instruksi MOV AL,[BX]SI]?

29. Misalkan bahwa DS = 1200H, BX = 0100H dan SI = 0250H. tentukan alamat

yang diakses oleh setiap instruksi berikut ini, dengan asumsi operasi mode

real:

a)  MOV [100H],DL

 b)  MOV [SI+100H],EAX

c)  MOV DL,[BX+100H]

30. Misalkan bahwa DS = 1100H, BX = 0200H, LIST = 0250H dan SI = 0500H.

tentukan alamat yang diakses oleh setiap instruksi berikut ini, dengan asumsi

operasi mode real:

a)  MOV LIST[S],EDX

 b)  MOV CL, LIST [BX+SI]

c)  MOV CH,[BX+SI]

31. Misalkan bahwa DS = 1300H, SS = 1400H dan BP = 1500H, dan SI = 0100H.

tentukan alamat yang diakses oleh setiap instruksi berikut ini, dengan asumsi

operasi mode real:

a)  MOV EAX [BP+200H]

 b)  MOV AL,[BP+SI-200H]

c)  MOV AL,[SI-0100H]

32. Register basis mana yang mengalamat kan data dalam segmen stack?

33. Misalkan bahwa EAX = 00001000H, EBX = 00002000H dan DS = 0010H.

tentukan alamat yang diakses oleh setiap instruksi berikut ini, dengan asumsi

operasi mode real:

a)  MOV EAX, [EAX+EBX]

 b)  MOV [EAX+2*EBX],CL

7/21/2019 kontroler atmega 8535

http://slidepdf.com/reader/full/kontroler-atmega-8535 55/55

 

3-1 MODE PENGALAMATAN-DATA

c)  MOV DH,[EBX+4*EAX+1000H]

34. Kembangkan struktur data yang mempunyai lima field dari satu word yang

setiap fieldnya dinamakan FI, F2, F3, F4, dan F5 dengan nama struktur

FIELDS.

35. Perlihatkan bagaimana field F3 dari struktur data yang dibentuk dalam

 pertanyaan 4 dialamatkan dalam suatu program.

36. Sebutkan 3 mode pengalamatan memori program.

37. Berapa banyak byte memori untuk menyimpan suatu instuksi JMP jauh

langsung? Apa yang disimpan didalam setiap byte?

38. Apa perbedaan antara loncat (jump) antarsegmen dan intrasegmen?

39. Jika loncat dekat (near jump) menggunakan displacement 16 bit bertanda,

 bagaimana dapat meloncat kesetiap lokasi memori dalam segment code saat

ini?

40. 80386 dan versi diatasnya menggunakan displacement -bit

umtuk loncat kesetiap lokasi dalam segment code byte 4G.

41. Apa yang dimaksud dengan loncat jauh (far jump)?

42. Jika instruksi JMP disimpan pada lokasi memori 100H dalam segment code

saat ini, maka akan menjadi loncat jika loncat ke lokasi memori

200H dalam segmen code saat ini.

43. Tunjukka interupsi JMP yang mana (pendek, deket atau jauh) yang terbentuk,

 jika interupsi JMP THERE disimpan didalam alamat memori 10000H dan

alamat THERE adalah :

a) 10020H.

 b) 11000H

c) 0FFFEH

d) 30000H

44. Buatlah sebuah instruksi JMP yang akan melompat ke alamat yang

ditunjukkan oleh register BX.