MODUL PRAKTIKUM
MIKROPROSESOR
DAN
MIKROKONTROLER
Modul 2: Pemrograman Mikroprosesor
dengan Bahasa Assembly
Tujuan:
1.
2.
3.
4.
Modul 2:
Pemrograman
Mikroprosesor dengan
Bahasa Assembly
1
|
THE
MICROPROCESSOR-BASED
PC
SYSTEM
Copyright
2014
13
12
11
10
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.
+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
data7 antara RAM
dengan CPU membutuhkan waktu yang
15
0
15
Accumulator
AH
Accumulator
Base
AH
BH
Base
Count
BH
CH
Count
Data
CH
DH
Data
7
AX
AX
BX
BX
CX
CX
DX
0
AL
AL
BL
BL
CL
CL
DL
cukup lama.
Pada mikroprosesor
mikroprosesor 80386
80386 ke
ke atas
cukup
lama.
Pada
atas akan
akan mendapat
mendapat tambahan
tambahan register
register EAX
EAX
(Extended Accumulator),
Accumulator),EBX
EBX(Extended
(Extended
Base),
ECX
(Extended
Count),
(Extended
Base),
ECX
(Extended
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
! Index
IndexRegister
Register
(Extended
Data).
CPU juga
juga memiliki
memiliki 22 buah
buah index
CPU
index register
register yang
yang selalu
selalu ditandai
ditandai dengan
denganakhiran
akhiranI,I,
Index Register
yaitu SI
SI (Source
(Source Index)
Index) dan
dan DI
yaitu
DI (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,
penyimpanan, tetapi
tetapi tidak
tidak dapat
dapat mengakses
untuk
mengakses 11 byte
byte pada
pada satu
satuwaktu
waktuyang
yang
yaitu SI (Source Index) dan DI (Destination Index). Register ini dapat digunakan
bersamaan, sehingga
sehingga membuat
membuat register
register ini
ini kurang
bersamaan,
kurang fleksibel.
fleksibel. Tetapi
Tetapi SI
SI dan
dan DI
DI
untuk penyimpanan, tetapi tidak dapat mengakses 1 byte pada satu waktu yang
memilikikekhususan
kekhususandalam
dalammenangani
menanganioperasi
operasistring.
string.
memiliki
bersamaan, sehingga membuat register ini kurang fleksibel. Tetapi SI dan DI
Source Index
SI
Source Index
Destination
Index
SI
DI
Source string
dan dan
indexindex
pointer
Destination
string
pointer
Pada mikroprosesor
mikroprosesor 80386
80386 ke atas akan
Pada
akan mendapat
mendapat tambahan
tambahan register
register ESI
ESI
(ExtendedSource
SourceIndex)
Index)dan
danEDI
EDI(Extended
(ExtendedDestination
DestinationIndex).
Index).
(Extended
Pada mikroprosesor 80386 ke atas akan mendapat tambahan register ESI
! Pointer
PointerRegister
Register
(Extended
Source Index) dan EDI (Extended Destination Index).
Didalam
dalam CPU
CPU mengenal
mengenal 3 buah pointer
Di
pointer register
register yang
yang juga
jugaselalu
selaluditandai
ditandaidengan
dengan
Pointer Register
akhiran P,
P, yaitu
yaitu IP,
IP, SP, dan BP. Pada
akhiran
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).
Percobaan
I - Sistem Kerja
Mikroprosesor
" IP (Instruction
Pointer)
Modul
Praktikum
Mikroprosesor
dan
MESP
ikrokontroler
mendapat tambahan register EIP
(Extended
Instruction
Pointer),
(Extended
Base Pointer
BP
Stack Pointer
SP
Instruction Pointer
IP
! Segmented
BP (BaseAddressing
Pointer) dan Segment Register
Segmented
Addressing
sebuah
internal tempat
yang mengijinkan
BP digunakan
sebagaiadalah
pencatat
suatumekanisme
alamat di memori
data. BP ini
mikroprosesor
untuk
melakukan
pengalamatan
sebesar
1
Mbyte
pada
memori
berpasangan dengan segment register SS (SS:BP).
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
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 16bit. Dimana alamat offset tidak mengalami pergeseran.
10
sehingga akan menghasilkan alamat 20-bit dengan akhiran 0. Operasi ini sama
dengan efek pada perkalian 16.
Modul
Praktikum
ikroprosesor
dan
alamat
Mikrokontroler
2. Mikroprosesor akan menambahkan
alamat M
20-bit
ini dengan
offset 16-
15
16-bit offset
19
Ada 44 buah
buah segment
CS,
DS,
Ada
segment register
register yang
yang selalu
selaluditandai
ditandaidengan
denganakhiran
akhiranS,S,yaitu
yaitu
CS,
SS, dan
pada mikroprosesor
80386 ke
atas ke
terdapat
tambahan
DS,
SS, ES.
dan Sedangkan
ES. Sedangkan
pada mikroprosesor
80386
atas terdapat
register segmen
16-bit,
yaitu FS
(Extra
Segment)
dan GS
(Extra Segment).
tambahan
register
segmen
16-bit,
yaitu
FS (Extra
Segment)
dan GS (Extra
Segment).
CS (Code Segment)
CS (Code
(Code Segment)
Segment) selalu digunakan oleh mikroprosesor untuk menunjukan
" ClS
tempat
dari
segmenselalu
alamat
yang instruksi
berikutnya akan
diproses
oleh IP
CS
(Code
Segment)
digunakan
oleh mikroprosesor
untuk
menunjukan
(Instruction
Pointer).alamat
IP merupakan
alamat
offset. CS:IP
tempat
dari segmen
yang instruksi
berikutnya
akan merepresentasikan
diproses oleh IP
instruksi berikutnya
jangkauan alamat
alamat memori
penuh.merepresentasikan
(Instruction
Pointer).pada
IP merupakan
offset. CS:IP
instruksi berikutnya pada jangkauan alamat memori penuh.
" DS (Data Segment)
1
segmen di mana data-data program disimpan. Umumnya isi dari register ini
Percobaan
Sistem
Kerjakecuali
Mikroprosesor
tidakI -perlu
diubah
pada program residen.
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
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
data pada
pada stack,
stack, proses
proses tersebut
tersebut
Ketika mikroprosesor
mikroprosesor mengakses
mengakses data
menggunakan
Segment).
SS:SP
selalu
menunjuk
pada pada
suatu alamat
menggunakanSS
SS(Stack
(Stack
Segment).
SS:SP
selalu
menunjuk
suatu
dialamat
memori
yang merupakan
posisi dari
stack.
di memori
yang merupakan
posisi
dari stack.
" ES
ES(Extra
(ExtraSegment)
Segment)
Register
Register ES
ES (Extra
(Extra Segment),
Segment),
bonus
bonus yang
yang tidak
tidak mempunyai
mempunyai
sesuai dengan
dengan namanya
namanya adalah
adalah suatu
suaturegister
register
sesuai
suatu
tugas khusus.
khusus. Register
Register ES
ES ini
inibiasanya
biasanya
suatu tugas
digunakan
alamat di
di memori
memori yang
yang berada
berada diluar
diluar
digunakan untuk
untuk menunjukan
menunjukan suatu
suatu alamat
daerah
daerahstandar.
standar.
ES
dalam
instruksi
string.
Dengan
caracara
ini, register
DI selalu
ESsangat
sangatberperan
berperandi di
dalam
instruksi
string.
Dengan
ini, register
DI
relatif
alamat
segmensegmen
ES.
selaluke
relatif
ke alamat
ES.
! Flag
FlagRegister
Register
2
Register
Adapunflag
flag
Registerini
iniberisikan
berisikan flag
flag yang
yang merupakan
merupakan laporan
laporan status
status dari
dari CPU
CPU. .Adapun
yang
yangdigunakan
digunakanpada
padamikroprosesor
mikroprosesor8086
8086keatas
keatasadalah
adalah::
O
O
D
OverFlow
Direction
besar untuk
ditempatkan
didalam
register
Digunakan
pada
operasi string
untuk
menunjukan arah
proses
Direction
Trap
Sign
Flag
mencatat
jika hasilinterupsi
kalkulasi jika
bernilai
CPUakan
akan
mengabaikan
flagnegatif.
ini disable
Zero
Interrupt Enable
D
SI
OverFlow
Interrupt Enable
Trap
S Sign
Lihat percobaan
III
Z IZero
Flag akan mencatat jika hasil kalkulasi bernilai 0.
Percobaan
- Sistem Kerja Mikroprosesor
A
Auxiliary Carry
12
atau borrow pada 4-bit bagian rendah. Flag ini
Flag akan mencatat
jika operasi
digunakan
pada operasi
BCD. menghasilkan carry atau
A
Auxiliary Carry
Parity
Parity
C
C
Carry Carry
Flag akan
mencatat
jika bilangan yang dihasilkan adalah
adalah
bilangan
genap
bilangan genap
Jika
terjadicarry
carryatau
atau
borrow
pada
operasi
aritmatika
Jika terjadi
borrow
pada
operasi
aritmatika
maka
maka
akan dicatat
oleh flag.
akan dicatat
oleh flag.
3
1.
Tabel
flagyang
yangdigunakan
digunakan
pada
mikroprosesor
8086
atas
.
Tabel
11
SSusunan
usunan
flag
pada
mikroprosesor
8086
ke
ke
atas
NT
15
IOPL
7
Gambar 6 Model flag untuk mikroprosesor keluarga 80x86
C
0
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
*
*
Nested
T
ask
NT
NT
Nested Task
interupsi
yang terjadi secara berurutan
interupsi yang terjadi secara berurutan
IOPL
IOPL
PE
PE
IO Protection Level
IO Protection Level
Protection Enable
Protection Enable *
MP
Monitor Coprosessor
MP
EM
*
Emulate
Coprosessor
Monitor
Coprosessor
TS
EM
ET
TS
RF
ET
VF
RF
Task Switched
Emulate
Coprosessor
*
*
Extention Type
Resume Flag **
Digunakan
bersamauntuk
flag mengemulasikan
trap untuk
Flag ini digunakan
prosesor
matematik
x87
menangani terjadinya instruksi WAIT
Flag
untuk mengemulasikan
80286ini
ke digunakan
atas
prosesor
Flag ini matematik
digunakan x87
untuk menentukan jenis
prosesor matematik 80287 atau 80387
*
**
Task
SResume
witched
Flag
Extention Type
Digunakan
flag trap untuk menangani
pada
modebersama
real
80386 ke atas
**
Flag iniakan
mencatat
mode proteksi
Flag
digunakan
untukjikamenentukan
jenis
digunakan,
sehingga
memungkinkan
prosesor matematik 80287 atau 80387
menggunakan mode real pada saat mode
proteksi
Flag
ini digunakan.
dapat dijumpai pada mikroprosesor
Penamaan flag ini digunakan oleh Microsoft, sedangkan Intel menambahkannya dengan akhiran F
pada tiap susunan.
*3
Penamaanpada
flagmikroprosesor
ini digunakan 80286
oleh Microsoft
Terdapat
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
13
VF
Tabel 2 Susunan flag tambahan yang dapat digunakan pada mikroprosesor 80286 dan 80386
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.
# 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]
Model
memori
menggunakan
sebuah
assembler
MASM.
[;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.
PUSH AX
POP BX
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.
# 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.
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.