Laboratorium Digital Departemen Teknik Elektro Fakultas Teknik Universitas Indonesia MODUL PRAKTIKUM MIKROPROSESOR DAN MIKROKONTROLER
Modul 2: Pemrograman Mikroprosesor dengan Bahasa Assembly
Tujuan:
1. Memahami hubungan antara bahasa Assembly
dengan arsitektur mikroprosesor.
2. Mempelajari konsep pengolahan data dalam
memori.
3. Memahami serta mempelajari cara memrogram
mikroprosesor dengan bahasa Assembly.
4. Menganalisa proses manipulasi data pada
mikroprosesor dan memori.
Modul Praktikum Mikroprosesor dan Mikrokontroler
Laboratorium Digital, Departemen Teknik Elektro
Modul 2: Pemrograman Mikroprosesor dengan Bahasa Assembly 1 | THE MICROPROCESSOR-‐BASED PC SYSTEM 3
2 | THE MICROPROCESSOR ARCHITECTURE 3
3 | DATA ADDRESSING MODES 9
4 | ASSEMBLY LANGUANGE PROGRAMMING 10
5 | DATA MOVEMENT INSTRUCTION 11
6 | HOW TO WRITE A PROGRAM 12
7 | REFERENCES 13
Copyright ©2014
Modul Praktikum Mikroprosesor dan Mikrokontroler
M O D U L 2 : P E M R O G A M A N M I K R O P R O S E S O R D E N G A N B A H A S A A S S E M B L Y
1 | THE MICROPROCESSOR-BASED PC SYSTEM
CPU (Central Processing Unit) sesuai dengan namanya merupakan “otak” pada
sebuah komputer. Semua kalkulasi, pengambilan keputusan, dan pemindahan data
dilakukan disini. CPU memiliki tempat penyimpanan yang disebut register. Dalam
sebuah CPU juga terdapat ALU (Arithmetic and Logic Unit) yang digunakan untuk
melakukan operasi – operasi penjumlahan, pengurangan, inversi, OR, AND, dan
XOR. Proses yang dilakukan CPU secara umum adalah sebagai berikut, mengambil
data dari register, kemudian diproses, dan selanjutnya dikembalikan lagi ke register.
2 | THE MICROPROCESSOR ARCHITECTURE
Pada keluarga 80x86, mikroprosesor 8086 merupakan mikroprosesor generasi
pertama yang diperkenalkan pada tahun 1978. Generasi ini berkembang hingga saat
ini (Pentium II di tahun 1997). Banyak sekali perbedaan – perbedaan yang terjadi
pada proses metamorfosa keluarga mikroprosesor ini. Tetapi perubahan yang terjadi
tetap selalu menjaga kompatibilitas mikroprosesor sebelumnya. Sehingga antara
generasi pertama hingga generasi saat ini masih memiliki kesamaan karakteristik
yang mendasar, kesamaan tersebut hanya terjadi bila mikroprosesor melakukan
operrasi - operasi 16-bit. Berikut adalah kesamaan yang dimiliki oleh keluarga 80x86.
! General Purpose Register
CPU memiliki 4 buah general purpose register yng selalu ditandai dengan akhiran
X, yaitu AX (Accumulator), BX (Base), CX (Count), dan DX (Data) dengan ukuran
masing-masing sebesar 16-bit. Register ini dapat dipisah menjadi dua bagian di
mana masing-masing bagian terdiri atas 8-bit. Bagian pertama disebut dengan “H”
(High) dan bagian yang lain sebagai “L” (Low). Register 8-bit ini dapat
menyimpan bilangan bulat posistif atara 0 sampai 127 dan bilangan bulat antara
–128 sampai +127. Register digunakan sebagai referensi awal untuk lokasi
alamat pada RAM disebabkan transfer data antara RAM dengan CPU
membutuhkan waktu yang cukup lama.
Modul Praktikum Mikroprosesor dan Mikrokontroler
Pada mikroprosesor 80386 ke atas akan mendapat tambahan register EAX
(Extended Accumulator), EBX (Extended Base), ECX (Extended Count), dan
EDX (Extended Data).
! Index Register
CPU juga memiliki 2 buah index register yang selalu ditandai dengan akhiran I,
yaitu SI (Source Index) dan DI (Destination Index). Register ini dapat digunakan
untuk penyimpanan, tetapi tidak dapat mengakses 1 byte pada satu waktu yang
bersamaan, sehingga membuat register ini kurang fleksibel. Tetapi SI dan DI
memiliki kekhususan dalam menangani operasi string.
Pada mikroprosesor 80386 ke atas akan mendapat tambahan register ESI
(Extended Source Index) dan EDI (Extended Destination Index).
! Pointer Register
Di dalam CPU mengenal 3 buah pointer register yang juga selalu ditandai dengan
akhiran P, yaitu IP, SP, dan BP. Pada mikroprosesor 80386 ke atas akan
mendapat tambahan register EIP (Extended Instruction Pointer), ESP (Extended
Stack Pointer), dan EBP (Extended Base Pointer).
" IP (Instruction Pointer)
Register menunjukan alamat di memori tempat dari intruksi selanjutnya akan
dieksekusi. Ketika eksekusi selesai, IP bertambah ke instruksi berikutnya.
Percobaan I - Sistem Kerja Mikroprosesor 9
15 7 0
AX AH AL
BX BH BL
CX CH CL
DX DH DL
Accumulator
Base
Count
Data
Multiply, devide, IO, dan fast arithmetic
Pointer to base address (data segment)
Count for loops, repeats, shifts, dan rotates
Multiply, devide, dan IO
Gambar 1 General-Purpose Registers untuk mikroprosesor keluarga 80x86
bilangan bulat posistif atara 0 sampai 127 dan bilangan bulat antara –128 sampai
+127. Register digunakan sebagai referensi awal untuk lokasi alamat pada RAM
disebabkan transfer data antara RAM dengan CPU membutuhkan waktu yang
cukup lama.
Pada mikroprosesor 80386 ke atas akan mendapat tambahan register EAX
(Extended Accumulator), EBX (Extended Base), ECX (Extended Count), dan EDX
(Extended Data).
� Index Register CPU juga memiliki 2 buah index register yang selalu ditandai dengan akhiran I,
yaitu SI (Source Index) dan DI (Destination Index). Register ini dapat digunakan
untuk penyimpanan, tetapi tidak dapat mengakses 1 byte pada satu waktu yang
bersamaan, sehingga membuat register ini kurang fleksibel. Tetapi SI dan DI
memiliki kekhususan dalam menangani operasi string.
Pada mikroprosesor 80386 ke atas akan mendapat tambahan register ESI
(Extended Source Index) dan EDI (Extended Destination Index).
� Pointer Register Di dalam CPU mengenal 3 buah pointer register yang juga selalu ditandai dengan
akhiran P, yaitu IP, SP, dan BP. Pada mikroprosesor 80386 ke atas akan
SI
DI
Source Index
Destination Index
Source string dan index pointer
Destination string dan index pointer
Gambar 2 Index Registers untuk mikroprosesor keluarga 80x86.
Percobaan I - Sistem Kerja Mikroprosesor 9
15 7 0
AX AH AL
BX BH BL
CX CH CL
DX DH DL
Accumulator
Base
Count
Data
Multiply, devide, IO, dan fast arithmetic
Pointer to base address (data segment)
Count for loops, repeats, shifts, dan rotates
Multiply, devide, dan IO
Gambar 1 General-Purpose Registers untuk mikroprosesor keluarga 80x86
bilangan bulat posistif atara 0 sampai 127 dan bilangan bulat antara –128 sampai
+127. Register digunakan sebagai referensi awal untuk lokasi alamat pada RAM
disebabkan transfer data antara RAM dengan CPU membutuhkan waktu yang
cukup lama.
Pada mikroprosesor 80386 ke atas akan mendapat tambahan register EAX
(Extended Accumulator), EBX (Extended Base), ECX (Extended Count), dan EDX
(Extended Data).
� Index Register CPU juga memiliki 2 buah index register yang selalu ditandai dengan akhiran I,
yaitu SI (Source Index) dan DI (Destination Index). Register ini dapat digunakan
untuk penyimpanan, tetapi tidak dapat mengakses 1 byte pada satu waktu yang
bersamaan, sehingga membuat register ini kurang fleksibel. Tetapi SI dan DI
memiliki kekhususan dalam menangani operasi string.
Pada mikroprosesor 80386 ke atas akan mendapat tambahan register ESI
(Extended Source Index) dan EDI (Extended Destination Index).
� Pointer Register Di dalam CPU mengenal 3 buah pointer register yang juga selalu ditandai dengan
akhiran P, yaitu IP, SP, dan BP. Pada mikroprosesor 80386 ke atas akan
SI
DI
Source Index
Destination Index
Source string dan index pointer
Destination string dan index pointer
Gambar 2 Index Registers untuk mikroprosesor keluarga 80x86.
Modul Praktikum Mikroprosesor dan Mikrokontroler
Instruksi “Jump”, nilai IP berubah mengikuti arah “Jump”. Sedangkan untuk
instruksi “Call”, nilai IP akan berubah kembali setelah dikembalikan dari stack.
" SP (Stack Pointer)
Stack menggunakan aturan sistem penyimpanan secara LIFO (Last In First
Out). Stack digunakan untuk menyimpan penunjukan alamat yang akan
terpakai kemudian, dan penunjukan alamat tersebut dapat dikeluarkan dari
stack pada saat akan digunakan. SP berpasangan dengan segment register
SS (SS:SP).
" BP (Base Pointer)
BP digunakan sebagai pencatat suatu alamat di memori tempat data. BP ini
berpasangan dengan segment register SS (SS:BP).
! Segmented Addressing dan Segment Register
“Segmented Addressing” adalah sebuah mekanisme internal yang mengijinkan
mikroprosesor untuk melakukan pengalamatan sebesar 1 Mbyte pada memori
utama. Dengan mekanisme ini mikroprosesor dapat mengakses memori utama
dengan cara mengkombinasikan 2 buah alamat 16-bit. Dua buah alamat tersebut
dapat di representasikan di dalam program sebagai berikut :
segmen:offset
Pada 16-bit alamat pertama, merupakan alamat segmen. Sedangkan alamat
berikutnya adalah alamat offset. Kerja yang dilakukan alamat segmen yaitu
memilih 64K area memori, dan alamat offset bekerja sebagai pemilih byte di
dalam sebuah area. Berikut akan dijelaskan mengenai cara kerjanya:
1. Alamat segmen akan digeser oleh mikroprosesor sebanyak 4-bit ke kiri,
sehingga akan menghasilkan alamat 20-bit dengan akhiran 0. Operasi ini
sama dengan efek pada perkalian 16.
2. Mikroprosesor akan menambahkan alamat 20-bit ini dengan alamat offset 16-
bit. Dimana alamat offset tidak mengalami pergeseran.
Percobaan I - Sistem Kerja Mikroprosesor 10
mendapat tambahan register EIP (Extended Instruction Pointer), ESP (Extended Stack Pointer), dan EBP (Extended Base Pointer).
� IP (Instruction Pointer) Register menunjukan alamat di memori tempat dari intruksi selanjutnya akan
dieksekusi. Ketika eksekusi selesai, IP bertambah ke instruksi berikutnya.
Instruksi “Jump”, nilai IP berubah mengikuti arah “Jump”. Sedangkan untuk instruksi “Call”, nilai IP akan berubah kembali setelah dikembalikan dari stack.
� SP (Stack Pointer) Stack menggunakan aturan sistem penyimpanan secara LIFO (Last In First Out). Stack digunakan untuk menyimpan penunjukan alamat yang akan
terpakai kemudian, dan penunjukan alamat tersebut dapat dikeluarkan dari
stack pada saat akan digunakan. SP berpasangan dengan segment register SS
(SS:SP).
� BP (Base Pointer) BP digunakan sebagai pencatat suatu alamat di memori tempat data. BP ini
berpasangan dengan segment register SS (SS:BP).
� Segmented Addressing dan Segment Register “Segmented Addressing” adalah sebuah mekanisme internal yang mengijinkan mikroprosesor untuk melakukan pengalamatan sebesar 1 Mbyte pada memori
utama 1. Dengan mekanisme ini mikroprosesor dapat mengakses memori utama
dengan cara mengkombinasikan 2 buah alamat 16-bit. Dua buah alamat tersebut
dapat di representasikan di dalam program sebagai berikut :
segmen:offset
Pada 16-bit alamat pertama, merupakan alamat segmen. Sedangkan alamat
berikutnya adalah alamat offset. Kerja yang dilakukan alamat segmen yaitu memilih
64K area memori, dan alamat offset bekerja sebagai pemilih byte di dalam sebuah
area. Berikut akan dijelaskan mengenai cara kerjanya:
BP
SP
IP
Base Pointer
Stack Pointer
Instruction Pointer
Pointer to base address (stack segment)
Pointer top of stack
Gambar 3 Pointer Registers untuk mikroprosesor keluarga 80x86
Modul Praktikum Mikroprosesor dan Mikrokontroler
3. Mikroprosesor menggunakan hasil dari alamat 20-bit ini yang disebut dengan
alamat fisik / physical Address yang digunakan untuk mengakses lokasi
alamat yang sebenarnya pada ukuran 1 Mbyte.
Gambar 4 merupakan ilustrasi proses “Segmented Addressing”. Sebenarnya
mikroprosesor keluarga 80x86 hanya dapat menangani pengalamatan 64K pada
satu waktu (karena ukuran register yang dipergunakan hanya sebesar 16-bit).
Dengan penggunaan mekanisme ini, mikroprosesor keluarga 80x86 mampu
untuk menjangkau seluruh alamat sebesar 1 Mbyte.
Ada 4 buah segment register yang selalu ditandai dengan akhiran S, yaitu CS,
DS, SS, dan ES. Sedangkan pada mikroprosesor 80386 ke atas terdapat
tambahan register segmen 16-bit, yaitu FS (Extra Segment) dan GS (Extra
Segment).
" ClS (Code Segment)
CS (Code Segment) selalu digunakan oleh mikroprosesor untuk menunjukan
tempat dari segmen alamat yang instruksi berikutnya akan diproses oleh IP
(Instruction Pointer). IP merupakan alamat offset. CS:IP merepresentasikan
instruksi berikutnya pada jangkauan alamat memori penuh.
" DS (Data Segment)
Register DS (Data Segment) biasanya digunakan untuk menunjukan tempat
segmen di mana data-data program disimpan. Umumnya isi dari register ini
tidak perlu diubah kecuali pada program residen.
Percobaan I - Sistem Kerja Mikroprosesor 11
1. Alamat segmen akan digeser oleh mikroprosesor sebanyak 4-bit ke kiri,
sehingga akan menghasilkan alamat 20-bit dengan akhiran 0. Operasi ini sama
dengan efek pada perkalian 16.
2. Mikroprosesor akan menambahkan alamat 20-bit ini dengan alamat offset 16-
bit. Dimana alamat offset tidak mengalami pergeseran.
3. Mikroprosesor menggunakan hasil dari alamat 20-bit ini yang disebut dengan
alamat fisik / physical Address yang digunakan untuk mengakses lokasi alamat
yang sebenarnya pada ukuran 1 Mbyte.
Gambar 4 merupakan ilustrasi proses “Segmented Addressing”. Sebenarnya mikroprosesor keluarga 80x86 hanya dapat menangani pengalamatan 64K pada
satu waktu (karena ukuran register yang dipergunakan hanya sebesar 16-bit).
Dengan penggunaan mekanisme ini, mikroprosesor keluarga 80x86 mampu untuk
menjangkau seluruh alamat sebesar 1 Mbyte.
Ada 4 buah segment register yang selalu ditandai dengan akhiran S, yaitu CS, DS,
SS, dan ES. Sedangkan pada mikroprosesor 80386 ke atas terdapat tambahan
register segmen 16-bit, yaitu FS (Extra Segment) dan GS (Extra Segment).
� CS (Code Segment) CS (Code Segment) selalu digunakan oleh mikroprosesor untuk menunjukan
tempat dari segmen alamat yang instruksi berikutnya akan diproses oleh IP
(Instruction Pointer). IP merupakan alamat offset. CS:IP merepresentasikan
instruksi berikutnya pada jangkauan alamat memori penuh.
1 Lihat percobaan III
15 0
16-bit segment register Segment register shifted left 4 bits
15 0
15 0
16-bit offset
20-bit physical address
0 19
Gambar 4 Mengilustrasikan bagaimana mikroprosesor keluarga 80x86 menghitung alamat fisik
Modul Praktikum Mikroprosesor dan Mikrokontroler
" SS (Stack Segment)
Ketika mikroprosesor mengakses data pada stack, proses tersebut
menggunakan SS (Stack Segment). SS:SP selalu menunjuk pada suatu
alamat di memori yang merupakan posisi dari stack.
" ES (Extra Segment)
Register ES (Extra Segment), sesuai dengan namanya adalah suatu register
bonus yang tidak mempunyai suatu tugas khusus. Register ES ini biasanya
digunakan untuk menunjukan suatu alamat di memori yang berada diluar
daerah standar.
ES sangat berperan di dalam instruksi string. Dengan cara ini, register DI
selalu relatif ke alamat segmen ES.
! Flag Register
Register ini berisikan flag yang merupakan laporan status dari CPU. Adapun flag
yang digunakan pada mikroprosesor 8086 keatas adalah:
O OverFlow Flag akan mencatat jika hasil yang didapat terlalu besar untuk ditempatkan didalam register
D Direction Digunakan pada operasi string untuk menunjukan arah proses
I Interrupt Enable CPU akan mengabaikan interupsi jika flag ini disable
T Trap Digunakan untuk proses instrusi secara bertahap
S Sign Flag akan mencatat jika hasil kalkulasi bernilai negatif.
Z Zero Flag akan mencatat jika hasil kalkulasi bernilai 0.
A Auxiliary Carry Flag akan mencatat jika operasi menghasilkan carry
Percobaan I - Sistem Kerja Mikroprosesor 12
� DS (Data Segment) Register DS (Data Segment) biasanya digunakan untuk menunjukan tempat
segmen di mana data-data program disimpan. Umumnya isi dari register ini
tidak perlu diubah kecuali pada program residen.
� SS (Stack Segment) Ketika mikroprosesor mengakses data pada stack, proses tersebut
menggunakan SS (Stack Segment). SS:SP selalu menunjuk pada suatu alamat
di memori yang merupakan posisi dari stack.
� ES (Extra Segment) Register ES (Extra Segment), sesuai dengan namanya adalah suatu register bonus yang tidak mempunyai suatu tugas khusus. Register ES ini biasanya
digunakan untuk menunjukan suatu alamat di memori yang berada diluar
daerah standar.
ES sangat berperan di dalam instruksi string. Dengan cara ini, register DI selalu
relatif ke alamat segmen ES.
� Flag Register Register ini berisikan flag yang merupakan laporan status dari CPU 2. Adapun flag
yang digunakan pada mikroprosesor 8086 keatas adalah :
O OverFlow Flag akan mencatat jika hasil yang didapat terlalu besar untuk ditempatkan didalam register
D Direction Digunakan pada operasi string untuk menunjukan arah proses
I Interrupt Enable CPU akan mengabaikan interupsi jika flag ini disable
T Trap Digunakan untuk proses instrusi secara bertahap
S Sign Flag akan mencatat jika hasil kalkulasi bernilai negatif.
Z Zero Flag akan mencatat jika hasil kalkulasi bernilai 0.
2 Lihat percobaan III
CS
DS
SS
ES
Code Segment
Data Segment
Stack Segment
Extra Segment
Gambar 5 Segment Register untuk mikroprosesor keluarga 80x86
Modul Praktikum Mikroprosesor dan Mikrokontroler
atau borrow pada 4-bit bagian rendah. Flag ini digunakan pada operasi BCD.
P Parity Flag akan mencatat jika bilangan yang dihasilkan adalah bilangan genap
C Carry Jika terjadi carry atau borrow pada operasi aritmatika maka akan dicatat oleh flag.
Tabel 1 Susunan flag yang digunakan pada mikroprosesor 8086 ke atas 1.
Sedangkan flag lain yang berlaku pada keluarga 80x86 ini adalah:
NT Nested Task * Flag yang berfungsi untuk menjaga jalannya interupsi yang terjadi secara berurutan
IOPL IO Protection Level * Flag ini terdiri atas 2 bit digunakan untuk mode proteksi
PE Protection Enable * Flag akan mencatat jika mode proteksi digunakan dan sebaliknya akan berada pada mode real
MP Monitor Coprosessor * Digunakan bersama flag trap untuk menangani terjadinya instruksi WAIT
EM Emulate Coprosessor * Flag ini digunakan untuk mengemulasikan prosesor matematik x87
TS Task Switched * Flag ini dapat dijumpai pada mikroprosesor 80286 ke atas
ET Extention Type * Flag ini digunakan untuk menentukan jenis prosesor matematik 80287 atau 80387
RF Resume Flag ** Flag ini dapat dijumpai pada mikroprosesor 80386 ke atas
1 Penamaan flag ini digunakan oleh Microsoft®, sedangkan Intel© menambahkannya dengan akhiran F pada tiap susunan. * Terdapat pada mikroprosesor 80286 ke atas ** Terdapat pada mikroprosesor 80386 ke atas
Percobaan I - Sistem Kerja Mikroprosesor 13
A Auxiliary Carry Flag akan mencatat jika operasi menghasilkan carry atau borrow pada 4-bit bagian rendah. Flag ini digunakan pada operasi BCD.
P Parity Flag akan mencatat jika bilangan yang dihasilkan adalah bilangan genap
C Carry Jika terjadi carry atau borrow pada operasi aritmatika maka akan dicatat oleh flag.
Tabel 1 Susunan flag yang digunakan pada mikroprosesor 8086 ke atas 3.
Sedangkan flag lain yang berlaku pada keluarga 80x86 ini adalah :
NT Nested Task * Flag yang berfungsi untuk menjaga jalannya interupsi yang terjadi secara berurutan
IOPL IO Protection Level * Flag ini terdiri atas 2 bit digunakan untuk mode proteksi
PE Protection Enable * Flag akan mencatat jika mode proteksi digunakan dan sebaliknya akan berada pada mode real
MP Monitor Coprosessor * Digunakan bersama flag trap untuk menangani terjadinya instruksi WAIT
EM Emulate Coprosessor * Flag ini digunakan untuk mengemulasikan prosesor matematik x87
TS Task Switched * Flag ini dapat dijumpai pada mikroprosesor 80286 ke atas
ET Extention Type * Flag ini digunakan untuk menentukan jenis prosesor matematik 80287 atau 80387
RF Resume Flag ** Flag ini dapat dijumpai pada mikroprosesor 80386 ke atas
VF Virtual 8086 mode ** Flag akan mencatat jika mode proteksi digunakan, sehingga memungkinkan menggunakan mode real pada saat mode proteksi digunakan.
Tabel 2 Susunan flag tambahan yang dapat digunakan pada mikroprosesor 80286 dan 80386
3 Penamaan flag ini digunakan oleh Microsoft£, sedangkan Intel¤ menambahkannya dengan akhiran F pada tiap susunan. * Terdapat pada mikroprosesor 80286 ke atas ** Terdapat pada mikroprosesor 80386 ke atas
NT
0 15 7
C P A Z S T I D O IOPL
Gambar 6 Model flag untuk mikroprosesor keluarga 80x86
Modul Praktikum Mikroprosesor dan Mikrokontroler
VF Virtual 8086 mode **
Flag akan mencatat jika mode proteksi digunakan, sehingga memungkinkan menggunakan mode real pada saat mode proteksi digunakan.
Tabel 2 Susunan flag tambahan yang dapat digunakan pada mikroprosesor 80286 dan 80386
3 | DATA ADDRESSING MODES
# MOV Instruction
MOV merupakan instruksi (dalam Assembly disebut sebagai opcode—operation
code) mendasar dari pemroraman Assembly. Opcode ini menyalin (copy)
sebuah data dari sumber ke tujuan (source ke destination). Karena
fungsinya adalah menyalin, maka data di tempat sumber akan tetap tersimpan.
Secara umum penulisan intruksi ini adalah sebagai berikut:
MOV dapat digunakan untuk menyalin data antara register ke register, register
ke memori atau sebaliknya. MOV tidak dapat digunakan untuk menyalin data
dari memori ke memori.
# Register Addressing
Jenis pengalamatan ini adalah untuk menyalin data dari sebuah register
ke register lainnya. Pada prinsipnya seluruh register yang termasuk dalam
program visible register dapat digunakan sebagai source dan destination dari
mode pengalamatan ini. Namun, ukuran (jumlah bit) dari kedua source dan
destination haruslah sama. Contoh:
MOV CX,DX
MOV ECX,EDI
Segment register dapat pula menjadi source dan destination pada instruksi
ini tetapi penyalinan data dari sebuah segment register ke segment register
lainnya tidak dapat dilakukan secara langsung. Sehingga instruksi MOV DS,CS
dikatakan sebagai instruksi illegal.
Modul Praktikum Mikroprosesor dan Mikrokontroler # Base-plus-index Addressing
Merupakan pengalamatan yang menyalin byte atau word antara sebuah
register dan lokasi memori yang dialamatkan oleh base register (BP atau BX)
ditambah index register (DI atau SI). Contoh:
MOV [BX+DI], CL
Instruksi tersebut mengkopi isi dari CL ke data segmen yang dialamatkan
oleh penjumlahan BX dan DI.
# Base-relative-plus-index Addressing
Merupakan pengalamatan yang menyalin byte atau word antara register dan
lokasi memori yang dialamatkan oleh base dan index register ditambah
displacement. Contoh:
MOV AX,ARRAY[BX+DI]
MOV AX,[BX+DI+4] Instruksi tersebut mengisi AX dari lokasi memori data segment. Instruksi
pertama menggunakan alamat yang dibentuk dari penjumlahan ARRAY, BX dan
DI dan instruksi kedua dengan penjumlahan BX, DI dan 4.
# Scaled-index Addressing
Merupakan pengalamatan dimana register kedua yang merupakan register
operand dimodifikasi dengan faktor perkalian dari x2, x4 atau x8 untuk mengubah
alamat operand. Contoh:
MOV EDX,[EAX+4*EBX]
4 | ASSEMBLY LANGUANGE PROGRAMMING
# Memory Organization
Sebuah assembler menggunakan 2 format dasar dalam mendevelop program.
Salah satu method menggunakan model, yang lainnya menggunakan full-
segment. Model memori menggunakan sebuah assembler MASM.
TASM assembler juga menggunakan model memori tetapi berbeda dengan
MASM. Full- segment digunakan oleh kebanyakan assembler, termasuk Intel
assembler, dan sering digunakan untuk mendevelop software.
# Assembly Program Structure
Format umum penulisan tiap baris pada pemrograman tingkat rendah adalah
sebagai berikut :
[label :] Mnemonic [operand1] , [operand2] [;comment]
Pada bagian mnemonic ada assembler command yang tidak akan di eksekusi oleh
mikroprosesor, yang disebut Assembler Directives. Assembler directives hanya
merupakan instruksi bagi program tingkat rendah. Contohnya yang sering
digunakan ialah ORG, EQU, END, DB, DW, DS.
5 | DATA MOVEMENT INSTRUCTION
# PUSH & POP Instruction
" PUSH
Merupakan instruksi yang mentransfer 2 byte data ke stack.
Contoh: PUSH AX
Instuksi tersebut memindahkan data dari register AX ke dalam stack.
" POP
Merupakan instruksi yang menghapus dan memindahkan data dari stack ke
sebuah register 16-bit, segment register, atau 16-bit memory location.
Contoh: POP BX
Instruksi tersebut menghapus data dari stack dan menempatkannya pada
register BX.
# Load-Effectice Address " LEA
Merupakan instruksi yang mengisi 16- atau 32-bit register dengan offset
address dari data yang ditunjukkan oleh operand.
Contoh: LEA BX,[DI]
" LDS
LDS, LES, LFS, LGS, dan LSS adalah instruksi yang mengisi 16- atau 32-bit
register dengan offset address dan DS, ES, FS, GS atau SS segment register
dengan sebuah segment address.
Modul Praktikum Mikroprosesor dan Mikrokontroler # String Data Transfers
Terdapat 5 jenis instruksi untuk string data transfer, yaitu LODS, STOS,
MOVS, INS dan OUTS. Masing-masing dari instruksi string ini
memperbolehkan data transfer yang mempunyai jenis byte, word atau double
word. Pada string data transfer digunakan register SI dan DI.
# Miscellaneous Data Transfer Instructions
Instruksi transfer data lainnya adalah XCHG, LAHF, SAHF, XLAT, IN, OUT,
BSWAP, MOVSX, MOVZX dan CMOV.
6 | HOW TO WRITE A PROGRAM
Untuk membuat program dalam bahasa assembly, ada beberapa hal yang harus
diperhatikan, salah satunya adalah struktur program tersebut. Dari gambar dibawah ini
dapat dilihat struktur untuk program bahasa assembly menggunakan emu8086.
Gambar 6 Salah satu contoh struktur dan program sederhana
Modul Praktikum Mikroprosesor dan Mikrokontroler Setelah menjalankan program diatas, dengan mengklik ikon emulate. Maka akan munjul
kotak dialog yang memunculkan isi register dan RAM (Gambar 6).
Gambar 7 Kotak dialog yang menerangkan isi register & ram yang dijalankan setiap baris
Kemudian, ketika program telah selesai di eksekusi, program ini akan menampilkan
string “Hello!” seperti pada Gambar 8.
7 | REFERENCES
Brey, Barry B. 2006. The Intel Microprocessors Architecture, Programming, and
Interfacing. New Jersey: Pearson Prentice Hall.
Gambar 8 Hasil keluaran dari program