RANCANG BANGUN ROBOT ARM BERBASIS MIKROKONTROLER ATMEGA 8535
kontroler atmega 8535
Transcript of kontroler atmega 8535
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.