Modul 2 PDF
Modul 2 PDF
MODUL PRAKTIKUM
MIKROPROSESOR
DAN
MIKROKONTROLER
Modul 2: Pemrograman Mikroprosesor
dengan Bahasa Assembly
Tujuan:
Modul 2:
Pemrograman
Mikroprosesor dengan
Bahasa Assembly
1
|
THE
MICROPROCESSOR-‐BASED
PC
SYSTEM
3
7 | REFERENCES 13
Copyright
©2014
Modul
Praktikum
Mikroprosesor
dan
Mikrokontroler
MODUL 2:
PEMROGAMAN MIKROPROSESOR DENGAN
BAHASA ASSEMBLY
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
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.
" 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).
Instruction Pointer IP
! 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 offset
19 0
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.
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
Tabel 2 Susunan flag tambahan yang dapat digunakan pada mikroprosesor 80286 dan 80386
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
MOV [BX+DI], CL
# 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
MOV EDX,[EAX+4*EBX]
Format umum penulisan tiap baris pada pemrograman tingkat rendah adalah
sebagai berikut :
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.
" POP
# 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.
Instruksi transfer data lainnya adalah XCHG, LAHF, SAHF, XLAT, IN, OUT,
BSWAP, MOVSX, MOVZX dan CMOV.
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.