Pendahuluan AVR

5
Laporan Pendahuluan Praktikum Sistem Tertanam Nama : Muhammad Arfiadi Pratama NPM : 1206238936 Fak/Program Studi : FMIPA/Fisika Nomor Modul : 1 Nama Modul : Assembly Teman Kelompok : Ibrohim Hanifa Tanggal Percobaan : 27 September 2015 DEPARTEMEN FISIKA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS INDONESIA 2015

description

Pendahuluan AVR mengenai bagaimana pemrograman pada AVR menggunakan ATmega128. Penjelasan mengenai PORT dan Register

Transcript of Pendahuluan AVR

Page 1: Pendahuluan AVR

Laporan Pendahuluan

Praktikum Sistem Tertanam

Nama : Muhammad Arfiadi Pratama

NPM : 1206238936

Fak/Program Studi : FMIPA/Fisika

Nomor Modul : 1

Nama Modul : Assembly

Teman Kelompok : Ibrohim Hanifa

Tanggal Percobaan : 27 September 2015

DEPARTEMEN FISIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS INDONESIA

2015

Page 2: Pendahuluan AVR

1. TUJUAN

1. Mengenal bahasa assembly.

2. Mengetahui cara mengakses register memori menggunakan bahasa assembly.

3. Menggunakan bahasa assembly untuk melaksanakan operasi aritmatik.

2. TEORI DASAR

Bahasa Assembly

Bahasa assembly adalah bahasa pemrograman yang mendekati bahasa mesin baik dari bentuk dan

kontennya. Bahasa assembly biasa digunakan untuk mengendalikan suatu program lebih dalam

hingga satuan byte bahkan hingga satuan bit dan saat kondisi dimana kita menggunakan banyak

perintah subroutines untuk fungsi yang tidak diberikan oleh bahasa pemrograman lainnya.

Bahasa assembly terdiri dari beberapa pernyataan yang mewakili perintah atau komentar.

Pernyataan untuk perintah dibagi menjadi 3 grup yaitu perintah mesin, perintah assembler, dan

perintah makro.

Perintah mesin adalah representasi simbolis dari perintah bahasa mesin dari beberapa instruksi set

berikut

IBM System/370

IBM System/370 Extended Architecture (370-XA)

Enterprise Systems Architecture/370 (ESA/370)

Enterprise Systems Architecture/390 (ESA/390)

z/Architecture®

Hal tersebut disebut perintah mesin karena assembler menerjemahkan itu ke bahasa mesin

sehingga komputer dapat berjalan.

Perintah assembler adalah permintaan untuk melakukan beberapa operasi tertentu saat perakitan

modul sumber. Contohnya, mendefinisikan data konstanta, menyimpan data, dan mendefinisi

bagian akhir dari modul sumber. Kecuali perintah-perintah yang mendefinisikan konstanta dan

instruksi yang digunakan untuk menghasilkan perintah no-operation untuk penyelarasan.

Assembler tidak menerjemahkan perintah assembler ke kode objek

Page 3: Pendahuluan AVR

Perintah makro adalah permintaan kepada program assembler untuk memproses urutan perintah

yang sudah didefinisi (macro definition). Assembler menghasilkan perintah mesin dan perintah

assembler yang dimana pada saat proses terjadi mereka merupakan original input dari modul

sumber.

Register

Dalam pemrograman dengan bahasa Assembky, kita akan bertemu dengan Register. Register

adalah sebagian memori dari microprocessor yang dapat diakses dengan kecepatan yang sangat

tinggi. Dalam melakukan perintah-perintah, microprocessor selalu menggunakan register-register

sebagai perantaranya.

Register yang digunakan oleh mikroprosesor dibagi menjadi lima bagian dengan tugasnya

masing-masing.

Segmen Register

Register yang termasuk dalam Segmen Register terdiri atas register CS, DS, ES, dan SS yang

masing-masing merpakan register 16 bit. Register-register dalam kelompok ini secara umum

digunakan untuk menunjukan alamat dari suatu segmen. Register CS (Code Segment) digunakan

untuk menunjukkan tempat dari segmen yang sedang akrif, sedangkan register SS (Stack

Segment) menunjukan letak dari segmen yang digunakan oleh stack. Kedua register ini tidak bisa

sembarang diubah karena akan menyebabkan error pada program.

Register DS (Data Segment) biasanya digunakan untuk menunjukan tempat segmen dimana

data-data pada program disimpan. Umumnya isi dari register ini tidak perlu diubah kecuali pada

program residen. Register ES (Extra Segment) adalah suatu register yang tidak mempunyai suatu

tugas khusus. Register ES biasanya digunakan untuk menunjukan suatu alamat di memori

Pointer dan Index Register

Register pada kelompok ini adalah register SP, BP, SI, dan DI yang masing-masing terdiri dari

16 bit. Pointer dan Index Register secara umum digunakan sebagai penunjuk atau pointer

terhadap suatu lokasi di memori. Register SP (Stack Pointer) yang berpasangan dengan register

Page 4: Pendahuluan AVR

segment SS, digunakan untuk menunjukan alamat dari stack, sedangkan register BP (Base

Pointer) yang berpasangan dengan register SS, mencatat suatu alamat di memori tempat data.

Register SI (Source Index) dan register DI (Destination Index) biasanya digunakan pada operasi

string dengan mengakses secara langsung pada alamat di memori yang ditunjukan oleh kedua

register ini.

General Purpose Register

Register yang termasuk dalam kelompok ini adalah register AX, BX, CX, dan DX yang masing-

masing terdiri atas 16 bit. Register-register ini memiliki ciri khas, yaitu dapat dipisah menjadi

dua bagian dimana masing-masing bagian terdiri atas 8 bit, seperti pada gambar 1.1. Akhiran H

menunjukan High dan akhiran L menunjukan Low

Gambar 1.1 General Purpose Register

Secara umum register-register dalam kelompok ini dapat digunakan untuk berbagai fungsi,

namun mereka memiliki fungsi-fungsi khusus seperti Register AX digunakan pada operasi

aritmatika terutama dalam operasi pembagian dan pengurangan. Register BX digunakan untuk

menunjukan suatu alamat offset dari suatu segmen. Register CX digunakan secara khusus pada

operasi looping dimana register ini menentukan berapa banyaknya looping yang akan terjadi.

Register DX digunakan untuk menampung sisa hasil pembagian 16 bit.

Index Pointer Register

Register IP berpasangan dengan CS, menunjukan alamat di memori tempat dari instuksi

selanjutnya yang akan dieksekusi. Register IP juga merupakan register 16 bit.

Page 5: Pendahuluan AVR

Flags Register

Flags register menunjukan kondisi dari suatu keadaan (ya atau tidak). Setiap keadaan dapat

digunakan 1 bit sehingga flags register ini mampu mencatat hingga 16 keadaan. OF (Overflow

Flag) jika terjadi OverFlow pada operasi aritmatika, bit ini bernilai satu. SF (Sign Flag) jika

digunakan bilangan bertanda bit ini akan bernilai satu. ZF (Zero Flag) jika hasil operasi

menghasilkan nol, bit ini akan bernilai satu. CF (Carry Flag) jika terjadi borrow pada operasi

pengurangan atau carry pada penjumlahan bit ini akan bernilai satu. PF (Parity Flag) digunakan

untuk menunjukan paritas bilangan. Bit ini bernilai satu jika bilangan yang dihasilkan merupakan

bilangan genap. DF (Direction Flag) digunakan pada operasi string untuk menunjukan arah

proses. IF (Interrupt Enable Flag) CPU akan mengabaikan interupsi yang terjadi jika bit ini nol.

TF (Trap Flag) digunakan terutama untuk debugging, dengan operasi step by step. AF (Auxiliary

Flag) digunakan oleh operasi BCD, seperti pada perintah AAA. NT (Nested Task) digunakan

pada prosesor 80286 dan 80386 untuk menjaga jalannya interupsi yang terjadi secara beruntun.

IOPL (I/O Protection Level) flag ini terdiri atas 2 bit dan digunakan pada prosesor 80286 dan

80386 untuk mode proteksi.

Gambar 2.2 Susunan Flags Register 8088

Referensi

http://www-

01.ibm.com/support/knowledgecenter/SSLTBW_2.1.0/com.ibm.zos.v2r1.asma400/asmr102

115.htm diakses pada tanggal 27 September 2015 pukul 23.40