Archive

Author Archive

[OOPTIFC-GENERICS] 105060800111021_Niar Ariati

November 23rd, 2011

1.     Buat contoh class Generics dan buat class test yang menunjukkan ke-generic-annya!

public class GenericClass<T> {

private T isi;

public void setisi(T isi){

this.isi = isi;

}

public T getisi(){

return isi;

}

}

public class GenericTest {

public static void main (String []args) {

Generic<String> gnr1 = new Generic<String>();

gnr1.setisi(“Niar”);

System.out.println(“Isi : ” + gnr1.getisi());

Generic<Integer> gnr2 = new Generic<Integer>();

gnr2.setisi(0111021);

System.out.println(“Isi : ” + gnr2.getisi());

}

}

 

2.     Buat contoh method Generics dalam sebuah class dan buat class testnya!

public class GenericClass<T> {

private T isi;

public void setisi(T isi){

this.isi = isi;

}

public T getisi(){

return isi;

}

}

public class GenericTest {

public static void main (String []args) {

Generic<String> gnr1 = new Generic<String>();

gnr1.setisi(“Niar”);

System.out.println(“Isi : ” + gnr1.getisi());

Generic<Integer> gnr2 = new Generic<Integer>();

gnr2.setisi(1111061);

System.out.println(“Isi : ” + gnr2.getisi());

}

}

 

 3.     Perhatikan kelas berikut ini:

public class Kotak<T>{
T isi;
Kotak(){
}
public T getIsi(){
return isi;
}
public void setIsi(T isi){
this.isi=isi;
}
}

a. Berilah contoh pada class test untuk T dengan type integer dan double!
public class GTest {
public static void main(String[] args) {

Kotak MyInt = new Kotak();
Kotak myDouble = new Kotak();

MyInt.setIsi(new Integer(30));
myDouble.setIsi(new Double(40));

System.out.println(MyInt.getIsi().toString());
System.out.println(myDouble.getIsi().toString());
}
}

b. Diketahui struktur inheritance class dari parent A ke grand child G dengan urutan C -D -E -F-G
Lakukan modifikasi Class Kotak agar pada saat membuat object dari Class Kotak, type T yang diijinkan adalah tipe-tipe dari class E dan child-childnya! (Keyword: Bounded Type, Lower Bound)
public class Mobil {
T isi;

public Mobil() {
}

public T getIsi() {
return isi;
}

public void setIsi(T isi) {
this. isi = isi;
}
}

Lakukan modifikasi Class Kotak agar pada saat membuat object dari Class Kotak, type T yang diijinkan adalah tipe-tipe dari class E dan parent-parentnya! (Keyword: Bounded Type, Upper Bound)
public class Mobil {
T isi;

public Mobil() {
}

public T getIsi() {
return isi;
}

public void setIsi(T isi) {
this.isi = isi;
}
}

 

4.    Suatu generic class dapat memiliki lebih dari satu type parameter.

public class Kotak<T1, T2>{
T1 isi1;
T2 isi2;
Kotak(){
}
public void setIsi(T1 isi1){
this.isi1=isi1;
}
public void setIsi(T2 isi2){
this.isi1=isi1;
}
a. Apakah metod setIsi() di atas valid? (ingat syarat overload)
Berdasarkan Syarat Overload Maka Method tersebut valid karena memiliki nama method yang sama dan TipeDatanya Generics yang berbeda. Tetapi method tersebut tidak aman karena bisa bersifat ambiguity sehingga menyebabkab eror jika dimasuki oleh tipedata yang sama.

b. Jika method tersebut valid, batasan apa yang harus dilakukan agar pada saat membuat object tetap valid untuk menghindari ambiguity? (ingat syarat overload)
Untuk menghindari eror karena ambiguity, maka tipedata yang dimasukkan ke T1 harus berbeda dengan tipedata yang dimasukkan ke T2 pada saat pendeclarasian variable di Class Test.
Misalnya:
Di Class Generics : public class Kotak{}
Di Class Test : Kotak myBox = new Kotak();
Jika tipe data yang dimasukkan pada Kotak tersebut sama maka akan terjadi eror karena sesuai dengan syarat Overload jika nama method sama dan meniliki parameter dengan tipedata yang sama maka akan terjadi Eror.

tugas

[oop_TIFC] niar ariati_105060800111021

November 15th, 2011

Soal

Pada sebuah perusahaan System Developer mempunyai beberapa PEGAWAI:

  • Bona, Rongrong, dan Oky adalah programmer yang mendapatkan gaji sebesar gaji pokok
  • Nirmala dan Putri adalah sales dengan gaji dan tambahan berupa bonus
  • Upik adalah manager yang mendapat tunjangan selain gaji pokok

Dengan pendekatan OOP, buatlah sebuah aplikasi Payroll (penggajian) sederhana yang dapat menampilkan daftar gaji semua pegawai diatas!

  • Gambar Class Diagram!
  • Implementasi dengan Java!
  • Buat Test unitnya!

Pemecahan Masalah

  • Obyek-obyek (kata benda)

– Pegawai, Programmer, Sales, dan Manager

– GajiPokok (int), Bonus (double), Tunjangan (double), Nama (string), Jabatan (string), dan TotalGaji (double)

 

  • Proses/tindakan (kata kerja)

– Menginfokan nama, jabatan dan total gaji untuk Pegawai, Programmer, Sales, dan Manager

– Perhitungan Gaji

  • Pegawai.totalGaji=gajiPokok
  • Programmer.totalGaji=gajiPokok
  • Sales.totalGaji=gajiPokok+bonus
  • Manager.totalGaji=gajiPokok+tunjangan

– Pegawai mempunyai gaji pokok, nama dan jabatan

– Programmer adalah pegawai

– Sales adalah pegawai yang mempunyai bonus

– Manager adalah pegawai yang mempunyai tunjangan

  • Definisi relasi antar class-nya

Pegawai merupakan kelas abstrak dan disebut juga kelas Super karena kelas ini menjadi basis bagi penbentukan kelas lainnya. Kelas Pegawai menjadi basis kelas Programmer, Sales, dan Manager. Sehingga, kelas pegawai mewariskan sifat pada kelas Programmer, Sales, dan Manager.

  • Gambar class diagram

 

 

 

 

 

 

  • Implementasikan dalam Java

a.       Class Pegawai secara umum

abstract class pegawai {

// Attributes

private double gPkok=30000;

private String nama;

private String jabatan;

private double total;

// Methods

public double getgPkok(){

return gPkok;

}

public void setgPkok(double gPkok){

gPkok = gPkok;

}

public String getNama(){

return nama;

}

public String getJabatan() {

return jabatan;

}

public double getTotal() {

return total;

}

public void info(){

System.out.println(“Nama Pegawai    : ” + this.getNama());

System.out.println(“Jabatan Pegawai : ” + this.getJabatan());

System.out.println(“Gaji Pegawai    : ” + this.getgPkok());

}

// Constructor

pegawai(String nama){

this.nama = nama;

}

pegawai(String nama,double total,String jabatan){

this.nama = nama;

this.jabatan = jabatan;

this.total = total;

}

pegawai(String nama,double total,double gPkok,String jabatan){

this.nama = nama;

this.jabatan = jabatan;

this.total = total;

this.gPkok = gPkok;

}

pegawai(String nama,String jabatan){

this.nama = nama;

this.jabatan = jabatan;

}

}

b.       Class Programmer yang diturunkan dari Class Pegawai

public class programmer extends pegawai {

 

//Constructor

programmer(String nama){

super(nama,”Programmer”);

}

}

c.       Class Sales yang diturunkan dari Class Pegawai

public class sales extends pegawai {

// Attributes

private double bonus;

// Methods

public double getBonus() {

return bonus;

}

public void setBonus(double bonus) {

bonus = bonus;

}

public double getTotal() {

return super.getTotal();

}

public void info(){

super.info();

System.out.println(“Bonus : ” + this.getBonus());

}

// Constructor

sales(String nama,double gPkok, double bonus) {

super(nama,gPkok+bonus,”Sales”);

this.bonus = bonus;

}

}

d.      Class Manager yang diturunkan dari Class Pegawai

public class manager extends pegawai {

// Attributes

private double tunjangan;

private double total;

//Methods

public double getTunjangan() {

return tunjangan;

}

public void setTunjangan(double tunjangan) {

tunjangan = tunjangan;

}

public double getTotal() {

return (super.getTotal() + tunjangan);

}

public void info(){

super.info();

System.out.println(“Tunjangan   : ” + this.getTunjangan());

}

 

// Constructor

manager(String nama,double gPkok,double tunjangan,String jabatan){

super(nama,gPkok+tunjangan,gPkok,jabatan);

this.tunjangan = tunjangan;

}

}

e.       TestPayroll

class testPayroll{

 

public static void main(String args[]){

 

programmer Bona;

Bona = new programmer(“Bona”);

programmer Rongrong;

Rongrong = new programmer(“Rongrong”);

programmer Okky;

Okky = new programmer(“Okky”);

 

sales Nirmala;

Nirmala = new sales(“Nirmala”,Bona.getgPkok(),5000);

sales Putri;

Putri = new sales(“Putri”,Bona.getgPkok(),5000);

manager Upik;

Upik = new manager(“Upik”,Bona.getgPkok(),10000,”Manager”);

 

System.out.println(” Manager: “);

Upik.info();

System.out.println();

System.out.println(” Sales: “);

Nirmala.info();

Putri.info();

System.out.println();

System.out.println(” Programmer: “);

Bona.info();

Rongrong.info();

Okky.info();

System.out.println();

}

}

 

  • Command Prompt

 

 

 

 

 

 

 

 

 

*untuk mendownload files ini click Tgs 3 PBO NIAR

tugas

Tugas 8 : Buat Program untuk jam digital

March 19th, 2011

Buat Program untuk jam digital

Available from: Tuesday, 15 March 2011, 11:30 AM
Due date: Friday, 18 March 2011, 05:30 AM
Last edited: Thursday, 17 March 2011, 11:19 AM (506 words)

JAM DIGITAL BERBASIS MIKROKONTROLER AT89S51

bil0 equ 20h ; menampilkan angka 0 pada Seven segment
bil1 equ 0ech ; menampilkan angka 1 pada Seven segment
bil2 equ 18h ; menampilkan angka 2 pada Seven segment
bil3 equ 88h ; menampilkan angka 3 pada Seven segment
bil4 equ 0c4h ; menampilkan angka 4 pada Seven segment
bil5 equ 82h ; menampilkan angka 5 pada Seven segment
bil6 equ 2h ; menampilkan angka 6 pada Seven segment
bil7 equ 0e8h ; menampilkan angka 7 pada Seven segment
bil8 equ 0h ; menampilkan angka 8 pada Seven segment
bil9 equ 80h ; menampilkan angka 9 pada Seven segment
bilkosong equ 0ffh ; untuk tampilan kosong (tidak ada nilai yang tampil)

utama:
0000| mov 70h,#0h
0003| mov 71h,#0h
0006| mov 72h,#0h
0009| mov 73h,#0h
000C| mov 74h,#0h
000F| mov 75h,#0h

loop:
0012| mov r0,70h
0014| acall transfer
0016| mov 76h,r1
0018| mov r0,71h
001A| acall transfer
001C| mov 77h,r1
001E| mov r0,72h
0020| acall transfer
0022| mov 78h,r1
0024| mov r0,73h
0026| acall transfer
0028| mov 79h,r1
002A| mov r0,74h
002C| acall transfer
002E| mov 7ah,r1
0030| mov r0,75h
0032| acall transfer
0034| mov 7bh,r1
0036| acall display
0038| inc 70h
003A| mov r2,70h
003C| cjne r2,#09h,loop
003F| mov 70h,#0h
0042| inc 71h
0044| mov r2,71h
0046| cjne r2,#05h,loop
0049| mov 71h,#0h
004C| inc 72h
004E| mov r2,72h
0050| cjne r2,#09h,loop
0053| mov 72h,#0h
0056| inc 73h
0058| mov r2,73h
005A| cjne r2,#05h,loop
005D| mov 73h,#0h
0060| inc 74h
0062| cjne r3,#02h, loop
0065| mov r2,74h
0067| mov r3,75h
0069| cjne r2,#09h,loop

loop1:
006C| dec 75h
006E| mov r2,75h
0070| cjne r2,#02h,loop
0073| mov 75h,#0h
0076| jmp loop

loop2:
0078| cjne r2,#04h,loop
007B| jmp loop1

transfer:
007D| cjne r0,#0h,satu
0080| mov r1,#bil0
0082| ret

satu:
0083| cjne r0,#1h,dua
0086| mov r1,#bil1
0088| ret

dua:
0089| cjne r0,#2h,tiga
008C| mov r1,#bil2
008E| ret

tiga:
008F| cjne r0,#3h,empat
0092| mov r1,#bil3
0094| ret

empat:
0095| cjne r0,#4h,lima
0098| mov r1,#bil4
009A| ret

lima:
009B| cjne r0,#5h,enam
009E| mov r1,#bil5
00A0| ret

enam:
00A1| cjne r0,#6h,tujuh
00A4| mov r1,#bil6
00A6| ret

tujuh:
00A7| cjne r0,#7h,delapan
00AA| mov r1,#bil7
00AC| ret

delapan:
00AD| cjne r0,#8h,sembilan
00B0| mov r1,#bil8
00B2| ret

sembilan:
00B3| cjne r0,#9h,transfer
00B6| mov r1,#bil9
00B8| ret
00B9| jmp utama

display:
00BB| mov sbuf,76h
00BE| jnb ti,$
00C1| clr ti
00C3| mov sbuf,77h
00C6| jnb ti,$
00C9| clr ti
00CB| mov sbuf,78h
00CE| jnb ti,$
00D1| clr ti
00D3| acall tunda
00D5| mov sbuf,79h
00D8| jnb ti,$
00DB| clr ti
00DD| mov sbuf,7ah
00E0| jnb ti,$
00E3| clr ti
00E5| mov sbuf,7bh
00E8| jnb ti,$
00EB| clr ti
00ED| acall tunda
00EF| ret

tunda:
00F0| mov r5,#255

tnd:
00F2| mov r6,#255

td:
00F4| mov r7,#16
00F6| djnz r7,$
00F8| djnz r6,td
00FA| djnz r5,tunda
00FC| ret
end

Keterangan:
Pada program sesungguhnya data yang dimasukkan satu-persatu, namun pemanggilan program tunda hanya dilakukan satu kali setelah mangirim 6 data pada display secara secara beruntun, maka tampilan pada Seven segment terlihat serentak.

Pada program, waktu pertama dimulai jam 00.00.00, maka dalam awal pengoperasiannya perlu menunggu waktu tengah malam supaya jam ini sesuai dengan waktu yang sebenarnya.

tugas

Tugas 8 Kelas: Buat Assembly untuk Delay

March 19th, 2011

Buat Assembly untuk Delay 12 detik

Available from: Tuesday, 15 March 2011, 09:30 AM
Due date: Tuesday, 15 March 2011, 10:30 AM
Last edited: Tuesday, 15 March 2011, 10:27 AM (88 words)

Assembly untuk Delay 12 detik

MOV R1,#2 ; 12 SIKLUS MESIN
DEL1 : MOV R2, #244 ; 12 SIKLUS MESIN
DEL2 : MOV R3, #255 ; 12 SIKLUS MESIN
DEL3 : DJNZ R3, DEL3 ; 24 SIKLUS MESIN X 255
DJNZ R2,DEL2 ; 24 SIKLUS MESIN X 244
DJNZ R1,DEL1 ; 24 SIKLUS MESIN X 2

Untuk perhitungan Waktunya kita menggunakan Persamaan:
Delay = [ siklus mesin MOV+ (siklus mesin DJNZ x jumlah Putaran) ] x perioda clock
= [ 12 + ( 12 + ( 12 + ( 24 x 255 ) ) x ( 24 x 244 ) ) x ( 2 x 2 ) ] x 1 mikrosekon
= 11969724 mikrosekon
= 12 detik

tugas

Tugas 7 : Buat Program assembly untuk pengurangan 10 digit desimal

March 19th, 2011

Buat Program assembly untuk pengurangan 10 digit desimal

Available from: Monday, 14 March 2011, 01:50 PM
Due date: Thursday, 17 March 2011, 03:50 AM
Last edited: Wednesday, 16 March 2011, 05:51 PM (172 words)

Program assembly untuk pengurangan 10 digit desimal

;A = 2504199298
;B = 1994052289
;desimal : 2504199298 – 1994052289
;heksa : 95430C82 – 76DAD2C1

0000| MOV A,#82H ; memindahkan nilai 82H ke A
0002| MOV B,#0C1H ; memindahkan nilai C1H ke B
0005| SUBB A,B ; mengurangkan nilai A dengan B
0007| MOV 25H, A ; hasil pengurangan diletakkan pada data memory 25H

0009| MOV A,#0CH ; memindahkan nilai 0CH ke A
000B| MOV B,#0D2H ; memindahkan nilai D2H ke B
000E| SUBB A,B ; mengurangkan nilai A dengan B
0010| MOV 24H, A ; hasil pengurangan diletakkan pada data memory 24H

0012| MOV A,#43H ; memindahkan nilai 43H ke A
0014| MOV B,#0DAH ; memindahkan nilai DAH ke B
0017| SUBB A,B ; mengurangkan nilai A dengan B
0019| MOV 23H, A ; hasil pengurangan diletakkan pada data memory 23H

001B| MOV A,#95H ; memindahkan nilai 95H ke A
001D| MOV B,#76H ; memindahkan nilai 76H ke B
0020| SUBB A,B ; mengurangkan nilai A dengan B
0022| MOV 22H,A ; hasil pengurangan diletakkan pada data memory 25H

;Hasil : 1E6839C1 (=510147009)

tugas

Tugas 7 kelas: Buat Program assembly untuk perkalian 4 digit

March 19th, 2011

Buat Program assembly untuk perkalian 4 digit heksa

Available from: Monday, 14 March 2011, 03:50 PM
Due date: Monday, 14 March 2011, 04:35 PM
Last edited: Monday, 14 March 2011, 04:33 PM (70 words)

Program Perkalian 4 Digit Heksa

001| MOV A,#70H ; mengisi A dengan 70 heksa low-byte

0002| MUL A,#3EH ; mengalikan A dengan 3E heksa low-byte

0004| MOV R4,A ; memindah A (low-byte) ke R4

0005| MOV A,#0B7H ; mengisi A dengan B7 heksa high-byte

0007| MUL A,#45H ; mengalikan A dengan 45 heksa high-byte

0009| MOV R3,A ; memindah A (high-byte) ke R3

tugas

Tugas 6 : Laporan Praktikum 1

March 19th, 2011

Buat Laporan Praktikum: EdSim51, Modul DT-51 Trainer Kit dan hasil pengamatan SerialReceive.asm

Available from: Tuesday, 8 March 2011, 09:45 AM
Due date: Saturday, 12 March 2011, 09:45 AM
Last edited: Saturday, 12 March 2011, 09:01 AM (2629 words)

Laporan Praktikum : Edsim51, Modul D-51 Trainer Kit dan Hasil Pengamatan SerialReceive.asm

ANALISA DATA

Edsim51

EdSim51 merupakan sebuah software berbasis java yang berfungsi sebagai simulator microcontroller dari keluarga AVR, yaitu khusus pada seri AT89C51. Simulator ini juga digunakan untuk memproses list program yang kita buat dengan menggunakan bahasa Assembly untuk Mikrokontroler.

Peripheral yang didukung:

  • Analogue-to-Digital Converter (ADC)
  • Comparator
  • UART
  • 4 Multiplexed 7-segment Displays
  • 4 X 3 Keypad
  • 8 LEDs
  • DC Motor
  • 8 Switches
  • Digital-to-Analogue Converter (DAC) – displayed on oscilloscope

Pengenalan Modul DT-51 Trainer Kit . .
DT51 Development Tools

DT51 merupakan development tools yang terdiri dari 2 bagian terintegrasi yaitu perangkat keras dan perangkat lunak. Komponenen utama perangkat keras DT51 adalah mikrokontroler 89C51 yang merupakan salah satu turunan keluarga MCS-51 Intel dan telah menjadi standar industri dunia.

Selain mikrokontroler, DT51 dilengkapi pula dengan EEPROM yang memungkinkan DT51 bekerja dalam mode stand alone (bekerja sendiri tanpa computer). Selain komponen-komponen tersebut masih banyak fungsi-fungsi lain : timer, counter, RS-232 serial port, Programmable Peripheral Interface (PPI) serta LCD port.

Perangkat lunak DT51 terdiri dari Downloader DT51L dan Debugger DT51D. Downloader berfungsi untuk mentransfer user program dari PC (Portable Computer) ke DT51, sedangkan debugger akan membantu user untuk melacak kesalahan program.

Bagian-bagian tersebut antara lain :

  • Mikrokontroler 89C51

Mikrokontroler 89C51 adalah komponen utama dari DT51, Instruksi dan pinout 89C51 kompatibel dengan standar industri MCS-51. 89C51 mempunyai spesifikasi standar sebagai berikut :

  • CPU 8 bit yang optimasi untuk aplikasi kontrol.
  • 4 Kbytes Flash Programmable and Erasable Read Only Memory (PEROM).
  • 128 bytes Internal RAM.
  • 2 buah 16 bit Timer/Counter.
  • Serial Port yang dapat deprogram.
  • 5 sumber interrupt dengan 2 level prioritas.
  • On-chip oscillator.
  • 32 jalur input output yang dapat diprogram.
  • 64K Program Memory.
  • 64K Data Memory.

4 Kbytes PEROM pada 89C51 digunakan untuk menyimpan kernel downloaderdebugger serta rutin-rutin lain. dan

  • Demux (Demultiplexer)

Pada 89C51 jalur data 8 bit di-multipleks dengan 8 bit jalur alamat bagian bawah (low order byte address), sehingga memakai pin yang sama. Sistem multipleks ini sering dijumpai pula pada arsitektur mikrokontroler lain dengan tujuan untuk menghemat jumlah pin sehingga bentuk fisik mikrokontroler menjadi lebih kecvil. Untuk itu diperlukan demultiplekser yang akan memisahkan jalur data dan jalur alamat bagian bawah. Jalur alamat bagian bawah bersama-sama dengan jalur alamat bagian atas (high order address byte) membentuk jalur alamat 16 bit (address bus), sehinggga mampu mengalamati memori sampai kapasitas 64 Kbytes.

  • Address Decoder

Sistem berbasis mikroprossesor atau mikrokontroler pada umumnya mempunyai lebih dari satu device/peripheral seperti memori, input output, Analog to Digital Converter (ADC), dan lain-lain. Masing-masing device ini perlu diberi alamat, sama seperti rumah kita yang mempunyai alamat unik untuk tiap-tiap rumah. Bayangkan apa yang terjadi kalau rumah-rumah itu tidak diberi alamat, pastikita akan kebingungan untuk menuju rumah tertentu. Demikian pula dengan mikrokontroler, supaya dapat mengakses suatu device maka mikrokontroler tersebut harus mengetahui alamat device yang tidak diakses. Address decoder akan memberikan alamat untuk tiap device. Pada DT51, address decoder memberikan alamat pada memori eksternal dan Programmable Peripheral Interface (PPI) serta menyiapkan beberapa alamat lagi untuk device-device lain bila ditambahkan.

  • Memori Eksternal

Selain PEROM dan internal RAM yang terdapat p[ada 89C51, DT51 juga mempunyai memori eksternal berjenis EEPROM (Electrically Erasable Programmable Read Only Memory) dengan kapasitas 8 Kbytes untuk menyimpan ‘user program’ yang didownload dari PC atau data. Sesuai dengan namanya maka EEPROM dapat ditulis dan dihapus secara elektrik, mirip seperti RAM namun bersifat volatile sehingga data yang tersimpan dalam EEPROM tidak hilang meskipun catu daya dimatikan.

  • Programmable Peripheral Interface (PPI)

PPI berfungsi sebagai I/O expander yang dapat deprogram. PPI yang digunakan mempunyai 24 bit jalur input output yang dapat dihubungkan dengan peralatan atau device lain. 24 bit I/O ini dibagi menjadi 3 port, yaitu Port A, Port B, Port C.

  • TTL ↔ RS 232 Converter

DT51 berkomunikasi dengan PC secara serial. Proses download dan debugging dilakukan melalui sebuah serial port. 89C51 mempunyai sebuah serial port dengan level standar RS 232, maka diperlukan converter level TTL ↔ RS 232.

  • LCD Port

LCD (Liquid Crystal Display), Port ini disiapkan untuk men-drive LCD melalui Port 1 mikrokontroler 89C51. Rutin untuk keperluan LCD sudah tersedia pada PEROM 89C51 sehingga user tinggal memakainya.

  • Data, Address dan Control Bus

DT51 mempunyai data bus dengan lebar 8 bit, serta address bus 16 bit. Sedangkan control bus yang digambarkan pada blok diagram DT51 terdiri dari beberapa sinyal control, antara lain : RD, WR,PSEN, ALE serta chip select yang dihasilkan oleh address decoder.

DT51 dapat bekerja dalam dua mode yaitu download dan stand alone. Pada mode download, user dapat men-download program dari PC ke DT51 dengan program download DT51L. Setelah proses download selesai, user program otomatis langsung bekerja. Sedangkan mode stand alone digunakan apabila program sudah sempurna (tidak terdapat kesalahan). Pada mode ini program yang terakhir di-download otomatis berjalan sendiri saat catu daya dihidupkan. Mikrokontroler 89C51 merupakan mikrokontroler CMOS 8 bit dengan 4 Kbytes Flash Programmable Memory.

Prosedur Pemasangan

  1. Masukkan CD program ke CD-ROM
  2. Bukalah DOS Prompt dan ubahlah drive ke dr ive CD-ROM
  3. Ubahlah direktori ke direktori program DT-51: DT51MS (untuk DT-51 MinSys ver 3.3) dan DT51F (untuk DT-51 PetraFuz)
  4. Jalankan program instalasi dengan mengetik: install [source drive:] [destination drive:], misalkan: “install d: c:”
  5. Ikuti petunjuk yang ditampilkan pada layar monitor
  6. Trafo 9V AC dihubungkan dengan konektor 9VAC pada board DT-51
  7. Hubungkan kabel serial, konektor DB9 Male ke board DT-51 dan DB9 Female ke komputer (COM1 / COM2)
  8. Jumper reset RES SLCT berada pada posisi download [1-2]
  9. Periksa sekali lagi apakah semua hubungan sudah betul, jika sudah hubungkan trafo dengan tegangan AC yang sesuai
  10. Lampu merah indikator akan menyala

Spesifikasi DT-51

Spesifikasi DT-51 sebagai berikut :

  • Berbasis mikrokontroler AT89S51 yang ber standar industri
  • Serial port interface standar RS-232 untuk komunikasi antara komputer dengan board DT-51
  • 8 Kbytes non-volatile memory (EEPROM) untuk menyimpan program dan data
  • 4 port input output (I/O) dengan kapas itas 8 bit tiap portnya
  • Port Liquid Crystal Display (LCD) untuk keperluan tampilan
  • Konektor ekspansi untuk menghubungkan DT-51 dengan add-on board yang kompatibel dari Innovative Electronics

Peta Memori DT-51

Peta Memori DT51 menunjukkan alamat masing-masing bagian komponen seperti yang tercantum pada gambar berikut :

  1. 8Kbpertama (0000-1FFFH) digunakan untuk internal 4K PEROM yang berisi kernel code, sedangkan 4K sisanya reserved.
  2. 8Kb kedua (2000H – 3FFF) digunakan untuk PPI 8255 dan hanya terpakai 4 alamat : 2000H – Port A ; 2001H – Port B ; 2002H – Port C ; 2003H – Control Word Register
  3. 8Kb ketiga (4000H -5FFFH) digunakan oleh EEPROM untuk menyimpan User Code. CS3-CS7 (6000H – FFFFH) disediakan untuk ekspansi.

Pemasangan DT-51

Berikut ini akan dibahas langkah- langkah pemasangan DT-51.

a. Perlengkapan DT-51

Setiap kemasan DT-51 terdiri dari :

  • 1 buah board DT-51
  • 1 buah kabel serial
  • 1 CD program
  • 1 buku manual

b. Sistem yang Dibutuhkan

Perangkat keras :

  • PC XT / AT / PentiumTM IBM Compatible, dengan port serial (COM1 /COM2)
  • CD-ROM
  • Hard Disk dengan kapasitas minimum 500 Kbytes
  • Trafo 9V AC 500mA

Perangkat lunak :

  • Sistem Operasi MS-DOSTM atau PC-DOSTM (vers i 6.2 ke atas)
  • File-file yang ada pada CD program

DT-51 Trainer Kit
DT-51 Trainer Kit adalah satu set modul yang dapat digunakan sebagai sarana penunjang dalam mempelajari pemrograman MCS-51. DT-51 Trainer Kit terdiri dari DT-51 Trainer Board serta Panduan Dasar dan Panduan Praktikum Dasar Mikrokontroler Keluarga MCS-51.

Dengan Panduan Dasar Mikrokontroler Keluarga MCS-51, kita dapat mempelajari arsitektur 89C51 dan instruksi-instruksi yang digunakan, disertai dengan panduan ringan tentang disain minimum system dan langkah-langkah pemrograman termasuk membahas tentang program Assembler ASM51.

Dengan Panduan Praktikum Dasar Mikrokontroler Keluarga MCS-51, Anda dapat mempraktekkan beberapa pemrograman dasar meliputi penggunaan Input/Output, Interrupt, Timer/Counter, Serial Communication, serta penggunaan rutin LCD pada DT-51 MinSys dan teknik Scanning Keypad & Scanning Display dengan 7 Segment.

Semua praktikum dan latihan dapat dikerjakan menggunakan DT-51 Trainer Board (kecuali praktikum LCD) yang kompatibel penuh dengan DT-51 Minimum System.

DT-51 Trainer Board dilengkapi dengan:

  • 8 LED Output
  • 8 Toggle Switch Input
  • 4 Tactile Switch Interrupt &am p; Counter
  • Pulse Generator: 1 Hz, 1 kHz, & 10 kHz
  • 4 Tactile Switch for Scanning Keypad
  • 2 Seven Segment for Scanning Display

Dimensi: 19,5 cm (P) x 12,4 cm (L) x 3,4 cm (T)

Beberapa port pada system minimum DT-51 ini akan dihububngkan dengan port pada trainer board. Khusus untuk menghubungkan port control pada system minimum dengan port control pada trainer board, digunakan kabel tipe X. penggunaan kabel tipe ini dikarenakan posisi pin VCC dan GND pada system minimum dengan trainer board terbalik.

Perlengkapan DT-51 Trainer Kit:

  • 1 bh Board DT-51 Trainer Board
  • 1 set Kabel Trainer
  • 1 lbr Layout DT-51 Trainer Board
  • 1 lbr Skema DT-51 Trainer Board
  • 1 bh Panduan Dasar Mikrokontroler Keluarga MCS-51
  • 1 bh Panduan Praktikum Dasar Mikrokontroler Keluarga MCS-51
  • 1 bh CD dan semuanya itu dikemas dalam kotak yang menarik

Perintah Yang digunakan

  • SIMP, LIMP
  • MOV, MOVX
  • SETB, CLR
  • JB, JNB
  • JC, JNC
  • CJNE

Opsional :

  • DT-51 Tutorial Pack (DT-51 MinSys ver. 3.3 & DT-51 Trainer Kit) (#991-006)

DT-51 Tutorial Pack mulai Serial Number: 51.08.043 telah mendapatkan perbaikan pada kernel pada DT-51 MinSys ver 3.0 untuk mengakomodasi penggunaan konverter USB ke Serial yang kompatibel untuk Modem Serial UART.

  • DT-51 Trainer Board (Tanpa Buku) (#991-008)


HASIL PENGAMATAN

Hasil Pengamatan Program SerialReceive

0000| CLR SM0 ; |Clear ( Instruksi ini akan mereset data akumulator menjadi 00H) / menghapus pada mode bit 0

0002| SETB SM1 ; |Set Bit (Instruksi untuk mengaktikan atau memberikan logika 1 pada sebuat bit data) pada serial port mode bit 1. atau menghapus SM0 dan menempatkan SM1 untuk diletakkan di serial port mode bit 1

0004| MOV A, PCON ; |Move from Memory (Instruksi ini untuk memindahkan isi akumulator/register atau data dari nilai luar atau alamat lain) / menyalin PCON (Power Control) pada A

0006| SETB ACC.7 ; |Set Bit (Instruksi untuk mengaktikan atau memberikan logika 1 pada sebuat bit data) dengan membuat bit ke-7 pada akumulator menjadi set

0008| MOV PCON, A ; |Move from Memory (Instruksi ini untuk memindahkan isi akumulator/register atau data dari nilai luar atau alamat lain) pada PCON (Power Control) , mengeset SMOD yang merupakan bit yang ada pada register PCON yang mana bila nilainya di set (1) maka kecepatan data (baud rate) akan dikalikan 2.

000A| MOV TMOD, #20H ; |Move from Memory (Instruksi ini untuk memindahkan isi akumulator/register atau data dari nilai luar atau alamat lain) / menyimpan isi Kontrol Mode Timer/.Counter dengan 20H.

000D| MOV TH1, #243 ; |Move from Memory (Instruksi ini untuk memindahkan isi akumulator/register atau data dari nilai luar atau alamat lain) / menyimpan isi TH1 (Timer/Counter 1 high byte) dengan 243.

0010| MOV TL1, #243 ; |Move from Memory (Instruksi ini untuk memindahkan isi akumulator/register atau data dari nilai luar atau alamat lain) / menyimpan isi TL1 (Timer/Counter 1 Low byte) dengan 243.

0013| SETB TR1 ; Set Bit (Instruksi untuk mengaktikan atau memberikan logika 1 pada sebuat bit data) dengan menjalankan timer 1

0015| MOV 30H, #’a’ ; | Move from Memory (Instruksi ini untuk memindahkan isi akumulator/register atau data dari nilai luar atau alamat lain) / menyimpan 61H, bentuk ASCII bagi char a pada RAM lokasi 30H

0018| MOV 31H, #’b’ ; | Move from Memory (Instruksi ini untuk memindahkan isi akumulator/register atau data dari nilai luar atau alamat lain) / menyimpan 62H, bentuk ASCII bagi char b pada RAM lokasi 31H

001B| MOV 32H, #’c’ ; | Move from Memory (Instruksi ini untuk memindahkan isi akumulator/register atau data dari nilai luar atau alamat lain) / menyimpan 63H, bentuk ASCII bagi char c pada RAM lokasi 32H

001E| MOV 33H, #0 ; |Move from Memory (Instruksi ini untuk memindahkan isi akumulator/register atau data dari nilai luar atau alamat lain) / data null ditransmisikan, jadi ketika akumulator bernilai 0 tidak ada data yang dikirimkan

0021| MOV R0, #30H ; |Move from Memory (Instruksi ini untuk memindahkan isi akumulator/register atau data dari nilai luar atau alamat lain) / memindahkan alamat data pertama 30H ke alamat R0

again: ; |melakukan pengulangan

0023| MOV A, @R0 ; |Move from Memory (Instruksi ini untuk memindahkan isi akumulator/register atau data dari nilai luar atau alamat lain) / memindahkan data dari yang ditunjuk oleh R0 ke akumulator A

0024| JZ finish ; |Jump if Accumulator Zero (Instruksi ini akan memeriksa isi A. Jika dia 00, maka program akan melompat ke alamat yang ditunjuk)/ jika akumulator berisi 0, tidak ada data yang akan dikirimkan, maka program akan berhenti mengulang

0026| MOV C, P ; |Move from Memory (Instruksi ini untuk memindahkan isi akumulator/register atau data dari nilai luar atau alamat lain) / selain itu, memindahkan bit yang sama ke carry

0028| MOV ACC.7, C ; |Move from Memory (Instruksi ini untuk memindahkan isi akumulator/register atau data dari nilai luar atau alamat lain) / memindahkan data yang ada di carry ke akumulator ke-7 yaitu akumulator MSB

002A| MOV SBUF, A ; |Move from Memory (Instruksi ini untuk memindahkan isi akumulator/register atau data dari nilai luar atau alamat lain) / mentransmisikan data yang dikirim ke serial port

002C| INC R0 ; Increment (Instruksi ini akan menambahkan isi memori dengan 1 dan menyimpannya pada alamat tersebut) menambah R0 dengan satu untuk menunjuk pada byte yang selanjutnya dari data yang dikirimkan

002D| JNB TI, $ ; |Jump if Not Bit Set (Instruksi ini akan membaca data per satu bit, jika data tersebut adalah 0 maka akan menuju ke alamat kode dan jika 1 tidak akan menuju ke alamat kode) / menunggu TI dikirim, mengindikasikan bahwa serial port sudah menyelesaikan pengiriman

0030| CLR TI ; |Clear (Instruksi ini akan mereset data akumulator menjadi 00H) / menghapus TI

0032| JMP again ; |Jump to Address (Instruksi untuk memerintahkan loncat kesuatu alamat kode tertentu) / memerintahkan loncat untuk mengirim byte selanjutnya

finish: ; |memberhentikan program

0034| JMP $ ; ; |Jump to Address (Instruksi untuk memerintahkan loncat kesuatu alamat kode tertentu) / tidak melakukan apapun

Hasil Pengamatan pada perubahan yang terjadi :

0000| CLR SM0 ; | tidak ada perubahan

0002| SETB SM1 ; | PC menjadi 0×0002

0004| MOV A, PCON ; | PC menjadi 0×0004, SCON menjadi 0×40

0006| SETB ACC.7 ; | PC menjadi 0×0006

0008| MOV PCON, A ; | PC menjadi 0×0008, ACC menjadi 0×80, PSW menjadi 0×01

000A| MOV TMOD, #20H ; | PC menjadi 0x000A

000D| MOV TH1, #243 ; | PC menjadi 0x000D, PCON menjadi 0×80, TMOD menjadi 0×20

0010| MOV TL1, #243 ; | PC menjadi 0×0010, TH1 menjadi 0xF3

0013| SETB TR1 ; | PC menjadi 0×0013, TL1 menjadi 0xF3

0015| MOV 30H, #’a’ ; | PC menjadi 0×0015, TCON menjadi 0×40

0018| MOV 31H, #’b’ ; | PC menjadi 0×0018, TL1 menjadi 0xF5

001B| MOV 32H, #’c’ ; | PC menjadi 0x001B, TL1 menjadi 0xF7

001E| MOV 33H, #0 ; | PC menjadi 0x001E, TL1 menjadi 0xF9

0021| MOV R0, #30H ; |PC menjadi 0×0021, TL1 menjadi 0xFB

again:

0023| MOV A, @R0 ; | PC menjadi 0×0023, TL1 menjadi 0xFC

0024| JZ finish ; | PC menjadi 0×0024, TL1 menjadi 0xFD, ACC menjadi 0×61

0026| MOV C, P ; | PC menjadi 0×0026, TL1 menjadi 0xFF

0028| MOV ACC.7, C ; | PC menjadi 0×0028, TCONmenjadi 0xC0, TL1 menjadi 0xF3

002A| MOV SBUF, A ; | PC menjadi 0x002A, TL1 menjadi 0xF5, ACC menjadi 0xE1

002C| INC R0 ; | PC menjadi 0x002C, TL1 menjadi 0xF6, ACC menjadi 0xE1, W/O menjadi 0xE1

002D| JNB TI, $ ; | PC menjadi 0x002D, TL 1 menjadi 0xF7

0030| CLR TI ; | TL1 menjadi 0xF9

0032| JMP again ; |TL1 menjadi 0xFB

finish: ; |TL1 menjadi 0xFD

0034| JMP $ ; |TL1 menjadi 0xFF

KESIMPULAN

Semakin PC (step) keatas atau naik maka R1 kecil, namun sebaliknya jika PC (step) turun maka R1 menjadi besar. Pada PC seterusnya, CLR RI 001c sampai terakhir (0027) mengalamai perubahan yang sama seperti sebelumnya lalu allau pc akan kembali ke 0019

tugas

Praktikum 1 (pert.6): Amati Program SerialReceive.asm

March 19th, 2011

Jelaskan Pengamatan pada EDSIM51 untuk Program SerialReceive.asm

Available from: Tuesday, 8 March 2011, 09:35 AM
Due date: Tuesday, 8 March 2011, 12:25 PM
Last edited: Tuesday, 8 March 2011, 12:21 PM (286 words)

Pengamatan Program SerialReceive.asm

CLR SM0 ; |
SETB SM1 ; | put serial port in 8-bit UART mode

SETB REN ; enable serial port receiver

MOV A, PCON ; |
SETB ACC.7 ; |
MOV PCON, A ; | set SMOD in PCON to double baud rate

MOV TMOD, #20H ; put timer 1 in 8-bit auto-reload interval timing mode
MOV TH1, #0FDH ; put -3 in timer 1 high byte (timer will overflow every 3 us)
MOV TL1, #0FDH ; put same value in low byte so when timer is first started it will overflow after approx. 3 us
SETB TR1 ; start timer 1
MOV R1, #30H ; put data start address in R1
again:
JNB RI, $ ; wait for byte to be received
CLR RI ; clear the RI flag
MOV A, SBUF ; move received byte to A
CJNE A, #0DH, skip ; compare it with 0DH – it it’s not, skip next instruction
JMP finish ; if it is the terminating character, jump to the end of the program
skip:
MOV @R1, A ; move from A to location pointed to by R1
INC R1 ; increment R1 to point at next location where data will be stored
JMP again ; jump back to waiting for next byte
finish:
JMP $ ; do nothing

Keterangan:

Pada PC 0001 (CLR SM0) sampai PC 0019 (JNB RI, $) mengalami perubahan yang sama, yaitu

TXD : 0x00 menjadi 0x50

TMOD : 0x00 menjadi 0x20

TCON : 0x00 menjadi 0xC0

TH1 : 0x00 menjadi 0xFD

TL1 : 0x00 menjadi 0xFF, 0xFE, 0xFD berulang terus

R1 : 0x00 menjadi 0x30

ACC : 0x00 menjadi 0x80

PSW : 0X00 menjadi 0x01

SP : 0x00 menjadi 0x07

ACC : 0000 0000 menjadi 1000 0000

Semakin PC (step naik), R1 semakin kecil, dan sebaliknya

pada PC seterusnya CLR R1 001c sampai akhir (0027) mengalami perubahan yang sama seperti sebelumnya lalu PC akan kembali pada 0019

tugas

Tugas 5 : Cari daftar instruksi 8051

March 19th, 2011

Cari daftar instruksi 8051 dan fungsinya setiap instruksi

Available from: Monday, 7 March 2011, 03:30 PM
Due date: Thursday, 10 March 2011, 12:30 AM
Last edited: Wednesday, 9 March 2011, 08:43 PM (1107 words)

Daftar Instruksi

Jenis instruksi Instruksi Singkatan Keterangan Singkatan
Instruksi Aritmatika ADD Add tambahkan data dalam register tertentu ke isi akumulator
ADDC Add with Carry tambahkan data dalam register tertentu ke isi akumulator dengan carry
SUBB Subtract With Borrow mengurangkan data dalam register yang dimaksud dari isi akumulator dengan borrow
INC Increment menambahkan isi memori dengan 1 dan menyimpannya pada alamat tersebut
DEC Decrement mengurangkan isi memori dengan 1 dan menyimpannya pada alamat tersebut
MUL Multiply melakukan operasi perkalian
DIV Divide melakukan operasi pembagian
DA Decimal Adjust mengkoreksi masalah yang timbul yang berkaitan dengan penjumlahan bilangan BCD
Instruksi Logika ANL AND Logic melakukan AND logika pada dua operand dan meletakkan hasilnya pada destination
ANI AND Immediate AND-kan isi akumulator dengan byte yang segera mengikuti kode operasi
ORL OR Logic OR-kan isi akumulator dengan register tertentu, dilakukan setiap bit
ORI OR Immediate OR-kan isi akumulator dengan byte yang segera mengikuti kode operasi.
XRL Exclusive OR Logic membalik nilai (complement) beberapa bit tertentu dari sebuah bilangan biner 8 bit
XRI XOR Immediate XOR-kan isi akumulator dengan byte yang segera mengikuti kode operasi
CLR Clear me-reset data akumulator menjadi 00H
CPL Complement meng-komplemen isi akumulator dan menghasilkan one’s complement
RR Rotate Right Pada putar kanan , 8-bit dalam akumulator digeser ke kanan sejauh satu bit. Bit D0 keluar dari Least Significant Bit (LSB) dan ditempatkan pada D7 atau Most Significant Bit (MSB)
RLC Rotate Left through Carry Instruksi RRC adalah menggeser 8-bit dalam akumulator ke kanan sejauh 1 bit melewati Carry. Bit D0 keluar dari Least Significant Bit (LSB) dan ditempatkan pada Carry. Sementara isi Carry ditempatkan pada D7 atau Most Significant Bit (MSB)
RRC Rotate Right through Carry Instruksi RRC adalah menggeser 8-bit dalam akumulator ke kanan sejauh 1 bit melewati Carry. Bit D0 keluar dari Least Significant Bit (LSB) dan ditempatkan pada Carry. Sementara isi Carry ditempatkan pada D7 atau Most Significant Bit (MSB)
SWAP Swap Nibbles men-swap (menukar balik) nible bawah dan nible atas
RL Rotate Left Pada putar kiri , 8-bit dalam akumulator digeser ke kiri sejauh satu bit. Bit D7 keluar dari Most Significant Bit (MSB) dan ditempatkan pada D0 atau Least Significant Bit (LSB)
Instruksi Penyalinan Data MOV Move from Memory memindahkan isi akumulator/register atau data dari nilai luar atau alamat lain
MOVC Move from Code Memory memberitahukan kepada komputer untuk memindahkan data dari kode memori
MOVX Move from Extended Memory memberitahukan kepada komputer untuk memindahkan data dari memori eksternal
POP Pop Value From Stack memanggil subrutin dengan instruksi CALL, memory stack akan menyimpan alamat di mana CPU akan kembali setelah menjalankan subrutin
PUSH Push Value Onto Stack memanggil subrutin dengan instruksi CALL, memory stack akan menyimpan alamat di mana CPU akan kembali setelah menjalankan subrutin
XCH Exchange Bytes merubah bit
Instruksi Bit dan Bit-test SETB Set Bit mengaktikan atau memberikan logika 1 pada sebuat bit data
Instruksi Percabangan ACALL Absolute Call memanggil instruksi
LCALL Long Call Ini adalah instruksi 3-byte. Byte pertama adalah opcode, sedang 2-byte lainnya adalah alamat 16-bit yang dituju. Saat instruksi LCALL ini dijalankan, CPU tidak lagi mengeksekusi instruksi-instruksi di bawah LCALL, namun segera melompat pada alamat yang dituju
RET Return From Subroutine Intruksi untuk kembali dari suatu subrutin program ke alamat terakhir subrutin tersebut di panggil
RETI Return From Interrupt men-Clear-kan bit yang bersangkutan
LJMP Long Jump LJMP= lompat jarak jauh tanpa syarat kondisi. Disebut juga sebagai Jump 16-bit. Ini adalah instruksi 3-byte, di mana byte pertama adalah opcode, sedang dua byte yang lain adalah representasi dari alamat 16-bit yang dituju. Dengan 2 byte ini iasol program dapat dipindahkan ke semua alamat memory program yang ias dijangkau 8051 yakni alamat 16-bit, mulai dari alamat 0000 s/d FFFFh
JB Jump if Bit Set Instruksi ini akan membaca data per satu bit, jika data tersebut adalah 1 maka akan menuju ke alamat kode dan jika 0 tidak akan menuju ke alamat kode
JBC Jump if Bit Set and Clear Bit instruksi JBC sama dengan instruksi JB, hanya saja jika ternyata bit yang diperiksa memang bernilai 1, selain akan JUMP ke instruksi lain juga akan menolkan bit yang baru saja diperiksa)
JC Jump if Carry Set membaca data carry
JMP Jump to Address memerintahkan loncat ke suatu alamat kode tertentu
JNB Jump if Not Bit Set membaca data per satu bit, jika data tersebut adalah 0 maka akan menuju ke alamat kode dan jika 1 tidak akan menuju ke alamat kode
JNC Jump if Carry Not Set Instruksi ini, menggunakan bendera Carry sebagai menentu keputusan dalam jump. Saat mengeksekusi “JNC LABEL”, CPU akan memeriksa status bendera Carry(CY). Jika CY=1, maka program akan melompat ke alamat yang ditunjuk. Namun jika CY=0, maka program akan mengeksekusi instruksi selanjutnya dibawah JNC tersebut
JNZ Jump if Accumulator Not Zero Instruksi ini tidak akan memeriksa isi A. Jika dia 00, maka program akan melompat ke alamat yang ditunjuk
JZ Jump if Accumulator Zero Instruksi ini akan memeriksa isi A. Jika dia 00, maka program akan melompat ke alamat yang ditunjuk
SJMP Short Jump SJMP = lompat tanpa syarat jarak pendek. Disebut juga sebagai Jump relatif 8-bit. Ini adalah instruksi 2 byte. Byte pertama adalah opcode, sedang byte lainnya adalah alamat relatif yang dituju
DJNZ Decrement and Jump if Not Zero Instruksi ini akan mengurangi nilai register dengan 1 dan jika hasilnya sudah 0 maka instruksi selanjutnya akan dieksekusi. Jika belum 0 akan menuju ke alamat kode
CJNE Compare and Jump if Not Equal membandingkan data langsung dengan lokasi memori yang dialamati oleh register R atau Akumulator A
AJMP Absolute Jump melompati instuksi (menjangkau satu daerah memori-program MCS51 sejauh 2 KiloByte)
XCHD Exchange Digits merubah digit
NOP No Operation menyisipkan instruksi untuk tidak mengerjakan sesuatu (menunda (loop) waktu sebanyak T kali)
IN Input memindahkan data dari bandar (port) tertentu ke akumulator.
OUT Output isi akumulator akan diisikan ke bandar keluaran yang ditunjuk OUT byte

Daftar Assembly Directive

Assembly Directive Keterangan
EQU Pendefinisian konstanta
DB Pendefinisian data dengan ukuran satuan 1 byte
DW Pendefinisian data dengan ukuran satuan 1 word
DBIT Pendefinisian data dengan ukuran satuan 1 bit
DS Pemesanan tempat penyimpanan data di RAM
ORG Inisialisasi alamat mulai program
END Penanda akhir program
CSEG Penanda penempatan di code segment
XSEG Penanda penempatan di external data segment
DSEG Penanda penempatan di internal direct data segment
ISEG Penanda penempatan di internal indirect data segment
BSEG Penanda penempatan di bit data segment
CODE Penanda mulai pendefinisian program
XDATA Pendefinisian external data
DATA Pendefinisian internal direct data
IDATA Pendefinisian internal indirect data
BIT Pendefinisian data bit
#INCLUDE Mengikutsertakan file program lain

tugas

Tugas 5 kelas: Buat program assembly

March 19th, 2011

Buat contoh program dalam assembly 8085 dan berikan comment apa arti instruksi di setiap baris pada program tersebut

Available from: Monday, 7 March 2011, 03:15 PM
Due date: Monday, 7 March 2011, 05:15 PM
Last edited: Monday, 7 March 2011, 04:38 PM (51 words)

Penambahan dua 8 bit nomor yang tersimpan dalam memori

LDA 8500 ; isi register dengan alamat yaitu memori 8500

MOV B, A ; Pindahkan nilai register A ke register B

LDA 8501 ; isi register dengan alamat yaitu memori 8501

ADD B ; Tambahkan memori ke Register B

STA 8502 ; Simpan output di alamat memori 8502

HLT ; Hentikan eksekusi program

tugas