BAHASA PEMOGRAMAN AT89S/Cxx (assembly)

dokumen-dokumen yang mirip
Ringkasan Set Instruksi Dan Mode pengalamatan ( Addressing Mode )

INTRUKSI-INTRUKSI BAHASA PEMROGRAMAN ASSEMBLY

DESKRIPSI SINGKAT INSTRUKSI-INSTRUKSI PADA AT89S51

INSTRUKSI DAN BAHASA PEMOGRAMAN MIKROKONTROLER

LAMPIRAN D DATA SHEET

Mengenal bahasa assembly

PERTEMUAN SET INSTRUKSI MIKROKONTROLER AT 89C51

PERTEMUAN. SET INSTRUKSI MIKROKONTROLER AT 89C51 (Lanjutan)

Program Studi Fisika Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Lambung Mangkurat

PERTEMUAN SET INSTRUKSI MIKROKONTROLER AT 89C51

PETUNJUK PEMROGRAMAN DAN SET INSTRUKSI

Instruction Set Mikrokontroler

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

BAB 2 LANDASAN TEORI. Agar kendaraan lebih teratur dan tidak terlalu padat, biasanya tempat perparkiran ini dibagi

Menggunakan Bahasa Pemrograman Assembly

BAB 2 LANDASAN TEORI. Dalam bab ini penulis akan membahas tentang komponen-komponen yang

PERTEMUAN BAHASA PEMOGRAMAN ASSEMBLER

2. Unit Praktikum Perhitungan Aritmatika

Simple As Possible (SAP) - 2. Abdul Syukur

I/O dan Struktur Memori

LM124/LM224/LM324/LM2902

BAHASA MESIN. PDE - bahasa mesin 1

Pengendalian 8 buah Motor oleh DST-51

Microcontroller: Bahasa Pemrograman Assembly 8051

BAB VI MIKROKONTROLER

Memprogram Port sebagai Output dan Input Sederhana

Secara fisik, kerja dari sebuah mikrokontroler dapat dijelaskan sebagai siklus

PERCOBAAN 2 SAKLAR PUSH BUTTON

BAB 2 LANDASAN TEORI. Dalam bidang elektronika, perlahan-lahan peralatan-peralatan manual mulai digantikan

BAB 2 DASAR TEORI. membantu perkembangan didunia elektronika. Arsitektur mikrocontroler banyak

TUGAS AKHIR JAM DIGITAL BERBASIS MIKROKONTROLER AT89S51. Disusun oleh : MUHAMAD YUSUF PARDEDE NIM:

Daftar Isi Daftar Isi. I. Pendahuluan A. Pengenalan DT51 Debugger. B. Istilah pada Instruksi MCS-51 1) Program Status Word (PSW).

PEMBUATAN ALAT PRAKTIKUM MIKROKONTROLER (AT89S51)

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

Tabel Perbandingan ROM dan RAM pada beberapa seri ATMEL

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

Organisasi & Arsitektur Komputer

DCH1B3 Konfigurasi Perangkat Keras Komputer SAP-2

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

Set Instruksi & Mode Pengalamatan. Team Dosen Telkom University 2016

LAPORAN PRAKTIKUM. Praktek Mikroprosesor 1 Job Sheet 2

Laporan Modul 2, EL3006 Timer/Counter dan Interrupt Jongguran Sondang DN ( )/ Kelompok 48/ Jumat, 14 Maret 2008 Asisten: Virgilius

MIKROKONTROLLER AT89S51

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

Lab Elektronika Industri Mikrokontroler - 1 AT89C1051

SOAL UAS SISTEM KOMPUTER Kelas XI RPL & TKJ

PERCOBAAN 1 DISPLAY LED

Simple As Possible (SAP) - 2. Abdul Syukur


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

4. Port Input/Output Mikrokontroler MCS-51

APLIKASI MODUL DST -52 SEBAGAI JAM DIGITAL DENGAN INPUT DARI PC KEYBOARD DAN M1632 LCD SEBAGAI PENAMPIL

Bahasa Pemrograman Assembler 8051

BAB IV ANALISA DAN HASIL UJI COBA RANGKAIAN

Register-register MT8888

ORGANISASI KOMPUTER MOTOROLA MATA KULIAH:

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

PERINTAH-PERINTAH DASAR (UMUM)

Set Instruksi: Set instruksi?

Aplikasi Pengukur Ketinggian Air Mengunakan Modul Sensor InfraRed Object Detector

INSTRUKSI DASAR Salahuddin, SST.

Pencipta bahasa C adalah Brian W. Kernighan dan Dennis M. Ritchie pada. sekitar tahun C adalah bahasa pemrograman terstruktur, yang membagi

BAB 2 TINJAUAN TEORITIS

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

Mata Kuliah : Bahasa Rakitan

BAB 3 MODE AKSES MEMORI, PENGGUNAAN VARIABEL DAN STACK

Kumpulan instruksi lengkap yang dimengerti

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

BELAJAR MIKROKONTOLER AT89C51/52/55 (Teori dan aplikasi)

DASAR INPUT/OUTPUT (1) (PORT PPI DAN PORT 1 SEBAGAI OUTPUT)

BAB II DASAR TEORI. Laporan Tugas Akhir Controller Aktuator Plant/Process. Gambar 2.1 Sistem Kontrol Closed Loop

BAB 2 TINJAUAN PUSTAKA

BAB I PENDAHULUAN 1.1 LATAR BELAKANG

Pendahuluan Mikrokontroler 8051

DASAR INPUT/OUTPUT (2) (PORT PPI DAN PORT 1 SEBAGAI INPUT/OUTPUT)

BAB 2 LANDASAN TEORI

Arsitektur dan Organisasi

Simple As Posible 2 (bag-2)

BAB III RANCANGAN DAN CARA KERJA ALAT

BAB II LANDASAN TEORI

PENULISAN KARAKTER DENGAN MENGGUNAKAN TEKNIK PENULISAN PADA KEYPAD HANDPHONE OLEH MODUL DST-51, KEYPAD 4X3 DAN M1632 LCD

ARSITEKTUR KOMPUTER SET INSTRUKSI

BAB 2 Pemrograman Zilog Z80

Arsitektur Set Instruksi. Abdul Syukur

KBK 635 MIKROKONTROLER PENDAHULUAN

BAB II LANDASAN TEORI

Kuis : Bahasa Rakitan (UAS)

BAB 2 LANDASAN TEORI

PENAMPIL TOMBOL-TOMBOL REMOTE CONTROL SONY PADA M1632 LCD OLEH MODUL DST-52

ARSITEKTUR SET INSTRUKSI. Ptputraastawa.wordpress.com

MODUL 5 SISTEM PENGENDALIAN BERBASIS MIKROKONTROLER

PORT PARALEL MIKROKONTROLER ATMEL AT89C51

Simple As Posible 2 (bag-1)

ARSITEKTUR MIKROPROSESOR Z80. Yoyo somantri Dosen Jurusan Pendidikan Teknik Elektro FPTK Universitas Pendidikan Indonesia

Pendahuluan (1) D E F

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

Karakteristik Instruksi Mesin

PETUNJUK PRAKTIKUM MIKROKONTROLER. (AT89Sxx) Disusun oleh : Sumarna.

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

PERCOBAAN 9 T I M E R/ COUNTER

Transkripsi:

1 BAHASA PEMOGRAMAN AT89S/Cxx (assembly) Operand dalam pemograman mikrokontroler adalah data yang tersimpan dalam memory, register dan input/output (I/O). Instruksi yang dikenal secara umum dikelompokan menjadi beberapa kelompok yaitu instruksi untuk pemindahan data, aritmatika, operasi logika, pengaturan aliran program dan beberapa hal khusus. Mode pengalamatan dalam MCS51 yaitu: 1. Mode pengalamatan segera (immediate addresing mode) Cara ini menggunakan konstanta, misalnya: MOV A,#20h. Data konstan merupakan data yang menyatu dengan instruksi, contoh instruksi di atas mempunyai arti bahwa data konstantanya, yaitu 20h, ( sebagai data konstan harus diawali # dan tanda h untuk menyatakan format bilangan heksadesimal ) disalin di akumulator A. Yang perlu diperhatikan dalam instruksi ini adalah bilangan 20h merupakan bagian dari instruksi ( menjadi satu dengan op-kode instruksi ). 2. Mode pengalamatan langsung ( direct addresing mode ) Cara ini dipakai untuk menunjuk data yang berada di suatu lokasi memory dengan cara menyebut lokasi (alamat) memory tempat data itu berada, misalnya MOVA,30. Instruksi ini mempunyai arti bahwa data yang berada di dalam memory dengan lokasi 30h disalin ke akumulator. Sekilas instruksi ini sama dengan instruksi sebelumnya, namun terdapat perbedaan pada tanda #, jika instruksi pertama menggunakan tanda # yang menandai 20h sebagai data konstan, sedangkan dalam instruksi kedua karena tidak menggunakannya, maka 30h diartikan sebagai suatu lokasi memory. Selain dari itu operan yang digunakan dapat berupa bilangan bertanda mulai dari -256 sampai +256. Hal ini telah dijelaskan oleh Widodo budiharto ( 2005:47 ) yang mengatakan bahwa operan yang digunakan pada pengalamtan langsung / immedied data dapat berupa bilangan bertanda, mulai dari -255 hingga +256. a. Mode pengalamatan tidak langsung (indirect addresing mode) Cara ini dipakai untuk mengakses data yang berada dalam memory, tetapi lokasi memory tidak disebut secara langsung tetapi dititipkan ke register lain. Untuk pengelamatan tak langsung digunakan simbol @. Hal ini sejalan dengan pendapat Widodo Budiharto ( 2005: 47 ) yang mengatakan bahwa untuk melakukan pengelamatan tak langsung digunakan simbol @. Pengelamatan jenis ini biasanya biasa digunakan untuk melakukan penulisan, pemindahan, atau pembacaan beberapa data dalam lokasi memory. Misalnya: MOVA.@R0. Dalam instruksi ini register serba guna R0 dipakai untuk menyimpan lokasi memory, sehingga instruksi ini

2 mempunyai arti memory yang alamatnya tersimpan dalam R0 isinya disimpan di akumulator A. Tanda @ dipakai untuk menandai lokasi memory yang tersimpan dalam R0. Bandingkan dengan instruksi penyebutan lokasi memory secara langsung sebelumnya, dalam instruksi ini lokasi memory terlebih dulu disimpan di R0 dan R0 berperan sebagai penunjuk lokasi memory penyimpan data yang akan diakses, sehingga kalau nilai R0 berubah, maka lokasi memory yang ditunjuk juga akan berubah pula (beserta isinya jika berbeda). Dalam instruksi ini register serba guna R0 berfungsi sebagai register penyimpan alamat (indirect address register), selain R0 register serbaguna lainnya, R1 juga bisa dipakai sebagai register penampung alamat. b. Mode pengalamatan register (register addresing mode) Misalnya : MOVA,R5, instruksi ini mempunyai arti bahwa data dalam register serbaguna R5 disalin ke akumulator A. Instruksi ini menjadikan register serba guna R0 sampai R7 dapat digunakan sebagai penyimpan data yang praktis dan kerjanya sangat cepat. Data-data yang disebut di dalam pembahasan tersebut semuanya berada dalam memory data (termasuk register serba guna). Dalam penulisan program sering diperlukan tabel baku yang disimpan bersama dengan program yang bersangkutan, sehingga tabel semacam ini merupakan data dalam memory program (menjadi satu dalam program). c. Mode pengalamatan kode tidak langsung (code indirect addresing mode) MCS51 mempunyai cara penyebutan data dalam memory program yang dilakukan secara tak langsung, misalnya: MOVC A,@A+DPTR. Dalam instruksi ini instruksi MOV diganti dengan MOVC tambahan huruf C tersebut dimaksud untuk membedakan bahwa instruksi ini digunakan untuk memory program (MOV tanpa huruf C artinya digunakan untuk memory data). Tanda @ digunakan untuk menandai A+DPTR yang berfungsi untuk menyatakan lokasi memory yang isinya disalin ke akumulator A, data yang tersimpan dalam DPTR (data pointer register-2 byte) ditambah dengan nilai yang tersimpan dalam akumulator A (1 byte) sama dengan lokasi memory program yang diakses. Program Assembly merupakan program yang ditulis oleh pembuat program berupa kumpulan baris-baris perintah yang biasanya disimpan dengan extention. ASM. Program ini terdiri atas beberapa bagian yang dijelaskan sebagai berikut: (1) Label Label berguna untuk memberikan nama pada alamat-alamat yang dituju untuk mempermudah programmer dalam membuat program. Label digunakan sebagai cacatan dari

3 alur program. Dalam program sebuah label harus diawali dengan huruf, tidak boleh ada label yang sama dan maksimal 16 karakter. (2) Mnemonic Mnemonic merupakan singkatan dari perintah. Mnemonic bisa disebut juga kode operasi (opcode), yaitu kode-kode yang akan dikerjakan oleh program assembly yang ada pada komputer dan mikrokontroler. Opcode yang dikerjakan oleh mikrokontroler sangat tergantung pada jenis mikrokontroler yang digunakan. Contoh, untuk keluarga MCS51 digunakan MOVX, ADD, MOV, dan lain-lain. Sedangkan kode operasi yang digunakan oleh program assembly yang ada pada komputer tergantung pada program assembly yang digunakan. Contoh: ORG, EQU,DB, dan lain-lain. (3) Operand Operand merupakan pelengkap dari mnemonic. Jumlah operand yang dibutuhkan oleh sebuah mnemonic tidak selalu sama, sebuah mnemonic dapat memiliki tiga, dua, satu bahkan tidak memiliki operand. Contoh: CJNE R7,#07H,AKSI ; memerlukan tiga operand Berfungsi untuk melompat ke label ditunjuk sejauh 64 kilobyte MOVX @DPTR,A ; memerlukan dua operand (4) Komentar Komentar merupakan bagian yang menjelaskan proses-proses kerja pada bagian-bagian program, biasanya diawali dengan tanda... dan dapat diletakkan pada bagian manapun dari suatu program. Contoh: MOV A,P1 ; mengambil data dari port 1 disalin ke akumulator Beberapa instruksi yang digunakan dengan bahasa assembly pada program, yaitu sebagai berikut : a) MOV, MOVC dan MOVX 1) Instruksi MOV digunakan untuk menyalin data antara 2 operand.

4 2) Instruksi MOVC digunakan untuk menyalin data yang terdapat pada memori program internal. 3) Instruksi MOVX digunakan untuk menyalin data yang terdapat pada memori program eksternal. Tabel 3.Contoh instruksi MOV b) ADD dan SUBB Contoh MOV A,R1 MOV A,@R1 MOV A,P1 MOV P1,A MOVC A,@X+DPTR MOVX A,@+DPTR MOVX @DPTR,A Salin nilai R1 ke akumulator Salin isi lokasi yang ditunjuk R1 ke A Salin data pada port 1 ke akumulator Salin data pada akumulator ke port 1 Salin data internal yang ditunjuk DPTR ke A Salin data eksternal yang ditunjuk DPTR ke A Salin data akumulator ke lokasi yang ditunjuk DPTR 1) Instruksi ADD digunakan untuk melakukan operasi penjumlahan akumulator dengan suatu operand dan hasilnya disimpan dalam akumulator. 2) Instruksi SUBB digunakan untuk melakukan operasi pengurangan akumulator dengan suatu operand dan hasilnya disimpan dalam akumulator. Tabel 4.Contoh instruksi ADD dan SUBB Contoh ADD A, #20 A = A + 20 ADD A, @R0 A = A + [R0] SUBB A,B A = A - B Sumber : (Putra 2002) c) MUL AB dan DIV AB 1) Instruksi MUL AB digunakan untuk melakukan operasi perkalian antara akumulator dengan register B. Hasilnya berupa data 16 bit dengan low byte pada A dan high byte pada B.

5 2) Instruksi DIV AB digunakan untuk melakukan operasi pembagian antara akumulator dengan register B. Hasilnya, pembagian disimpan pada akumulator dan sisa pembagian disimpan pada register B. d) DEC dan INC 1) Instruksi DEC digunakan untuk melakukan pengurangan sebesar satu pada suatu operand. 2) Instruksi INC digunakan untuk melakukan penambahan sebesar satu pada suatu operand Tabel 5.Contoh instruksi DEC dan INC Contoh DEC A A = A 1 DEC @R0 [R0] = [R0] 1 INC A A = A + 1 INC DPTR DPTR = DPTR + 1 e) ORL, ANL dan CPL 1) Instruksi ORL digunakan untuk melakukan operasi OR antara dua operand. 2) Instruksi ANL digunakan untuk melakukan operasi AND antara dua operand. 3) Instruksi CPL digunakan untuk melakukan operasi komplemen suatu operand. Tabel 6.Contoh instruksi ORL,ANL,dan CPL Contoh Akumulator Register Hasil B ORL A,B 0011 1010 1111 0000 1111 1010 ANL A,B 0011 1010 1111 0000 0011 0000 CPL A 0011 1010 ---- ---- 1100 0101 Sumber : ( Putra 2002) f) RR, RL dan SWAP 1) Instruksi RR digunakan untuk melakukan operasi pergeseran ke kanan sebanyak 1 bit. 2) Instruksi RL digunakan untuk melakukan operasi pergeseran ke kiri sebanyak 1 bit.

6 3) Instruksi SWAP digunakan untuk melakukan operasi pertukaran data low nible dan high nible. Tabel 7.Contoh instruksi RR,RL dan SWAP Contoh Akumulator Hasil RR 0011 1010 0001 1101 A RL 0011 1010 0111 0100 A SWAP A 0011 1010 1010 0011 g) SETB dan CLR 1) Instruksi SETB digunakan untuk memberikan logika 1 pada bit operand. 2) Instruksi CLR digunakan untuk memberikan logika 0 pada bit operand. Tabel 8.Contoh instruksi SETB dan CLR Contoh SETB P2.0 Menset isi suatu alamat bit P2.0 menjadi 1 CLR P2.1 Mereset isi alamat P2.1 menjadi 00H h) PUSH dan POP 1) Instruksi PUSH digunakan untuk menyimpan operand ke dalam stack. 2) Instruksi POP digunakan untuk mengembalikan nilai operand dari stack. Tabel 9.Contoh instruksi PUSH dan POP Contoh Menaikkan stack pointer kemudian menyimpan isinya ke suatu PUSH 4DH alamat data pada lokasi yang ditunjukkan oleh stack pointer POP PSW Menempatkan byte yang ditunjukkan oleh stack pointer ke suatu alamat data, kemudian mengurangi satu isi stack pointer Sumber : (Putra 2002 ) i) JMP, JB, JNB, JZ, JNZ dan CJNE 1) Instruksi JMP (Jump) digunakan untuk melakukan lompatan ke suatu blok program.

7 2) Instruksi JB (Jump if Bit) dan JNB (Jump if Not Bit) digunakan untuk melakukan lompatan ke suatu blok program jika nilai operand 1 (Bit) atau 0 (Not Bit). 3) Instruksi JZ (Jump if Zero) dan JNZ (Jump if Not Zero) digunakan untuk melakukan lompatan ke suatu blok program jika nilai operand 0 (Zero) atau <> 0 (Not Zero). 4) Instruksi CJNE (Compare and Jump if Not Equal) digunakan untuk melakukan pembandingan dua operand dan lompat ke blok program lain jika tidak sama. Tabel 10.Contoh instruksi JMP dan CJNE Contoh j) CALL dan RET JMP @A+DPTR CJNE @R1,#01H,0009H Menambah isi akumulator dengan isi data pointer dan meloncat ke alamat kode sesuai hasil penjumlahan Membandingkan data langsung dengan lokasi memori yang dialamati register r. Apabila tidak sama, eksekusi akan menuju ke alamat kode. Bila sama, instruksi selanjutnya yang akan dijalankan 1) Instruksi CALL digunakan untuk memanggil prosedur tertentu dalam program (subprogram). 2) Instruksi RET digunakan untuk mengembalikan ke baris program yang melakukan CALL.