Microcontroller: Bahasa Pemrograman Assembly 8051

dokumen-dokumen yang mirip
Gambar 1.1. Diagram blok mikrokontroller 8051

Tabel Perbandingan ROM dan RAM pada beberapa seri ATMEL

PERTEMUAN SET INSTRUKSI MIKROKONTROLER AT 89C51

PEMROGRAMAN BAHASA RAKITAN

Organisasi & Arsitektur Komputer

BAHASA PEMOGRAMAN AT89S/Cxx (assembly)

Bahasa Pemrograman Assembler 8051

INTRUKSI-INTRUKSI BAHASA PEMROGRAMAN ASSEMBLY

OPERATION SYSTEM. Jenis - Jenis Register Berdasarkan Mikroprosesor 8086/8088

BAB I TUGAS MATA KULIAH SISTEM MIKROPROSESOR DOSEN PEMBERI TUGAS : FATAH YASIN, ST, MT.

Arsitektur Set Instruksi. Abdul Syukur

MODUL PRAKTIKUM SISTEM OPERASI PRAKTIKUM I MODEL PEMROGRAMAN 1

Simple As Possible (SAP) - 2. Abdul Syukur

CENTRAL PROCESSING UNIT CPU

PERTEMUAN MEMORY DAN REGISTER MIKROKONTROLER

Set Instruksi. Set Instruksi. Set Instruksi adalah kumpulan

PROGRAM STUDI S1 SISTEM KOMPUTER UNIVERSITAS DIPONEGORO. Oky Dwi Nurhayati, ST, MT

Web Site :

PERTEMUAN SET INSTRUKSI MIKROKONTROLER AT 89C51

Mengenal bahasa assembly

LAPORAN PRAKTIKUM. Praktek Mikroprosesor 1 Job Sheet 2

Arsitektur dan Organisasi Komputer. Set instruksi dan Pengalamatan

Struktur Bahasa Assembler Mikrokontroller MCS51

Tahun Akademik 2015/2016 Semester I DIG1B3 Konfigurasi Perangkat Keras Komputer

LAPORAN PRAKTIKUM SISTEM MIKROPROSESSOR APLIKASI DASAR INSTRUKSI ARITMATIKA DAN OPERASI LOGIK

REGISTER Register-register yang terdapat pada mikroprosesor, antara lain :

William Stallings Computer Organization and Architecture. Chapter 9 Set Instruksi: Karakteristik dan Fungsi

Ringkasan Set Instruksi Dan Mode pengalamatan ( Addressing Mode )

Set Instruksi & Mode Pengalamatan. Team Dosen Telkom University 2016

BAHASA PEMROGRAMAN MIKROKOMPUTER

Operasi Transfer Data

PERTEMUAN BAHASA PEMOGRAMAN DAN FORMAT BILANGAN MIKROKONTROLER

Secara fisik, kerja dari sebuah mikrokontroler dapat dijelaskan sebagai siklus

Hanif Fakhrurroja, MT

MODUL I PENGENALAN ASSEMBLY

Sistem Bilangan & Dasar Assembler Dadang Mulyana

PERCOBAAN 5 STACK DAN SUBROUTINE. Oleh : Sumarna, Jurdik Fisika, FMIPA, UNY

Pertemuan ke 6 Set Instruksi. Computer Organization Dosen : Eko Budi Setiawan

Set Instruksi: Set instruksi?

Kumpulan instruksi lengkap yang dimengerti

Menggunakan Bahasa Pemrograman Assembly

BAB VI MIKROKONTROLER

SET INSTRUKSI. Organisasi dan Arsitektur Komputer

I/O dan Struktur Memori

Arsitektur dan Organisasi

ORGANISASI KOMPUTER INSTRUKSI MESIN DAN PROGRAM MATA KULIAH:

Arsitektur dan Organisasi Komputer Set Intruksi

ARSITEKTUR KOMPUTER SET INSTRUKSI

MAKALAH MODE DAN FORMAT PENGALAMATAN SET INSTRUKSI. Nama : Annisa Christyanti Kelas : XI TJA 3 NIS :

Materi 3. Komponen Mikrokomputer SYSTEM HARDWARE DAN SOFTWARE DADANG MULYANA

MODUL V STACK dan PENGENALAN PROCEDURE


Tahun Akademik 2015/2016 Semester I DIG1B3 Konfigurasi Perangkat Keras Komputer

BAB 3 MODE AKSES MEMORI, PENGGUNAAN VARIABEL DAN STACK

Materi 6: AVR Status Register & AVR Data Format Directives I Nyoman Kusuma Wardana Sistem Komputer STMIK STIKOM Bali

SISTEM KERJA MIKROPROSESOR

BAB III RANCANGAN DAN CARA KERJA ALAT

10. Konsep Operasional Prosessor dan Memori

INSTRUKSI DASAR Salahuddin, SST.

DASAR KOMPUTER. Assembly Language

Kuis : Bahasa Rakitan (UAS)

Pertemuan Ke-7 INSTRUCTION SET

IKI20210 Pengantar Organisasi Komputer Kuliah Minggu ke-3: Bahasa Rakitan AVR

Arsitektur SAP-2 W BUS ACKNOWLEDGE HEXADECIMAL KEYBOARD ENCODER ACCUMULATOR INPUT PORT 1 ALU FLAGS READY INPUT PORT 2 SERIAL IN PROGRAM COUNTER TMP

PERCOBAAN 1 PENGENALAN MIKROPROSESOR MPF-I. Oleh : Sumarna, Jurdik Fisika, FMIPA, UNY

BAB 3 SET ARAHAN. Bahasa Tahap Rendah. Bahasa yang memudahkan pengaturcaraan tanpa memikirkan bagaimana data diolah (pindahmemindah)

BAB I PENDAHULUAN 1.1 LATAR BELAKANG

R E G I S T E R. = Code Segment Register = Data Segment Register = Stack Segment Register = Extra Segment Register. 3.

BAB VII KOMPUTER SEDERHANA SAP-3 (SIMPLE AS POSSIBLE-3)

LAPORAN PRAKTIKUM ORGANISASI KOMPUTER & BAHASA ASSEMBLY PROGRAM OPERASI ARITMATIKA. Kelas : INF 2B Praktikum 1 Nama : Fernalia NIM : J3C212210

8/4/2011. Microprocessor & Microcontroller Programming. Sistem Bilangan. Sistem Bilangan. Sistem Bilangan. Sistem Bilangan

Hal-hal yang perlu dilakukan CPU adalah : 1. Fetch Instruction = mengambil instruksi 2. Interpret Instruction = Menterjemahkan instruksi 3.

Pada pembahasan kali ini, digunakan instruksi MOV untuk menjelaskan mode pengalamatan data. Format penulisannya adalah :

LAPORAN PRAKTIKUM MIKROPROSESOR PEMINDAHAN DATA

CENTRAL PROCESSING UNIT (CPU) Sebuah mesin tipe von neumann

PETUNJUK PEMROGRAMAN DAN SET INSTRUKSI

Instruksi-Instruksi Pemindahan Data. Sistem Komputer Universitas Gunadarma

IKI20210 Pengantar Organisasi Komputer Kuliah Minggu ke-3: Bahasa Rakitan AVR

LAPORAN PRAKTIKUM SISTEM MIKROPROSESSOR STACK DAN SUBROUTINE

Aditya Wikan Mahastama

Materi 4: Assembly Language Programming

LAPORAN PRAKTIKUM SISTEM MIKROPROSESSOR INSTRUKSI PERCABANGAN DAN LOOP

PERTEMUAN. 1. Organisasi Processor. 2. Organisasi Register

BAHASA RAKITAN. Kuliah I : Pengenalan. Universitas Gunadarma. Bahasa Rakitan

Mikrokontroller Berbasiskan RISC 8 bits

PERTEMUAN. SET INSTRUKSI MIKROKONTROLER AT 89C51 (Lanjutan)

Karakteristik Instruksi Mesin

BAB 2 Pemrograman Zilog Z80

BAHASA MESIN. PDE - bahasa mesin 1

BAB 3 Pemrograman Zilog Z80 Lanjutan

Simple As Posible 2 (bag-1)

LAB SHEET 1 PENGENALAN Z80 SIMULATOR IDE OSHONSOFT

DESKRIPSI SINGKAT INSTRUKSI-INSTRUKSI PADA AT89S51

STRUKTUR CPU. Arsitektur Komputer

Hanif Fakhrurroja, MT

Instruksi logika (1) Memanipulasi isi Accumulator, dibagi menjadi 2. Panjang instruksi : 1 byte. Panjang instruksi : 2 byte

Struktur Fungsi CPU. Mata Kuliah Arsitektur Komputer Program Studi Sistem Informasi 2013/2014 STMIK Dumai -- Materi 03 --

SISTEM KOMPUTER.

BAB 4 STACK AREA, SUBROUTINE dan INSTRUKSI BLOK

FORMAT BILANGAN DALAM MIKROPROSESOR

Transkripsi:

Microcontroller: Bahasa Pemrograman Assembly 8051 Oleh: Ali Sofyan Kholimi Universitas Muhammadiyah Malang E-Mail / IM: kholimi@gmail.com Blog: http://kholimi-id.blogspot.com

Tujuan Belajar Mendaftar register dari mikrokontroler 8051 Memanipulasi data menggunakan register dan instruksi MOV Mengkode instruksi sederhana dari bahasa Assembly 8051 Merakit dan menjalankan program 8051 Menjelaskan urutan kejadian yang terjadi pada 8051 sejak dinyalakan Memeriksa program pada kode ROM dari 8051 Menjelaskan peta memori ROM dari 8051 Menjelaskan detail dari eksekusi instruksi bahasa Assembly 8051 Menjelaskan tipe data 8051

Tujuan Belajar Menjelaskan kegunaan dari register PSW (Program Status Word) Mendiskusikan alokasi ruang memori RAM di 8051 Menjelaskan diagram penggunaan stack di 8051

Register Register digunakan untuk menyimpan informasi sementara, sedangkan informasi bisa berupa: byte data yang akan diproses, atau alamat yang menunjuk ke data yang akan diambil Mayoritas register 8051 adalah register 8-bit Hanya ada satu tipe data, 8 bit

Register Register 8 bit register ditampilkan dari MSB D7 hingga LSB D0 Dengan tipe data 8-bit, data apapun yang lebih besar dari 8 bit harus dipecah menjadi potongan 8-bit sebelum diproses

Register Register yang paling banyak digunakan A (Accumulator) Untuk semua instruksi aritmetika dan logika B, R0, R1, R2, R3, R4, R5, R6, R7 DPTR (data pointer), dan PC (program counter)

Instruksi MOV MOV tujuan, sumber menyalin data sumber ke register tujuan. instruksi memberitahu CPU untuk memindahkan (pada kenyataannya, MENYALIN) operand sumber ke operand tujuan.

Instruksi MOV Value (ditandai dengan #) dapat di-load secara langsung ke register A, B, atau R0 R7 MOV A, #23H MOV R5, #0F9H If nilai 0 hingga F dipindahkan ke register 8- bit, sisa bitnya diasumsikan semuanya nol. MOV A, #5 Hasilnya akan A = 05; dalam biner, A = 00000101

Instruksi MOV Memindahkan sebuah nilai yang terlalu besar ke register akan menyebabkan error MOV A, #7F2H ILLEGAL: 7F2H>8 bits (FFH)

Instruksi ADD ADD A, sumber ADD operand sumber ke accumulator Instruksi ADD memberitahu CPU untuk menambahkan byte sumber ke register A dan menaruh hasilnyadi register A Operand sumber dapat berupa register atau data, tapi operand tujuan harus selalu register A ADD R4, A dan ADD R2, #12H adalah invalid karena A haruslah menjadi operand tujuan dari setiap operasi arithmetic

Banyak Jalan Menuju UMM MOV A, #25H ; load 25H into A MOV R2, #34H ;load 34H into R2 ADD A, R2; ;add R2 to Accumulator ;(A = A + R2) MOV A, #25H ;load one operand ;into A (A=25H) ADD A, #34H ;add the second ;operand 34H to A

Struktur Bahasa Assembly Pada masa-masa awal komputer, programmer mengkodekan dengan bahasa mesin yang terdiri dari 0 dan 1 Membosankan, lama, dan mudah mendapatkan error Bahasa Assembly yang menyediakan mnemonics untuk instruksi kode mesin serta fitur-fitur lain dibuat. Sebuah program bahasa Assembly terdiri dari satu seri baris-baris dari instruksi-instruksi bahasa Assembly Bahasa Assembly seringkali disebut sebagai bahasa low-level It melakukan transaksi secara langsung dengan struktur internal CPU

Struktur Bahasa Assembly Instruksi bahasa assembly meliputi: mnemonic (singkatan yang mudah diingat) perintah ke CPU, yang menyatakan hal apa yang harus dilakukan dengan item-item yang ada Kadang diikuti oleh satu atau dua Operand Data yang akan dimanipulasi

Struktur Bahasa Assembly Suatu program bahasa Assembly berupa serangkaian statement Instruksi bahasa Assembly Memberitahukan CPU, apa yang harus dilakukan Directive (atau instruksi-pseudo) Memberikan arahan ke assembler

Struktur Bahasa Assembly Instruksi Bahasa Assembly language terdiri dari empat fields [label:] Mnemonic [operands] [;comment]

Program Counter Program counter menunjuk pada alamat instruksi berikutnya yang akan dieksekusi Sebagaimana CPU mengambil opcode dari ROM program, program counter meningkat untuk menunjuk ke instruksi berikutnya Program counter lebarnya 16 bit Ini berarti bahwa PC dapat mengakses program dengan alamat 0000 hingga FFFFH, total kode 64K byte

Program Counter Semua anggota 8051 dimulai dari alamat memori 0000 ketika dinyalakan Program Counter memiliki nilai 0000 opcode pertama dibakar ke ROM di alamat 0000H, karena ini adalah tempat 8051 mencari instruksi pertama ketika boot Kita bisa mengubahnya dengan statement ORG di source program

ROM Memory Tidak ada anggota keluarga 8051 yang dapat mengakses opcode lebih dari 64K bytes Program counter adalah register 16-bit

Tipe Data mikrokontroler 8051 hanya mempunyai satu tipe data 8 bit Ukuran masing-masing register juga 8 bit Memecahkan masalah data yang lebih besar dari 8 bit (00 sampai FFH, atau 0-255 dalam desimal) adalah tugas para programmer tipe data dapat bernilai positif atau negatif

Directive Assembler direktif DB adalah direktif data yang paling banyak digunakan di assembler digunakan untuk menentukan data 8-bit Ketika DB digunakan untuk mendefinisikan data, bilangan bisa berupa desimal, biner, hex, format ASCII

Directive Assembler ORG (origin) direktif ORG digunakan untuk menunjukkan alamat awal Bilangan setelah ORG bisa berupa hex maupun desimal Jika nomor tidak diikuti oleh H, adalah desimal dan assembler yang akan dikonversi ke hex

Directive Assembler END Sebagai penunjuk kepada assembler akhir dari source file assembler direktif END adalah baris terakhir suatu Program Assembly Artinya bahwa kode apapun setelah direktif END ini diabaikan oleh assembler

Directive Assembler EQU (equate) Digunakan untuk mendefinisikan sebuah konstanta tanpa menempati lokasi memori direktif EQU tidak melakukan penyimpanan untuk item data tetapi lebih pada nilai konstanta dengan menggunakan label data Ketika label muncul dalam program, label akan diganti dengan nilai konstanta

Directive Assembler EQU (equate) Dissumsikan bahwa ada konstanta yang digunakan dalam banyak tempat yang berbeda dalam program, dan programmer ingin mengubah nilai seluruhnya Dengan menggunakan EQU, seseorang dapat mengubahnya sekali dan assembler yang akan mengubah seluruhnya

Program Status Word Register PSW juga disebut sebagai register penanda, adalah sebuah register 8 bit Hanya 6 bit yang digunakan Yang empat adalah CY (carry), AC (auxiliary carry), P (parity), dan OV (overflow) Disebut penanda kondisi, yang berarti bahwa mereka menunjukkan beberapa kondisi yang dihasilkan setelah sebuah instruksi dieksekusi PSW3 dan PSW4 dirancang sebagai RS0 dan RS1, dan digunakan untuk mengubah bank Dua bit yang tidak terpakai dapat didefinisikan oleh pengguna

Program Status Word

Program Status Word

Instruksi Yang Berpengaruh Pada Flag PSW

Alokasi Ruang Memori RAM 8051 memiliki RAM sebesar 128 byte Alamat sudah ditentukan antara 00 sampai 7FH 128 byte tersebut dibagi menjadi tiga kelompok yang berbeda sebagai berikut: Sebanyak 32 bytes dari lokasi 00 sampai 1F disisihkan untuk register bank dan stack Sebanyak 16 byte dari lokasi 20H sampai 2FH disisihkan untuk bit-alamat memori read/write Sebanyak 80 byte dari lokasi 30H sampau 7FH digunakan untuk membaca dan menulis storage, disebut scratch pad

Alokasi Ruang Memori RAM

Register Bank 32 bytes dibagi menjadi 4 register bank di mana masing-masing bank memiliki 8 register, R0-R7 Lokasi RAM 0-7 disisihkan untuk bank 0 dari R0-R7 mana R0 adalah RAM lokasi 0, R1 adalah RAM lokasi 1, R2 adalah RAM lokasi 2, dan seterusnya, sampai memori lokasi 7 yang menunjuk pada R7 bank 0 Jauh lebih mudah untuk merujuk pada lokasi RAM dengan nama-nama seperti R0, R1, dan seterusnya, daripada dengan lokasi memori Register bank 0 adalah default ketika 8051 dinyalakan

Register Bank

Register Bank Kita dapat beralih ke bank lain dengan menggunakan register PSW Bits D4 dan D3 dari PSW digunakan untuk memilih register bank yang dikehendaki Gunakan instruksi bit-addressable SETB dan CLR untuk mengakses PSW.4 dan PSW.3

Register Bank Contoh: SETB PSW.4 ;select bank 2 MOV R0, #99H ;RAM location 10H has 99H MOV R1, #85H ;RAM location 11H has 85H

Stack Stack adalah bagian dari RAM yang digunakan oleh CPU untuk menyimpan informasi sementara Informasi ini dapat berupa data atau alamat

Stack Register yang digunakan untuk mengakses stack disebut register SP (stack pointer) Stack pointer di 8051 lebarnya hanya 8 bit, yang berarti bahwa ia dapat mengambil nilai dari 00 sampai FFH Ketika 8051 diaktifkan, register SP mengandung nilai 07 lokasi RAM 08 adalah lokasi pertama yang mulai digunakan untuk stack oleh 8051

Stack Penyimpanan dari register CPU di stack disebut PUSH SP menunjuk ke lokasi yang digunakan terakhir stack Ketika data di-push ke stack, nilai SP bertambah satu Berbeda dari kebanyakan mikroprosesor

Stack Untuk mengembalikan isi stack kembali ke dalam sebuah register CPU disebut POP Dengan setiap pop, byte bagian atas stack akan disalin ke register yang ditetapkan oleh instruksi dan stack pointer berkurang satu

Stack Contoh: MOV R6, #25H MOV R1, #12H MOV R4, #0F3H PUSH 6 PUSH 1 PUSH 4

Stack

Instruksi CALL CPU juga menggunakan stack untuk menyimpan alamat instruksi hanya di bawah instruksi CALL Ini adalah cara CPU dapat mengetahuo di mana harus resume saat kembali dari subroutine yang dipanggil

Penambahan Nilai Stack Pointer Alasan SP bertambah nilainya setelah push adalah Untuk memastikan bahwa stack tumbuh menuju lokasi RAM 7FH, dari alamat terendah ke teratas Memastikan bahwa stack tidak akan mencapai bagian terbawah dari RAM dan berakibat habisnya ruang stack Jika stack pointer menurun setelah push Kita akan menggunakan lokasi RAM 7, 6, 5, dll milik R7 hingga R0 dari bank 0, bank register default

Konflik Antara Stack dan Bank 1 Ketika 8051 diaktifkan, register bank 1 dan stack menggunakan ruang memori yang sama Kita dapat mengalokasikan kembali bagian lain dari RAM ke stack