Anda di halaman 1dari 13

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  
 

MODUL 2:
PEMROGAMAN MIKROPROSESOR DENGAN
BAHASA ASSEMBLY

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.
+127. Register digunakan sebagai referensi awal untuk lokasi alamat pada RAM
bilangan bulat posistif atara 0 sampai 127 dan bilangan bulat antara –128 sampai
disebabkan transfer data antara RAM dengan CPU membutuhkan waktu yang
+127. Register digunakan sebagai referensi awal untuk lokasi alamat pada RAM
Modul  Praktikum  Mikroprosesor  dan  Mikrokontroler  
disebabkan transfer
15
data7 antara RAM
0
dengan CPU membutuhkan waktu yang
 
15 7
AX 0 Multiply, devide, IO, dan fast arithmetic
Accumulator AH AL
AX
BX Multiply,
Pointer to devide, IO, dan(data
base address fast segment)
arithmetic
Accumulator
Base AH
BH AL
BL

Base BH
BX
CX BL
Pointer
Count fortoloops, repeats,(data
base address shifts,segment)
dan rotates
Count CH CL

Count CH
CX
DX CL
Count fordevide,
Multiply, dan IO shifts, dan rotates
loops, repeats,
Data DH DL
DX Multiply, devide, dan IO
Data DH DLRegisters untuk mikroprosesor keluarga 80x86
Gambar 1 General-Purpose

Gambar 1 General-Purpose Registers untuk mikroprosesor keluarga 80x86


cukup lama.

Pada mikroprosesor
cukup
Pada mikroprosesor 80386
lama. 80386 ke
ke atas
atas akan
akan mendapat
mendapat tambahan
tambahan register
register EAX
EAX
(Extended Accumulator),
(Extended Accumulator),EBX
EBX(Extended
(Extended Base),
Base), ECX
ECX (Extended
(Extended Count),
Count), dan dan
EDX
Pada mikroprosesor 80386 ke atas akan mendapat tambahan register EAX
EDX (Extended
(Extended Data).Data).
(Extended Accumulator), EBX (Extended Base), ECX (Extended Count), dan EDX
IndexRegister
! Index Register
(Extended Data).
CPU juga
CPU juga memiliki
memiliki 22 buah
buah index
index register
register yang
yang selalu
selalu ditandai
ditandai dengan
denganakhiran
akhiranI,I,
Index Register
yaitu SI
yaitu SI (Source
(Source Index)
Index) dan
dan DIDI (Destination
(Destination Index).
Index). Register
Register ini
inidapat
dapatdigunakan
digunakan
CPU juga memiliki 2 buah index register yang selalu ditandai dengan akhiran I,
untuk penyimpanan,
untuk penyimpanan, tetapi
tetapi tidak
tidak dapat
dapat mengakses
mengakses 11 bytebyte pada
pada satu
satuwaktu
waktuyang
yang
yaitu SI (Source Index) dan DI (Destination Index). Register ini dapat digunakan
bersamaan, sehingga
bersamaan, sehingga membuat
membuat register
register ini
ini kurang
kurang fleksibel.
fleksibel. Tetapi
Tetapi SI
SI dan
dan DI
DI
untuk penyimpanan, tetapi tidak dapat mengakses 1 byte pada satu waktu yang
memilikikekhususan
memiliki kekhususandalam
dalammenangani
menanganioperasi
operasistring.
string.
bersamaan, sehingga membuat register ini kurang fleksibel. Tetapi SI dan DI
memiliki kekhususan dalam menangani operasi string.
Source string dan index pointer
Source Index SI
Source string
Destination dan dan
string indexindex
pointer
pointer
Source Index
Destination Index SI
DI
Destination string dan index pointer
Destination Index DI
Gambar 2 Index Registers untuk mikroprosesor keluarga 80x86.

Gambar 2 Index Registers untuk mikroprosesor keluarga 80x86.


Pada mikroprosesor
Pada mikroprosesor 80386
80386 ke atas akan
akan mendapat
mendapat tambahan
tambahan register
register ESI
ESI
(ExtendedSource
(Extended SourceIndex)
Index)dan
danEDI
EDI(Extended
(ExtendedDestination
DestinationIndex).
Index).
Pada mikroprosesor 80386 ke atas akan mendapat tambahan register ESI
PointerRegister
! Pointer Register
(Extended Source Index) dan EDI (Extended Destination Index).
Didalam
Di dalam CPU
CPU mengenal
mengenal 3 buah pointer
pointer register
register yang
yang juga
jugaselalu
selaluditandai
ditandaidengan
dengan
Pointer Register
akhiran P,
akhiran P, yaitu
yaitu IP,
IP, SP, dan BP. Pada
Pada mikroprosesor
mikroprosesor 80386
80386 ke ke atas
atas akan
akan
Di dalam CPU mengenal 3 buah pointer register yang juga selalu ditandai dengan
mendapat tambahan register EIP (Extended Instruction Pointer), ESP (Extended
akhiran P, yaitu IP, SP, dan BP. Pada mikroprosesor 80386 ke atas akan
Stack Pointer), dan EBP (Extended Base Pointer).

" IP (Instruction
Percobaan Pointer)
I - Sistem Kerja Mikroprosesor 9
Register menunjukan alamat di memori tempat dari intruksi selanjutnya akan
Percobaan I - Sistem Kerja Mikroprosesor 9
dieksekusi. Ketika eksekusi selesai, IP bertambah ke instruksi berikutnya.
Modul  
mendapat tambahan register EIP Praktikum  
(Extended Mikroprosesor  
Instruction Pointer),dan  MESP
ikrokontroler  
(Extended
  Stack Pointer), dan EBP (Extended Base Pointer).
Instruksi “Jump”, nilai IP berubah mengikuti arah “Jump”. Sedangkan untuk
IP (Instruction Pointer)
instruksi “Call”, nilai IP akan berubah kembali setelah dikembalikan dari stack.
Register menunjukan alamat di memori tempat dari intruksi selanjutnya akan
" SP (Stack Pointer)
dieksekusi. Ketika eksekusi selesai, IP bertambah ke instruksi berikutnya.
Stack menggunakan aturan sistem penyimpanan secara LIFO (Last In First
Instruksi   “Jump”,   nilai   IP   berubah   mengikuti   arah   “Jump”.   Sedangkan   untuk  
Out). Stack digunakan untuk menyimpan penunjukan alamat yang akan
instruksi  “Call”,  nilai  IP  akan  berubah  kembali  setelah  dikembalikan  dari  stack.
terpakai kemudian, dan penunjukan alamat tersebut dapat dikeluarkan dari
SP (Stack Pointer)
stack pada saat akan digunakan. SP berpasangan dengan segment register
Stack menggunakan aturan sistem penyimpanan secara LIFO (Last In First
SS (SS:SP).
Out). Stack digunakan untuk menyimpan penunjukan alamat yang akan
" BP (Base Pointer)
terpakai kemudian, dan penunjukan alamat tersebut dapat dikeluarkan dari
BP digunakan sebagai pencatat suatu alamat di memori tempat data. BP ini
stack pada saat akan digunakan. SP berpasangan dengan segment register SS
berpasangan dengan segment register SS (SS:BP).
(SS:SP).

Pointer to base address (stack segment)


Base Pointer BP
Pointer top of stack
Stack Pointer SP

Instruction Pointer IP

Gambar 3 Pointer Registers untuk mikroprosesor keluarga 80x86

! Segmented
BP (BaseAddressing
Pointer) dan Segment Register
“Segmented Addressing”
BP digunakan sebagaiadalah sebuah
pencatat suatumekanisme internal tempat
alamat di memori yang mengijinkan
data. BP ini
mikroprosesor untuk melakukan pengalamatan sebesar
berpasangan dengan segment register SS (SS:BP). 1 Mbyte pada memori
utama. Dengan mekanisme ini mikroprosesor dapat mengakses memori utama
Segmented Addressing dan Segment Register
dengan cara mengkombinasikan 2 buah alamat 16-bit. Dua buah alamat tersebut
“Segmented Addressing”   adalah   sebuah   mekanisme   internal   yang   mengijinkan  
dapat di representasikan di dalam program sebagai berikut :
mikroprosesor untuk melakukan pengalamatan sebesar 1 Mbyte pada memori
utama 1. Dengan mekanisme inisegmen:offset
mikroprosesor dapat mengakses memori utama
dengan16-bit
Pada cara alamat
mengkombinasikan 2 buah alamat
pertama, merupakan 16-bit.
alamat Dua buah
segmen. alamat alamat
Sedangkan tersebut
dapat di representasikan
berikutnya adalah alamatdi dalam
offset. program sebagai
Kerja yang berikut alamat
dilakukan : segmen yaitu
segmen:offset
memilih 64K area memori, dan alamat offset bekerja sebagai pemilih byte di
dalam
Pada sebuah area. Berikut
16-bit alamat akanmerupakan
pertama, dijelaskan mengenai cara kerjanya:
alamat segmen. Sedangkan alamat
berikutnya adalah alamat offset. Kerja yang dilakukan alamat segmen yaitu memilih
1. Alamat segmen akan digeser oleh mikroprosesor sebanyak 4-bit ke kiri,
64K area memori, dan alamat offset bekerja sebagai pemilih byte di dalam sebuah
sehingga akan menghasilkan alamat 20-bit dengan akhiran 0. Operasi ini
area. Berikut akan dijelaskan mengenai cara kerjanya:
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
sehingga akan menghasilkan alamat 20-bit dengan akhiran 0. Operasi ini sama
dengan efek pada perkalian 16.
Modul  Praktikum  
2. Mikroprosesor akan menambahkan alamat M ikroprosesor  
20-bit ini dengan dan  alamat
Mikrokontroler  
offset 16-
 
bit. Dimana alamat offset tidak mengalami pergeseran.
3. Mikroprosesor menggunakan hasil dari alamat 20-bit ini yang disebut dengan
3. Mikroprosesor menggunakan hasil dari alamat 20-bit ini yang disebut dengan
alamat fisik / physical Address yang digunakan untuk mengakses lokasi
alamat fisik / physical Address yang digunakan untuk mengakses lokasi alamat
alamat yang sebenarnya pada ukuran 1 Mbyte.
yang sebenarnya pada ukuran 1 Mbyte.
Gambar 4 merupakan ilustrasi proses “Segmented Addressing”. Sebenarnya
Gambar 4 merupakan ilustrasi   proses   “Segmented Addressing”.   Sebenarnya  
mikroprosesor keluarga 80x86 hanya dapat menangani pengalamatan 64K pada
mikroprosesor keluarga 80x86 hanya dapat menangani pengalamatan 64K pada
satu waktu (karena ukuran register yang dipergunakan hanya sebesar 16-bit).
satu waktu (karena ukuran register yang dipergunakan hanya sebesar 16-bit).
Dengan penggunaan mekanisme ini, mikroprosesor keluarga 80x86 mampu
Dengan penggunaan mekanisme ini, mikroprosesor keluarga 80x86 mampu untuk
untuk menjangkau seluruh alamat sebesar 1 Mbyte.
menjangkau seluruh alamat sebesar 1 Mbyte.

15 0 15 0

16-bit segment register Segment register shifted left 4 bits


15 0

16-bit offset

19 0

20-bit physical address


Gambar 4
Mengilustrasikan bagaimana mikroprosesor keluarga 80x86 menghitung alamat fisik

Ada 44 buah
Ada buah segment register yang
segment register yang selalu
selaluditandai
ditandaidengan
denganakhiran
akhiranS,S,yaitu CS,
yaitu DS,
CS,
SS, dan
DS, SS, ES.
dan Sedangkan pada mikroprosesor
ES. Sedangkan 80386 ke
pada mikroprosesor atas ke
80386 terdapat tambahan
atas terdapat
register segmen
tambahan 16-bit,
register yaitu FS
segmen (Extra
16-bit, Segment)
yaitu dan GS
FS (Extra (Extra Segment).
Segment) dan GS (Extra
Segment).
CS (Code Segment)
CS (Code
" ClS (Code Segment)
Segment) selalu digunakan oleh mikroprosesor untuk menunjukan
tempat
CS dari
(Code segmenselalu
Segment) alamat yang instruksi
digunakan berikutnya akan
oleh mikroprosesor diproses
untuk oleh IP
menunjukan
(Instruction
tempat IP merupakan
Pointer).alamat
dari segmen alamat
yang instruksi offset. CS:IP
berikutnya akan merepresentasikan
diproses oleh IP
instruksi berikutnya
(Instruction Pointer).pada jangkauan alamat
IP merupakan alamat memori penuh.merepresentasikan
offset. CS:IP
instruksi berikutnya pada jangkauan alamat memori penuh.

" DS (Data Segment)

1
Register DS (Data Segment) biasanya digunakan untuk menunjukan tempat
Lihat percobaan III
segmen di mana data-data program disimpan. Umumnya isi dari register ini
tidakI -perlu
Percobaan diubah
Sistem Kerjakecuali pada program residen.
Mikroprosesor 11
DS (Data Segment)
Register DS (Data Segment) biasanya digunakan untuk menunjukan tempat
segmen di mana data-data program disimpan. Umumnya isi dari register ini
Modul  Praktikum  Mikroprosesor  dan  Mikrokontroler  
  tidak perlu diubah kecuali pada program residen.

Code Segment CS

Data Segment DS

Stack Segment SS

Extra Segment ES

Gambar 5
Segment Register untuk mikroprosesor keluarga 80x86

" SS
SS(Stack
(StackSegment)
Segment)
Ketika
Ketika mikroprosesor
mikroprosesor mengakses data pada
mengakses data pada stack, proses tersebut
stack, proses tersebut
menggunakan
menggunakanSS SS(Stack Segment).
(Stack SS:SP
Segment). selalu
SS:SP menunjuk
selalu pada pada
menunjuk suatu alamat
suatu
dialamat
memori yang merupakan
di memori posisi dari
yang merupakan stack.
posisi dari stack.

" ES
ES(Extra
(ExtraSegment)
Segment)
Register ES
Register ES (Extra
(Extra Segment),
Segment), sesuai dengan
sesuai dengan namanya
namanya adalah
adalah suatu
suaturegister
register
bonus
bonus yang
yang tidak
tidak mempunyai
mempunyaisuatu tugas khusus.
suatu tugas khusus. Register ES ini
Register ES inibiasanya
biasanya
digunakan
digunakan untuk
untuk menunjukan
menunjukan suatu alamat di
suatu alamat di memori
memori yang
yang berada
berada diluar
diluar
daerah
daerahstandar.
standar.

ES
ESsangat
sangatberperan
berperandi di
dalam instruksi
dalam string.
instruksi Dengan
string. caracara
Dengan ini, register DI selalu
ini, register DI
relatif
selaluke alamat
relatif segmensegmen
ke alamat ES. ES.

! Flag
FlagRegister
Register
2
Registerini
Register iniberisikan flag yang
berisikan flag yang merupakan
merupakan laporan
laporan status
status dari
dari CPU
CPU. .Adapun
Adapunflag
flag
yang
yangdigunakan
digunakanpada
padamikroprosesor
mikroprosesor8086
8086keatas
keatasadalah
adalah::
Flag akan mencatat jika hasil yang didapat terlalu besar
O OverFlow
Flag ditempatkan
untuk akan mencatat jika
didalam hasil yang didapat terlalu
register
O OverFlow besar untuk ditempatkan didalam register
Digunakan pada operasi string untuk menunjukan arah
D Direction
proses
Digunakan pada operasi string untuk menunjukan
I Interrupt Enable CPU akan mengabaikan interupsi jika flag ini disable
D Direction arah proses
T Trap Digunakan untuk proses instrusi secara bertahap
SI Sign
Interrupt Enable CPUakan
Flag akanmencatat jika hasilinterupsi
mengabaikan kalkulasi jika
bernilai
flagnegatif.
ini disable
Z Zero Flag akan mencatat jika hasil kalkulasi bernilai 0.
T Trap Digunakan untuk proses instrusi secara bertahap

2 S Sign
Lihat percobaan III Flag akan mencatat jika hasil kalkulasi bernilai negatif.

Z IZero
Percobaan Flag akan mencatat jika hasil kalkulasi bernilai 0.
- Sistem Kerja Mikroprosesor 12
A Auxiliary Carry Flag akan mencatat jika operasi menghasilkan carry
Modul  Praktikum  Mikroprosesor  dan  Mikrokontroler  
 
atau borrow pada 4-bit bagian rendah. Flag ini
Flag akan mencatat
digunakan jika operasi
pada operasi BCD. menghasilkan carry atau
A Auxiliary Carry borrow pada 4-bit bagian rendah. Flag ini digunakan pada
operasi
Flag BCD.mencatat jika bilangan yang dihasilkan
akan
P Parity adalah bilangan
Flag akan genap
mencatat jika bilangan yang dihasilkan adalah
P Parity
bilangan genap
Jika terjadicarry
Jika terjadi carryatau
atau borrow
borrow pada
pada operasi
operasi aritmatika
aritmatika maka
C
C Carry Carry maka akan dicatat
akan dicatat oleh flag.
oleh flag.
3
Tabel  11  SSusunan
Tabel usunan  flag   yangdigunakan  
flagyang   digunakan pada
pada   mikroprosesor
mikroprosesor   8086
8086   ke  ke atas
atas  1. .

NT IOPL O D I T S Z A P C

15 7 0
Gambar 6 Model flag untuk mikroprosesor keluarga 80x86

Sedangkan flag lain yang berlaku pada keluarga 80x86 ini adalah:
Sedangkan flag lain yang berlaku pada keluarga 80x86 ini adalah :
Flag yang berfungsi untuk menjaga jalannya
* Flag yang berfungsi untuk menjaga jalannya
NT
NT Nested   T ask  
Nested Task   *
interupsi yang terjadi secara berurutan
interupsi yang terjadi secara berurutan
Flag ini terdiri atas 2 bit digunakan untuk mode
IOPL IO Protection Level
*
Flag ini terdiri atas 2 bit digunakan untuk
IOPL IO  Protection  Level   *   proteksi
mode proteksi
Flag akan mencatat jika mode proteksi
*
PE Protection Enable digunakan
Flag akandan sebaliknya
mencatat jikaakan berada
mode pada
proteksi
PE mode real dan sebaliknya akan berada
digunakan
Protection  Enable  *  
* Digunakan
pada modebersama
real flag trap untuk menangani
MP Monitor Coprosessor
terjadinya instruksi WAIT
* Digunakan bersamauntuk
Flag ini digunakan flag mengemulasikan
trap untuk
MP
EM Emulate
Monitor   Coprosessor
Coprosessor   *
  menangani terjadinya instruksi WAIT
prosesor matematik x87
* Flag ini dapat dijumpai pada mikroprosesor
TS Task Switched Flag
EM 80286ini
ke digunakan
atas untuk mengemulasikan
Emulate  Coprosessor  *   prosesor
* Flag ini matematik
digunakan x87
untuk menentukan jenis
ET Extention Type
prosesor matematik 80287 atau 80387
Flag ini dapat dijumpai pada mikroprosesor
TS Task  SResume *  
witched  Flag ** Flag ini dapat dijumpai pada mikroprosesor
RF 80286 ke atas
80386 ke atas
Flag iniakan
Flag mencatat
digunakan untukjikamenentukan
mode proteksi
jenis
ET Extention  Type     *
digunakan, sehingga memungkinkan
VF Virtual 8086 mode
** prosesor matematik 80287 atau 80387
menggunakan mode real pada saat mode
proteksi
Flag ini digunakan.
dapat dijumpai pada mikroprosesor
RF Resume  Flag  **  
Tabel 2 Susunan flag tambahan yang 80386 ke atas pada mikroprosesor 80286 dan 80386
dapat digunakan

                                                                                                                     
1
Penamaan flag ini digunakan oleh Microsoft®, sedangkan Intel© menambahkannya dengan akhiran F
pada tiap susunan.
*3
Penamaanpada
Terdapat flagmikroprosesor
ini digunakan 80286
oleh Microsoft
ke atas , sedangkan Intel menambahkannya dengan akhiran F
pada
** tiap susunan.
Terdapat pada mikroprosesor 80386 ke atas
*
Terdapat pada mikroprosesor 80286 ke atas
**
Terdapat pada mikroprosesor 80386 ke atas

Percobaan I - Sistem Kerja Mikroprosesor 13


Modul  Praktikum  Mikroprosesor  dan  Mikrokontroler  
 
Flag akan mencatat jika mode proteksi
digunakan, sehingga memungkinkan
VF Virtual  8086  mode  **   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.

Gambar  8  Hasil  keluaran  dari  program

7 | REFERENCES
Brey, Barry B. 2006. The Intel Microprocessors Architecture, Programming, and
Interfacing. New Jersey: Pearson Prentice Hall.

Anda mungkin juga menyukai