You are on page 1of 10

PERCOBAAN 4_0

LJMP ORG ORG 0H START 100H A,#10 A,#20 P1,A START

START: MOV ADD MOV SJMP 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,#10 Melakukan pengisian data berupa 10 pada kode operasi kedua dan disimpan di
akumulator A pada kode operasi pertama. ADD A,#20 Tambahkan Akumulator A dengan sebuah konstanta (20) dan hasilnya disimpan

dalam akumulator A. Sehingga berinilai 30


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 Output yang dihasilkan pada Port 1 Berupa 0001110b. Nilai tersebut sesuai dengan nilai konversi decimal 30 ke dalam biner,yaitu 0001110b

PERCOBAAN 4_1
ORG LJMP START ORG 100H START: MOV ADD MOV SJMP 0H

A,#200 A,#60 P1,A 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,#200 M0elakukan pengisian data berupa 200 pada kode operasi kedua dan disimpan di
akumulator A pada kode operasi pertama. ADD A,#60 Tambahkan Akumulator A dengan sebuah konstanta (60) dan hasilnya disimpan

dalam akumulator A. Sehingga berinilai 260. DIkarenakan bit maksimal adalah 255, maka bergeser kembali dari awal sampai terpenuhi nilai tersebut. Diperoleh nilai 4.
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 Output yang dihasilkan pada Port 1 Berupa 00000100b. Nilai tersebut sesuai dengan nilai konversi decimal 4 ke dalam biner,yaitu 00000100b

PERCOBAAN 4_2
ORG LJMP ORG START: 0H START 100H MOV SUBB MOV SJMP END Preview :

A,#10 A,#5 P1,A START

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,#10 Melakukan pengisian data berupa 10 pada kode operasi kedua dan disimpan di akumulator A pada kode operasi pertama. SUBB A,#5 Lakukan pengurangan data di Akumulator A beserta carry flag dengan sebuah konstanta dan hasilnya disimpan di Akumulator A. 10 5, sehingga nilai menjadi 5 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 Output yang dihasilkan pada Port 1 Berupa 00000101b. Nilai tersebut sesuai dengan nilai konversi decimal 5 ke dalam biner,yaitu 00000101b

PERCOBAAN 4_3
ORG LJMP ORG START: 0H START 100H MOV SUBB MOV SJMP END Preview :

A,#5 A,#7 P1,A START

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,#5 Melakukan pengisian data berupa 5 pada kode operasi kedua dan disimpan di akumulator A pada kode operasi pertama. SUBB A,#7 Lakukan pengurangan data di Akumulator A beserta carry flag dengan sebuah konstanta dan hasilnya disimpan di Akumulator A. 5 7 = 2 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 Output yang dihasilkan pada Port 1 Berupa 11111101b. Nilai tersebut sesuai dengan nilai konversi decimal 2 ke dalam biner,yaitu 11111101b

PERCOBAAN 4_4
ORG LJMP ORG START: 0H START 100H MOV SUBB DA MOV SJMP END Preview :

A,#20 A,#10 A P1,A START

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,#20 Melakukan pengisian data berupa 20 pada kode operasi kedua dan disimpan di akumulator A pada kode operasi pertama. SUBB A,#10Lakukan pengurangan data di Akumulator A beserta carry flag dengan sebuah konstanta dan hasilnya disimpan di Akumulator A. 20 10 = 10 DA A Mengubah data di Akumulator A menjadi bentuk BCD. Instruksi ini akan mengubah sebuah 8 bit data pada Akumulator A dalam bentuk hexa menjadi 2 digit di mana digit pertama pada nibble atas berupa bit 74 dari Akumulator A dan digit kedua adalah nibble bawah berupa bit 30 dari akumulator A. Pada dasarnya instruksi ini akan menambahkan 6 apabila nibble rendah berada di atas 9 atau bit AC set dan menambahkan 6 apabila nibble tinggi berada di atas 9 atau bit Carry Set. Instruksi ini biasa digunakan sesudah instruksi ADD. Jadi bernilai 16 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 4_5
ORG LJMP ORG START: 0H START 100H MOV MOV MUL MOV SJMP END Preview :

A,#20 B,#10 AB P1,A START

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,#20 Melakukan pengisian data berupa 20 pada kode operasi kedua dan disimpan di

akumulator A pada kode operasi pertama. MOV B,#10 Melakukan pengisian data berupa 10 pada kode operasi kedua dan disimpan di register B pada kode operasi pertama. MUL AB Lakukan perkalian antara Akumulator A dan Register B, hasil dari perkalian disimpan di Akumulator A, untuk byte rendah dan di Register B untuk byte tinggi. Bila hasil perkalian lebih dari 255 (0FFH) maka flag overflow akan set, sedangkan carry akan selalu clear. Jadi bernilai 200. 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 Output yang dihasilkan pada Port 1 Berupa 11001000b. Nilai tersebut sesuai dengan nilai konversi decimal 100 ke dalam biner,yaitu 11001000b

PERCOBAAN 4_6
ORG 0H LJMP START ORG 100H START: MOV A,#30 MOV B,#10 MUL AB 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,#30 Melakukan pengisian data berupa 30 pada kode operasi kedua dan disimpan di akumulator A pada kode operasi pertama. MOV B,#10 Melakukan pengisian data berupa 10 pada kode operasi kedua dan disimpan di register B pada kode operasi pertama. MUL AB Lakukan perkalian antara Akumulator A dan Register B, hasil dari perkalian disimpan di Akumulator A, untuk byte rendah dan di Register B untuk byte tinggi. Bila hasil perkalian lebih dari 255 (0FFH) maka flag overflow akan set, sedangkan carry akan selalu clear. Jadi bernilai 44 MOV P1,A Melakukan 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 4_7

ORG 0H LJMP START ORG 100H START: MOV A,#25 MOV B,#10 DIV AB 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,#25 , Melakukan pengisian data berupa 25 pada kode operasi kedua dan disimpan di akumulator A pada kode operasi pertama. MOV B,#10 , Melakukan pengisian data berupa 10 pada kode operasi kedua dan disimpan di register B pada kode operasi pertama. DIV AB, nilai pada akumulator Dibagi dengan nilai pada register b, yaitu pembagian 25 / 10 MOV P1,A , Melakukan pemindahan data dari akumulator A pada kode operasi kedua dan disimpan di Port 1 pada kode operasi pertama. SJMP START , melompat kembali pada label start. Melakukan lompatan ke alamat yang ditentukan oleh rel dengan lompatan maksimum sebesar 128 byte pada label Start

PERCOBAAN 4_8
ORG 0H LJMP START ORG 100H START: MOV A,#25 MOV B,#10 DIV AB MOV P2,#11011111B MOV P1,B 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,#25 , Melakukan pengisian data berupa 25 pada kode operasi kedua dan disimpan di akumulator A pada kode operasi pertama. MOV B,#10 , Melakukan pengisian data berupa 10 pada kode operasi kedua dan disimpan di register B pada kode operasi pertama. DIV AB, nilai pada akumulator Dibagi dengan nilai pada register b, yaitu pembagian 25 / 10 MOV P1,B , Menampilkan nilai register b pada port 1 yaitu led. SJMP START , melompat kembali pada label start. Melakukan lompatan ke alamat yang ditentukan oleh rel dengan lompatan maksimum sebesar 128 byte pada label Start

PERCOBAAN 4_9
ORG 0H LJMP START ORG 100H START: MOV A,#0 LOOP: DEC A MOV P2,#11011111B MOV P1,A ACALL DELAY SJMP LOOP MOV R1,#0FFH MOV R2,#0FH DJNZ R2,$ DJNZ R1,DLY RET END

DELAY: DLY:

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,#0 , memberikan nilai pada akumulator yaitu 0 desimal. DEC A , memberikan operasi decrement pada akumulator

MOV P1,A , Menampilkan nilai akumulator pada port 1 yaitu led. ACALL , memanggil label delay SJMP LOOP , melompat kembali pada label loop MOV R1, #0FFH, memberikan nilai pada register R1 yaitu FF hexa MOV R2, #0FH, memberikan nilai pada register R2 yaitu F hexa DJNZ R2, $, decrement jump if noz zero, melakukan operasi decrement pada R2, dan mengulangi langkah pada baris ini bila nilai R2 tidak nol. DJNZ R1, $, decrement jump if noz zero, melakukan operasi decrement pada R1, dan dan kembali pada label dly bila nilai R1 tidak nol. RET, kembali pada fungsi yang telah memanggilnya, yaitu acall delay.

PERCOBAAN 4_10
ORG LJMP ORG START: MOV LOOP: INC 0H START 100H A,#0 A MOV P2,#11011111B MOV P1,A ACALL DELAY SJMP LOOP DELAY: DLY: MOV MOV DJNZ DJNZ RET END Preview : R1,#0FFH R2,#0FFH R2,$ R1,DLY

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,#0 , memberikan nilai pada akumulator yaitu 0 desimal.

INC A , memberikan operasi increment pada akumulator MOV P1,A , Menampilkan nilai akumulator pada port 1 yaitu led. ACALL , memanggil label delay SJMP LOOP , melompat kembali pada label loop MOV R1, #0FFH, memberikan nilai pada register R1 yaitu FF hexa MOV R2, #0FH, memberikan nilai pada register R2 yaitu F hexa DJNZ R2, $, decrement jump if noz zero, melakukan operasi decrement pada R2, dan mengulangi langkah pada baris ini bila nilai R2 tidak nol. DJNZ R1, $, decrement jump if noz zero, melakukan operasi decrement pada R1, dan dan kembali pada label dly bila nilai R1 tidak nol. RET, Melakukan lompatan ke alamat yang disimpan dalam SP dan SP-1. Instruksi ini biasa digunakan pada saat kembali dari subroutine yang dipanggil dengan instruksi ACALL atau LCALL.Proses yang terjadi adalah sebagai berikut: - Isi dari alamat yang ditunjuk oleh stack pointer dipindah ke Program Counter nibble tinggi - Stack pointer berkurang 1 - Isi dari alamat yang ditunjuk oleh stack pointer dipindah ke Program Counter nibble rendah - Stack pointer berkurang 1

KESIMPULAN : Intruction Set MCS 51 : ADD/ADDC, yaitu operasi penjumlahan dengan suatu bilangan yang hasilnya disimpan pada akumulator SUBB, yaitu operasi pengurangan dengan suatu bilangan yang hasilnya disimpan pada akumulator, pada bahasa assembly tidak mengenal nilai negative (-) jadi akan bagian kiri angka nol pada garis bilangan kembali pada 254 dengan menambahkan carry. DA(desimal Adjust), Mengubah data di Akumulator A menjadi bentuk BCD. Instruksi ini akan mengubah sebuah 8 bit data pada Akumulator A dalam bentuk hexa menjadi 2 digit di mana digit pertama pada nibble atas berupa bit 74 dari Akumulator A dan digit kedua adalah nibble bawah berupa bit 30 dari Akumulator A. Pada dasarnya instruksi ini akan menambahkan 6 apabila nibble rendah berada di atas 9 atau bit AC set dan menambahkan 6 apabila nibble tinggi berada di atas 9 atau bit Carry Set. Instruksi ini biasa digunakan sesudah instruksi ADD. MUL AB, yaitu Lakukan perkalian antara Akumulator A dan Register B, hasil dari perkalian disimpan di Akumulator A, untuk byte rendah dan di Register B untuk byte tinggi. Bila hasil perkalian lebih dari 255 (0FFH) maka flag overflow akan set, sedangkan carry akan selalu clear. DEC, yaitu operasi decrement atau pengurangan 1 nilai pada nilai suatu nilai tertentu. INC, yaitu operasi increment, kebalikan dari operasi dec atau menambahkan 1 nilai pada suatu nilai tertentu INC DPTR, yaitu Instruksi increment yang bekerja pada data 16 bit yaitu DPTR, berfungsi untuk menaikan penunjuk data sebesar 1. Limpahan low byte(DPL) akan menaikan 1 nilai dari high byte(DPH)

You might also like