PEMROGRAMAN 8085 Kelompok Instruksi Email : salahuddin_ali@ymail.com salahuddin.ali00@gmail.comali00@gmail Web Site : www.salahuddinali.com
Kelompok Instruksi Transfer Data MOV MVI transfer data transfer data secara immediate LDA bebani akumulator dengan data memori secara langsung STA simpan akumulator ke dalam memori secara langsung LHLD SHLD LXI LDAX pasangan STAX pasangan bebani H dan L dengan data memori secara langsung simpan H dan L ke dalam memori secara langsung bebani b pasangan register dengan data secara immediate bebani akumulator dengan data beralamat register simpan akumulator ke alamat yang ditunjuk register XCHG exchange H dan L dengan D dan E XTHL exchange top of stack dengan H dan L
Kelompok Instruksi Pemrosesan Data Instruksi pemrosesan data merupakan instruksi aritmatika dan logika. Seluruh operasi dari instruksi ini akan mempengaruhi isi Reg. A (akumulator) dan Reg. Bendera (Flag).
Instruksi Pemrosesan Data PENJUMLAHAN Penjumlahan 8-bit Penjumlahan dengan carry Penjumlahan 16-bit Penambahan satu (Increment)
Penjumlahan 8-bit Penjumlahan 8-bit merupakan instruksi penjumlahan data Reg. A dengan data Reg. lainnya atau dengan data suatu konstanta Assembly ADI d8 ADD r Kode Mesin C6-d8 Op-code Fungsi Acc=Acc+d8 Acc=Acc + (Reg)
Contoh Penjumlahan 8-bit Cy Hasil Operasi penjumlahan ADD C mengakibatkan Reg. A = 08H, Reg.C tetap 83H Reg Flag bit S=0, Z=0, AC=0, P=0, Cy=1
Penjumlahan dengan carry Penjumlahan data 8-bit dengan carry adalah penjumlahan Akkumulator dengan data register dan ditambahkan dengan carry sebelum operasi dilaksanakan k Assembly ACI d8 ADC r Kode Mesin CE-d8 Op-code Fungsi Acc=Acc + d8 + Cy Acc=Acc + (Reg) + Cy
Contoh Penjumlahan dengan carry MVI A, 85H MVI C, 83H ADI 83H ADC C RST 1 ; Acc = 85H ; Reg.C = 83H ; Acc = Acc + 83H = 85H+83H= 08H Cy=1 ; Acc = Acc + C + Cy = 08H + 83H + 1= 8CH Hasil Operasi penjumlahan ADI 83H mengakibatkan Reg. A = 08H Reg Flag bit S=0, Z=0, AC=0, P=0, Cy=1 Cy
Penjumlahan 16-bit Instruksi penjumlahan 16-bit adalah penjumlahan isi i pasangan register HL dengan pasangan register lain Pemrosesan isi pasangan register tersebut adalah melalui Akkumulator Assembly DAD rp Kode Mesin Op-code Fungsi HL = HL + rp
Contoh Penjumlahan 16-bit LXI H,8456H LXI B,8743H DAD B RST 1 Hasil Operasi penjumlahan DAD B mengakibatkan Reg. HL= HL+BC = 8456H + 8743H = 0B99H Reg Flag bit S=0, Z=0, AC=0, P=0, Cy=1
Instruksi Penambahan satu (Increment) Instruksi penambahan satu ada dua macam penambahan isi register 8 bit dengan satu penambahan isi pasangan register dengan satu Tetapi penambahan satu untuk pasangan register tidak mempengaruhi data Reg. Flag Assembly Kode Mesin Fungsi INR r Op-code Reg. r = Reg. r + 1 INX rp Op-code Reg. rp = Reg. rp + 1
Instruksi Pemrosesan Data PENGURANGAN Pengurangan 8-bit Pengurangan 8-bit dengan borrow Pengurangan satu (Decrement)
Pengurangan 8-bit Assembly SUI d8 SUB r Kode Mesin Op-code Op-code Fungsi Acc = Acc - d8 Acc = ACC Reg. r Contoh: MVI A,84H MVI B,27H SUB B RST 1 1101 Hasil Operasi pengurangan SUB B mengakibatkan Reg. A = 5DH B=27H Reg Flag bit S=0, Z=0, AC=1, P=0, Cy=0
Pengurangan 8-bit dengan borrow Assembly SBI d8 SBB r Kode Mesin Op-code Op-code Fungsi Acc = Acc - d8 - Cy Acc = ACC Reg. r - Cy Contoh: MVI A,57H SUI 58H MVI B,27H SBB B RST 1 Hasil Operasi penjumlahan SUI 58H mengakibatkan Reg. A = FFH B=27H Reg Flag bit S=1, Z=0, AC=1, P=1, Cy=1
Pengurangan satu (Decrement) Assembly DCR r DCX rp Kode Mesin Op-code Op-code Fungsi Reg r = Reg r -1 Reg rp = Reg rp 1
Instruksi Pendesimalan (DAA) Instruksi ini berfungsi untuk menambahkan 06, 60, 66 terhadap isi akkumulator jika hasil penjumlahan lebih besar dari 9. Penambahan 06, 60 atau 66 pada akkumulator berdasarkan isi dari Register Bendera. Contoh : MVI A,84H MVI B,27H ADD B DAA RST 1 Hasil Operasi penjumlahan DAA mengakibatkan Reg. A =11 B=27H Reg Flag bit S=0, Z=0, AC=1, P=1, Cy=1
Instruksi Banding (Compare) Instruksi Banding merupakan instruksi pengurangan isi Akumulator dengan suatu data 8-bit atau isi suatu register, tetapi isi dari akumulator tetap yang berubah hanya register bendera. Instruksi Compare dapat digunakan untuk membandingkan kesamaan, lebih besar atau lebih kecil antara dua bilangan dan indikasinya dapat dilihat pada Reg. flag bit zero dan bit carry Assembly CPI d8 Kode Mesin FE-d8 Fungsi Flag = Acc d8 CMP r Op-code Flag = Acc Reg r Contoh 1: Contoh 2: pengurangan dua bilangan MVI A,87H MVI A,78 yang sama akan mengakibatkan MVI B,27H CPI 78 bit Z pada flag akan berlogika 1 CMP B RST 1 RST1
OPERASI LOGIKA Instruksi-instruksi logika ini melaksanakan operasi logika antara Akkumulator dengan suatu data 8-bit atau dengan isi suatu register Instruksi logika AND Instruksi Logika OR Instruksi Logika X-OR
Instruksi logika AND Assembly ANI d8 ANA r Kode Mesin E6-d8 Op-code Fungsi Acc = Acc ^ d8 Acc=Acc ^ Reg. r
Instruksi logika OR Assembly ORI d8 ORA r Kode Mesin F6-d8 Op-code Fungsi Acc = Acc d8 Acc=Acc Reg. r
Instruksi logika X-OR Assembly XRI d8 XRA r Kode Mesin EE-d8 Op-code Fungsi Acc = Acc d8 Acc=Acc Reg. r Contoh: MVI A,84H MVI B,27H XRA B RST 1
Instruksi komplemen Instruksi Complement ini ada dua instruksi yaitu CMC dan CMA CMC berfungsi untuk mengkomplemenkan isi bit carry dari register bendera CMA berfungsi untuk mengkomplemenkan k isi dari register A.
Instruksi Geser (Shift) dan Putar (rotate). Instruksi ini berfungsi untuk menggeser isi dari Register A ke arah kanan atau kiri Instruksi yang ada adalah RAR RAL RRC RLC
Instruksi RLC dan RRC Geser bit ke kiri dan ke kanan tanpa mengikutkan carry RLC CY D7 D6 D5 akumulator D4 D3 D2 D1 D0 RRC CY D7 D6 akumulator D5 D4 D3 D2 D1 D0
Contoh RLC dan RRC CONTOH 1: CONTOH 2: STC CMC MVI A,82H RLC RST 1 ;set carry Cy=1 STC ;set carry Cy=1 ;komplemen Cy ;A=82H Cy=0 MVI A,82H RRC ;A=05H Cy=1 RST 1 ;A=82H Cy=1 ;A=41H Cy=0
Instruksi RAL dan RAR Geser bit ke kiri dan ke kanan dengan mengikutkan carry RAL CY D7 D6 D5 akumulator D4 D3 D2 D1 D0 RAR CY D7 D6 akumulator D5 D4 D3 D2 D1 D0
Contoh RAL dan RAR CONTOH 1: CONTOH 2: STC CMC MVI A,82H ;set carry Cy=1 STC ;set carry Cy=1 ;komplemen Cy ;A=82H Cy=0 MVI A,82H RAL ; RST 1 RST 1 RAR ; ;A=82H Cy=1
INSTRUKSI KENDALI Instruksi Lompat (JUMP) Instruksi ini terbagi atas dua jenis, yaitu lompat mutlak (unconditional jump) lompat bersyarat (conditional jump).
Instruksi Cabang dan Kembali (CALL, RET) Instruksi CALL membuat prosesor mengeksekusi suatu program subrutin yang alamat awalnya setelah kode operasi dari instruksi CALL tersebut Prosesor akan kembali mengeksekusi program utama jika dijumpai instruksi kembali RET (return) Instruksi ini i terdiri i dari dua jenis yaitu instruksi i bersyarat dan tidak bersyarat. Syarat dari instruksi ini dilihat dari kondisi isi register Bendera. Setelah instruksi ini dieksekusi, isi register bendera tidak berubah.
Instruksi Cabang dan Kembali (CALL, RET) Dua hal akan terjadi bila prosesor 8085 mengeksekusi suatu instruksi CALL Isi program counter (PC) ditumpuk ke dalam STACK Program akan lompat ke alamat memori yang ditulis pada instruksi CALL I t k i CALL k k bi i d i Instruksi CALL merupakan kombinasi dari instruksi PUSH dan JP
Instruksi Cabang dan Kembali (CALL, RET) Instruksi RET digunakan untuk kembali ke program utama pada alamat yang mengikuti CALL Hal ini terjadi karena alamat yang mengikuti CALL ini disimpan pada STACK Instruksi RET mengembalikan suatu angka dari stack dan menempatkan kembali pada program counter (PC)
Instruksi Cabang dan Kembali (CALL, RET) Contoh: START: END: KOMP: LXI SP,2100H ; SP=2100H MVI A,1 ; A=1 CALL KOMP ; memanggil routine komp CALL KOMP ; memanggil routine komp JMP END ; tunggu CMA ;inverta INR A ; bentuk komplemen 2 RET
Instruksi Cabang dan Kembali (CALL, RET) Diagram alir program dengan sebuah subroutine Contoh: START: END: LXI SP,2100H MVI A,1 MOV B,A CALL KOMP CALL KOMP DCR B JMP END KOMP: CMA INR A RET CALL pertama CALL ke dua
Instruksi HLT Instruksi HLT digunakan untuk menghentikan eksekusi program Eksekusi prosesor setelah instruksi HLT hanya dapat dilanjutkan dengan mereset prosesor atau terjadi interupsi