modul 2 Praktikum Mikrokontroller & Mikroprosesor

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.

description

Modul prak mikon mikrop

Transcript of modul 2 Praktikum Mikrokontroller & Mikroprosesor

Page 1: modul 2 Praktikum Mikrokontroller & Mikroprosesor

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.

Page 2: modul 2 Praktikum Mikrokontroller & Mikroprosesor

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

Page 3: modul 2 Praktikum Mikrokontroller & Mikroprosesor

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.

Page 4: modul 2 Praktikum Mikrokontroller & Mikroprosesor

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.

Page 5: modul 2 Praktikum Mikrokontroller & Mikroprosesor

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

Page 6: modul 2 Praktikum Mikrokontroller & Mikroprosesor

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

Page 7: modul 2 Praktikum Mikrokontroller & Mikroprosesor

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

Page 8: modul 2 Praktikum Mikrokontroller & Mikroprosesor

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

Page 9: modul 2 Praktikum Mikrokontroller & Mikroprosesor

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.

Page 10: modul 2 Praktikum Mikrokontroller & Mikroprosesor

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.

Page 11: modul 2 Praktikum Mikrokontroller & Mikroprosesor

# 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.

Page 12: modul 2 Praktikum Mikrokontroller & Mikroprosesor

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

Page 13: modul 2 Praktikum Mikrokontroller & Mikroprosesor

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