You are on page 1of 11

PERCOBAAN 5_0

ORG 0H LJMP START ORG 100H START: MOV A,P3 ANL A,#01010011B MOV P2,#11011111B MOV P1,A SJMP START END Preview :

ANALISA : LJMP Start, melompat dan menjalankan program yang berada di dalam label Start. Proses yang terjadi adalah 16 bit dari alamat yang ditentukan oleh addr16 dipindah ke Program Counter sehingga program akan langsung menjalankan instruksi yang ada pada alamat tersebut. MOV A, P3 Melakukan pengisian data dari Port 3 pada kode operasi kedua dan disimpan di akumulator A pada kode operasi pertama. ANL A,#01010011B Melakukan operasi AND antara dua buah variabel dan menyimpannya di variabel tujuan. Apabila variabel tujuan adalah akumulator, maka variabel yang lain dapat menggunakan register (Rn), alamat langsung, tak langsung atau immediate data, apabila variabel tujuan adalah alamat langsung, maka variabel yang lain dapat menggunakan akumulator atau immediate data MOV P2,#11011111B Melakukan pengisian data 11011111B pada kode operasi kedua dan disimpan di Port 2 pada kode operasi pertama. MOV P1,AMelakukan pemindahan data dari akumulator A pada kode operasi kedua dan disimpan di Port 1 pada kode operasi pertama. SJMP Start, melakukan lompatan ke alamat yang ditentukan oleh rel dengan lompatan maksimum sebesar 128 byte pada label Start

PERCOBAAN 5_1
ORG 0H LJMP START ORG 100H START: MOV A,P3 ORL A,#01010011B MOV P2,#11011111B MOV P1,A SJMP START END Preview :

ANALISA : LJMP Start, melompat dan menjalankan program yang berada di dalam label Start. Proses yang terjadi adalah 16 bit dari alamat yang ditentukan oleh addr16 dipindah ke Program Counter sehingga program akan langsung menjalankan instruksi yang ada pada alamat tersebut. MOV A, P3 Melakukan pengisian data dari Port 3 pada kode operasi kedua dan disimpan di akumulator A pada kode operasi pertama. ORL A,#01010011B Melakukan operasi OR antara dua buah variabel dan menyimpannya di variabel tujuan. Apabila variabel tujuan adalah akumulator, maka variabel yang lain dapat menggunakan register (Rn), alamat langsung, tak langsung atau immediate data, apabila variabel tujuan adalah alamat langsung, maka variabel yang lain dapat menggunakan akumulator atau immediate data MOV P2,#11011111B Melakukan pengisian data 11011111B pada kode operasi kedua dan disimpan di Port 2 pada kode operasi pertama. MOV P1,AMelakukan pemindahan data dari akumulator A pada kode operasi kedua dan disimpan di Port 1 pada kode operasi pertama. SJMP Start, melakukan lompatan ke alamat yang ditentukan oleh rel dengan lompatan maksimum sebesar 128 byte pada label Start

PERCOBAAN 5_2
ORG 0H LJMP START ORG 100H

START: MOV A,P3 XRL A,#00111100B MOV P2,#11011111B MOV P1,A SJMP START END Preview :

ANALISA : LJMP Start, melompat dan menjalankan program yang berada di dalam label Start. Proses yang terjadi adalah 16 bit dari alamat yang ditentukan oleh addr16 dipindah ke Program Counter sehingga program akan langsung menjalankan instruksi yang ada pada alamat tersebut. MOV A, P3 Melakukan pengisian data dari Port 3 pada kode operasi kedua dan disimpan di akumulator A pada kode operasi pertama. XRL A,#00111100B Melakukan operasi EXOR antara dua buah variabel dan menyimpannya di variable tujuan. Apabila variabel tujuan adalah akumulator, maka variabel yang lain dapat menggunakan register (Rn), alamat langsung, tak langsung atau immediate data, apabila variabel tujuan adalah alamat langsung, maka variabel yang lain dapat menggunakan akumulator atau immediate data MOV P2,#11011111B Melakukan pengisian data 11011111B pada kode operasi kedua dan disimpan di Port 2 pada kode operasi pertama. MOV P1,AMelakukan pemindahan data dari akumulator A pada kode operasi kedua dan disimpan di Port 1 pada kode operasi pertama. SJMP Start, melakukan lompatan ke alamat yang ditentukan oleh rel dengan lompatan maksimum sebesar 128 byte pada label Start

PERCOBAAN 5_3
ORG 0H LJMP START ORG 100H START: MOV A,#11111111B CLR A MOV P2,#11011111B MOV P1,A SJMP START END Preview :

ANALISA : LJMP Start, melompat dan menjalankan program yang berada di dalam label Start. Proses yang

terjadi adalah 16 bit dari alamat yang ditentukan oleh addr16 dipindah ke Program Counter sehingga program akan langsung menjalankan instruksi yang ada pada alamat tersebut. MOV A,#11111111B Melakukan pengisian data yang bernilai 11111111B pada kode operasi kedua dan disimpan di akumulator A pada kode operasi pertama. CLR A Memberikan nilai 0 pada 8 bit Akumulator A MOV P2,#11011111B Melakukan pengisian data 11011111B pada kode operasi kedua dan disimpan di Port 2 pada kode operasi pertama. MOV P1,AMelakukan pemindahan data dari akumulator A pada kode operasi kedua dan disimpan di Port 1 pada kode operasi pertama. SJMP Start, melakukan lompatan ke alamat yang ditentukan oleh rel dengan lompatan maksimum sebesar 128 byte pada label Start

PERCOBAAN 5_4
ORG 0H LJMP START ORG 100H START: MOV A,#10110010B CPL A MOV P2,#11011111B MOV P1,A SJMP START END Preview :

ANALISA : LJMP Start, melompat dan menjalankan program yang berada di dalam label Start. Proses yang terjadi adalah 16 bit dari alamat yang ditentukan oleh addr16 dipindah ke Program Counter sehingga program akan langsung menjalankan instruksi yang ada pada alamat tersebut. MOV A,# 10110010B Melakukan pengisian data yang bernilai 10110010B pada kode operasi kedua dan disimpan di akumulator A pada kode operasi pertama. CPL A Melakukan komplemen pada setiap bit dalam akumulator A, sehingga A=01001101B MOV P2,#11011111B Melakukan pengisian data 11011111B pada kode operasi kedua dan disimpan di Port 2 pada kode operasi pertama. MOV P1,AMelakukan pemindahan data dari akumulator A pada kode operasi kedua dan disimpan di Port 1 pada kode operasi pertama. SJMP Start, melakukan lompatan ke alamat yang ditentukan oleh rel dengan lompatan maksimum sebesar 128 byte pada label Start

PERCOBAAN 5_5
ORG 0H LJMP START ORG 100H START: MOV A,#00000001B RL A RL A RL A MOV P2,#11011111B MOV P1,A SJMP START END Preview :

ANALISA : LJMP Start, melompat dan menjalankan program yang berada di dalam label Start. Proses yang terjadi adalah 16 bit dari alamat yang ditentukan oleh addr16 dipindah ke Program Counter sehingga program akan langsung menjalankan instruksi yang ada pada alamat tersebut. MOV A,# 00000001B Melakukan pengisian data yang bernilai 00000001B pada kode operasi kedua dan disimpan di akumulator A pada kode operasi pertama. RL A Melakukan pergeseran ke kiri 1 bit untuk setiap bit dalam akumulator A, sehingga A=00000010b RL A Melakukan pergeseran ke kiri 1 bit untuk setiap bit dalam akumulator A, sehingga A=00000100b RL A Melakukan pergeseran ke kiri 1 bit untuk setiap bit dalam akumulator A, sehingga A=00001000b MOV P2,#11011111B Melakukan pengisian data 11011111B pada kode operasi kedua dan disimpan di Port 2 pada kode operasi pertama. MOV P1,AMelakukan pemindahan data dari akumulator A pada kode operasi kedua dan disimpan di Port 1 pada kode operasi pertama. SJMP Start, melakukan lompatan ke alamat yang ditentukan oleh rel dengan lompatan maksimum sebesar 128 byte pada label Start

PERCOBAAN 5_6
ORG 0H LJMP START ORG 100H START: MOV A,#10000000B RR A RR A RR A MOV P2,#11011111B MOV P1,A SJMP START

END Preview :

ANALISA : LJMP Start, melompat dan menjalankan program yang berada di dalam label Start. Proses yang terjadi adalah 16 bit dari alamat yang ditentukan oleh addr16 dipindah ke Program Counter sehingga program akan langsung menjalankan instruksi yang ada pada alamat tersebut. MOV A,# 10000000B Melakukan pengisian data yang bernilai 10000000B pada kode operasi kedua dan disimpan di akumulator A pada kode operasi pertama. RR A Melakukan pergeseran ke kiri 1 bit untuk setiap bit dalam akumulator A, sehingga A=01000000b RR A Melakukan pergeseran ke kiri 1 bit untuk setiap bit dalam akumulator A, sehingga A=00100000b RR A Melakukan pergeseran ke kiri 1 bit untuk setiap bit dalam akumulator A, sehingga A=00010000b MOV P2,#11011111B Melakukan pengisian data 11011111B pada kode operasi kedua dan disimpan di Port 2 pada kode operasi pertama. MOV P1,AMelakukan pemindahan data dari akumulator A pada kode operasi kedua dan disimpan di Port 1 pada kode operasi pertama. SJMP Start, melakukan lompatan ke alamat yang ditentukan oleh rel dengan lompatan maksimum sebesar 128 byte pada label Start

TUGAS ANIMASI LED


ORG 0000H LJMP START ORG 100H START: MOV P1,#0FFH ACALL DELAY LOOP: ACALL GESERKANAN ACALL GESERKIRI SJMP LOOP GESERKIRI: MOV A,#11111110B LOMPAT: MOV P1,A RL A ACALL DELAY CJNE A,#11111110B,LOMPAT RET GESERKANAN:

MOV A,#01111111B LOMPAT2: MOV P1,A RR A ACALL DELAY CJNE A,#01111111B,LOMPAT2 RET DELAY: MOV R2,#20 DELAY0: MOV R0,#255 DELAY1: MOV R1,#255 DELAY2: DJNZ R1,DELAY2 DJNZ R0,DELAY1 DJNZ R2,DELAY0 RET END

Preview :

ANALISA : Beberapa fungsi yang penting antara lain: mov p1,#0ffh, memberi nilai pada p1 sebesar 0ffh acall delay, memanggil label delay sjmp loop, melompat ke label jump mov a,#11111110b, memberi nilai pada akumulator mov p1,a, menampilkan nilai akumulator pada led rl a, melakukan operasi pergeseran ke kiri acall delay, memanggil fungsi delay cjne a,#11111110b,lompat, membandingkan nilai akumulator dengan 11111110b dan melompat pada label lompat bila tidak sama ret, kembali ke fungsi yang memanggilnya rr a, melakukan fungsi pergeseran ke kanan djnz r1,delay2, melakukan operasi decrement pada r1, dan melompat pada label delay2 bila nilainya tidak nol program diatas mempunya dua fungsi utama yaitu melakukan pergeseran ke kiri dan kekanan, pada fungsi pergeseran ke kiri, yang dapat dilihat pada fungsi geserkiri, fungsi tsb memberi nilai awal pada akumulator, lalu nilai tersebut digeser ke kiri dengan fungsi rl serta ditampilkan ke led satu persatu. Pada setiap pergeseran, kondisi akan dibandingkan terlebih dahulu, bila belum sesuai maka lompat pada label lompat yang akan mengulangi pergeseran lagi, fungsi yang digunakan untuk membandingkan sekaligus melakukan lompatan yaitu cjne, compare jump if not equal, bila kondisi sudah sama maka akan melakukan instruksi dibawahnya ret, yang artinya kembali pada fungsi yang memanggil tepatnya label loop, setelah itu memanggil fungsi geserkanan yang melakukan pergeseran ke kanan, fungsi loop akan melakukan perulangan pemanggilan fungsi geserkiri dan geserkanan.

KESIMPULAN Bahasa Assembly mempunyai beberapa set intruksi logika, beberapa yang sering digunakan antara lain: Operasi AND (Instruksi ANL) yaitu operasi yang bila salah satu atau kedua inputnya nol maka menghasilkan nilai nol, biasanya digunakan untuk membuat nol beberapa bit tertentu. Operasi OR (Instrusi ORL) yaitu operasi yang bila salah satu atau kedua inputnya satu maka menghasilkan nilai satu, biasanya digunakan untuk membuat satu beberapa bit tertentu. Operasi Exclusive-OR (Instruksi XRL) yaitu operasi yang bila inputnya sama baik keduanya nol ataupun keduanya satu maka hasilnya adalah nol, tapi bila input berbeda baik satu-nol ataupun nol-satu maka hasilnya adalah satu. Operasi Clear (Instrukasi CLR) yaitu instruksi membuat nilai menjadi nol. Komplement (Instruksi CPL) yaitu instruksi membuat nilai berlawanan dengan nilai asal

Operasi pergeseran (RR, RRC, RL dan RLC) Rr yaitu Instuksi menggeser bit ke kanan Rrc yaitu Instuksi menggeser bit ke kanan dengan penggesernan nilai dari carry diikutkan Rl yaitu Instuksi menggeser bit ke kiri Rlc yaitu Instuksi menggeser bit ke kiri dengan penggesernan nilai dari carry diikutkan Operasi penukaran data (Instruksi SWAP) yaitu Instruksi menukar nilai 4 bit low menjadi 4 bit high dan sebaliknya.

You might also like