Anda di halaman 1dari 22

BAHAN AJAR 

PEMROGRAMAN MIKROPROSESOR 
DIKLAT MIKROPROSESOR Z80 

 
 

   
 

PUSAT PENGEMBANGAN PEMBERDAYAAN PENDIDIK DAN TENAGA PENDIDIK  

BIDANG MESIN DAN TEKNIK INDUSTRI 

2016


 
DAFTAR ISI 

 
DAFTAR ISI ..................................................................................................................................................... 1 
LEMBAR KERJA PEMROGRAMAN MIKROPROSESOR Z80 ............................................................................. 4 
Menggunakan Software Z80 SIMULATOR IDE .............................................................................................. 4 
1.  Mengisi Memori ................................................................................................................................ 4 
Deskripsi: ............................................................................................................................................... 4 
Program : ............................................................................................................................................... 4 
Langkah‐langkah Percobaan: ................................................................................................................ 4 
2.  Mengisi Memori dari Port Input ....................................................................................................... 6 
Deskripsi : .............................................................................................................................................. 6 
Program : ............................................................................................................................................... 6 
Langkah‐langkah Percobaan: ................................................................................................................ 6 
3.  Sistem Interupsi Mode 1 ................................................................................................................... 8 
DESKRIPSI: ............................................................................................................................................. 8 
PROGRAM: ............................................................................................................................................ 8 
Langkah‐langkah Percobaan: ................................................................................................................ 8 
4.Program Penjumlahan ......................................................................................................................... 10 
Deskripsi Program ............................................................................................................................... 10 
Program : ............................................................................................................................................. 10 
Lembar Pengamatan : ......................................................................................................................... 10 
Hasil Dari Operasi Program tersebut : ................................................................................................ 10 
5.Program Perkalian menghitung luas persegi panjang ......................................................................... 10 
Deskripsi .............................................................................................................................................. 10 
Hasil Dari Operasi Program tersebut dapat diamati pada memori editor atau watch variabel : ....... 12 
6.Program Pembagian ............................................................................................................................. 12 
Deskripsi Program ............................................................................................................................... 12 
Hasil Program : .................................................................................................................................... 15 
7.Program Percabangan dan Looping ..................................................................................................... 15 
Deskripsi : ............................................................................................................................................ 15 


 
Hasil Pengamatan ............................................................................................................................... 16 
8.Program Pembangkit Bilangan Acak .................................................................................................... 16 
Deskripsi : ............................................................................................................................................ 16 
PROGRAM ........................................................................................................................................... 16 
Hasil Program ...................................................................................................................................... 17 
9.Program Delay 1 detik menggunakan Loop ......................................................................................... 17 
Deskripsi .............................................................................................................................................. 17 
Program ............................................................................................................................................... 17 
Hasil Pengamatan ............................................................................................................................... 17 
10.Program Flasing Led Pada Port 1 ....................................................................................................... 17 
Deskripsi: ............................................................................................................................................. 17 
PROGRAM ........................................................................................................................................... 18 
HASIL ................................................................................................................................................... 18 
11.Program Running LED dengan Instruksi RLC ...................................................................................... 19 
Deskripsi : ............................................................................................................................................ 19 
Program ............................................................................................................................................... 19 
HASIL ................................................................................................................................................... 19 
12.Program Pengubah BCD ke Biner ....................................................................................................... 20 
Deskripsi : ............................................................................................................................................ 20 
Program ............................................................................................................................................... 20 
Hasil ..................................................................................................................................................... 21 
13.Program Pengubah Biner ke BCD ....................................................................................................... 21 
Deskripsi .............................................................................................................................................. 21 
Program ............................................................................................................................................... 21 
Hasil ..................................................................................................................................................... 22 
LATIHAN .................................................................................................................................................. 22 
 

 
 


 
LEMBAR KERJA PEMROGRAMAN MIKROPROSESOR Z80 
Menggunakan Software Z80 SIMULATOR IDE 

1. Mengisi Memori  
Deskripsi: 
Program mengisi memori bertujuan untuk mendemonstrasikan Instruksi yang berfungsi untuk mengisi 
memori pada RAM. Pada program dibawah ini akan mengisi memori mulai dari alamat 0F01 dengan nilai 
dari accumulator. 

Program : 
  LD A,09H  ; mengisi nilai awal pada register A dengan nilai 9 

  LD BC,0F01H  ; mengisi nilai awal pada register pasangan BC 

L1:  LD (BC),A  ; mengisi nilai A ke alamat lokasi memori yang ditunjuk oleh register BC. 

  INC BC  ;naikkan  nilai BC, BC =BC+1 

  DEC A  ;turunkan  A 

  JP NZ,L1  ;ulangi sampai nilai A menjadi 0 

  LD (BC),A  ; isikan nilai 00H ke lokasi memori ) 0F01H 

  HALT  ;hentikan CPU 

  .END   

Langkah‐langkah Percobaan: 
1. Buatlah program diatas pada jendela Assembler. 
2. Setelah selesai “ klik tombol Assemble And Load” 
3. Lakukan sampai error =0 
4. Jalankan simulator dengan Rate = Step by Step 
5. Tekan tombol step. 
6. Amati Register yang berubah dari masing‐masing instruksi  dan isikan seperti pada tabel 
dibawah ini. 
No  Instruksi  Nilai  Register yang berubah 
  LD A,09H  ;    Contoh Akumulator nilainya menjadi  9 
LD BC,0F01H  ;   ……………………………………………………………………………………………… 
L1:  LD (BC),A  ;  ……………………………………………………………………………………………… 
  INC BC  ;  ……………………………………………………………………………………………… 
  DEC A  ;  ……………………………………………………………………………………………… 
  JP NZ,L1  ;  ……………………………………………………………………………………………… 
  LD (BC),A  ;   ……………………………………………………………………………………………… 


 
  HALT  ;  ……………………………………………………………………………………………… 
  .END  ……………………………………………………………………………………………… 
Berapakah nilai yang ada pada alamat memori  berikut ini: 
Alamat Memori  Nilai 
0f01h  ………………………………. 
0f02h  ………………………………. 
0f03h  ………………………………. 
0f04h  ………………………………. 
0f05h  ………………………………. 
0f06h  ………………………………. 
0f07h  ………………………………. 
0f08h  ………………………………. 
0f09h  ………………………………. 
 
Buatlah Kesimpulan Saudara dari hasil percobaan tersebut 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


 
2. Mengisi Memori dari Port Input 
Deskripsi : 
Program mengisi memori dari port input  bertujuan untuk mendemonstrasikan Instruksi yang berfungsi 
untuk mengisi memori pada RAM tertentu dari Port 01. Pada program dibawah ini akan mengisi memori 
mulai dari alamat 0FF00H s.d 0FF00H  dengan nilai dari Port input. 

Program : 
L2:  IN A,(01H)  ; mengambil nilai dari port  01 yang digunakan untuk mengisi memori 

  LD D,0FFH  ;Nilai awal yang digunakan untuk counter pada register D 

  LD BC,0FF00H  ; nilai awal untuk  pointer register pasangan BC 

L1:  LD (BC),A  ; Mengisikan nilai memori  A ke lokasi memori yang dialamati oleh register BC 

  INC BC  ;menaikan pointer BC 

  DEC D  ;mengurangi kounter D 

  JP NZ,L1  ; Ulangi sampai nilai D=0 

  LD (BC),A  ;Isi lokasi memori terakhir 

  JP L2  ; ulangi 

  .END 

Langkah‐langkah Percobaan: 
1. Buatlah program diatas pada jendela Assembler. 
2. Setelah selesai “ klik tombol Assemble And Load” 
3. Lakukan sampai error =0 
4. Jalankan simulator dengan Rate = Step by Step 
5. Tekan tombol step. 
6. Amati Register yang berubah dari masing‐masing instruksi  dan isikan seperti pada tabel 
dibawah ini. 
No  Instruksi  Nilai  Register yang berubah 
  L2:  IN A,(01H)  ;   Contoh Akumulator nilainya menjadi  9 
  LD D,0FFH  ; ……………………………………………………………………………………………… 
  LD BC,0FF00H  ;   ……………………………………………………………………………………………… 
L1:  LD (BC),A  ; ……………………………………………………………………………………………… 
  INC BC    ……………………………………………………………………………………………… 
  DEC D    ……………………………………………………………………………………………… 
JP NZ,L1  ;    ……………………………………………………………………………………………… 
LD (BC),A  ;    ……………………………………………………………………………………………… 
JP L2  ;   ……………………………………………………………………………………………… 
  .END 


 
 
Berapakah nilai yang ada pada alamat memori  berikut ini: 
 
Alamat Memori  Nilai 
0ff00h s.d 0ffffh  ………………………………. 
 
Buatlah Kesimpulan Saudara dari hasil percobaan tersebut 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


 
3. Sistem Interupsi Mode 1 
 

DESKRIPSI: 
Program ini mendemonstrasikan cara memprogram menggunakkan system interupsi yang berasal dari 
port input. Sub routin untuk interupsi diletakan pada alamat 0038H. Program Utama Mengirimkan 5 
byte data ke Port Out 02H dan setelah selesai berhenti dan menunggu interrupt. 

PROGRAM: 
JP 0100H ;Lompat ke program utama
.ORG 0038H ; routin interrupt
IN A,(01H) ;ambil data dari port 01H
OUT (02H),A ;balikan kembali nilai teb ke port 02H
EI ;aktifkan interrupts
RETI ;kembali dari interupt

.ORG 0100H ;program utama


JR L1 ; lompat melalui data area
L2: .DB 0AH ;data byte 1
.DB 0BH ;data byte 2
.DB 0CH ;data byte 3
.DB 0DH ;data byte 4
.DB 0EH ;data byte 5
L1: LD D,05H ;isi counter register D
LD BC,L2 ;isi pointer pasangan register BC
L3: LD A,(BC) ;ambil data byte
OUT (02H),A ;kirim ke port 02H
INC BC ;tambahkan pointer BC
DEC D ;kurangi counter D
JP NZ,L3 ;loop sampai semua byte data terkirim
IM 1 ;set interrupt mode 1
EI ;enable interrupt
L4: JP L4 ;loop ditempat
.END
 
 

Langkah‐langkah Percobaan: 
1. Buatlah program diatas pada jendela Assembler. 
2. Setelah selesai “ klik tombol Assemble And Load” 
3. Lakukan sampai error =0 
4. Jalankan simulator dengan Rate = Step by Step 


 
5. Tekan tombol step. 
6. Amati Register yang berubah dari masing‐masing instruksi  dan isikan seperti pada tabel 
dibawah ini. 
N Instruksi  Nilai  Register yang berubah 

  JP 0100H Contoh Akumulator nilainya 
.ORG 0038H menjadi  9 
IN A,(01H) ………………………………………………
OUT (02H),A ……………………………………………… 
EI ………………………………………………
RETI ……………………………………………… 
.ORG 0100H ………………………………………………
JR L1 ……………………………………………… 
L2: .DB 0AH ;data byte 1 ………………………………………………
.DB 0BH ;data byte 2 ……………………………………………… 
.DB 0CH ;data byte 3 ………………………………………………
.DB 0DH ;data byte 4 ……………………………………………… 
.DB 0EH ;data byte 5 ………………………………………………
L1: LD D,05H ……………………………………………… 
LD BC,L2 ………………………………………………
L3: LD A,(BC) ……………………………………………… 
OUT (02H),A ………………………………………………
INC BC ……………………………………………… 
DEC D ; ……………………………………………… 
JP NZ,L3 ……………………………………………… 
IM 1 ……………………………………………… 
EI ……………………………………………… 
L4: JP L4 ……………………………………………… 
……………………………………………… 
.END
……………………………………………… 
 
 
Berapakah nilai yang ada pada alamat memori  berikut ini: 
 
PORT   Nilai 
02H  ………………………………. 
 
Buatlah Kesimpulan Saudara dari hasil percobaan tersebut 
 
 
 
 
 
 
 
 


 
4.Program Penjumlahan 
Deskripsi Program  
Program ini menjumlahkan angka 2 dan angka 3 dan hasilnya disimpan pada alamat 0fefh 

Program : 
; a = 2 + 3 

a:  .EQU 0FEFFH 

  LD IX,0FF00H 

  LD SP,0FEFFH 

  LD A,02H 

  LD L,03H 

  ADD A,L 

  LD (IX‐01H),A 

  HALT 

Lembar Pengamatan : 
Langkah    Instruksi  Isi Register yang berubah  
  LD IX,0FF00H   
  LD SP,0FEFFH 
  LD A,02H 
  LD L,03H 
  ADD A,L 
  LD (IX‐01H),A 
  HALT 

Hasil Dari Operasi Program tersebut : 
Register/memori  Nilai 
0FEFFh   
 

5.Program Perkalian menghitung luas persegi panjang 
Deskripsi  
Program ini mendemonstrasikan perkalian 16 bit yang diaplikasikan dalam menghitung luas segitiga. 
Dengan panjang, lebar dan luas disimpan pada alamat memori dibawah ini yang masing masing 
membutuhkan dua byte Data. 

panjang:  .EQU 0FEFEH 
lebar:    .EQU 0FEFCH 

10 
 
luas:    .EQU 0FEFAH 
  LD IX,0FF00H 
  LD SP,0FEFAH 
;  a = 300   
  LD HL,012CH 
  LD (IX‐02H),L 
  LD (IX‐01H),H 
; b = 3   
  LD HL,0003H 
  LD (IX‐04H),L 
  LD (IX‐03H),H 
; c = a * b 
  LD L,(IX‐02H) 
  LD H,(IX‐01H) 
  LD E,(IX‐04H) 
  LD D,(IX‐03H) 
  CALL M001 
  LD (IX‐06H),L 
  LD (IX‐05H),H 
; Akhir Program 
  HALT 
; Routine program 
M001:  PUSH BC 
  LD B,H 
  LD C,L 
  LD HL,0000H 
  LD A,10H 
M003:  DEC D 
  INC D 
  JR NZ,M002 
  CP 09H 
  JR C,M002 
  SUB 08H 
  PUSH AF 
  LD D,E 
  LD E,H 
  LD H,L 
  LD L,00H 
  POP AF 
  JR M003 
M002:  ADD HL,HL 
  RL E 

11 
 
  RL D 
  JR NC,M004 
  ADD HL,BC 
M004:  DEC A 
  JR NZ,M003 
  POP BC 
  RET 
; End of listing 
  .END 
Jalankan simulasi dengan mode  Rate normal atau Fast! 

Hasil Dari Operasi Program tersebut dapat diamati pada memori editor atau watch variabel 

Register/memori  Nilai Hex  DESIMAL 
0FEFFh     
0FEFEh   
0FEFD     
0FEFCh   
0FEFBh     
0FEFAh   

6.Program Pembagian 
Deskripsi Program  
Program ini mendemonstrasikan pembagian 16 bit bilangan decimal dengan Variabel c= a/b disimpan 
pada alamat memori dibawah ini yang masing masing membutuhkan dua byte Data. 

a:  .EQU 0FEFEH 
b:  .EQU 0FEFCH 
c:  .EQU 0FEFAH 

12 
 
  LD IX,0FF00H 
  LD SP,0FEFAH 
; a = 210   
  LD HL,00D2H 
  LD (IX‐02H),L 
  LD (IX‐01H),H 
; b = 3   
  LD HL,0003H 
  LD (IX‐04H),L 
  LD (IX‐03H),H 
;  c = a / b 
  LD L,(IX‐02H) 
  LD H,(IX‐01H) 
  LD E,(IX‐04H) 
  LD D,(IX‐03H) 
  CALL D001 
  LD (IX‐06H),L 
  LD (IX‐05H),H 
; akhir program 
  HALT 
; Routin Pembagian  
D001:  LD A,D 
  XOR H 
  LD A,H 
  PUSH AF 
  BIT 7,H 
  JR Z,D002 
  XOR A 
  SUB L 
  LD L,A 
  LD A,00H 
  SBC A,H 
  LD H,A 
D002:  BIT 7,D 
  JR Z,D003 
  XOR A 
  SUB E 
  LD E,A 
  LD A,00H 
  SBC A,D 
  LD D,A 
D003:  CALL D004 

13 
 
  POP AF 
  JP P,D005 
  PUSH AF 
  XOR A 
  SUB L 
  LD L,A 
  LD A,00H 
  SBC A,H 
  LD H,A 
  POP AF 
D005:  OR A 
  RET P 
  XOR A 
  SUB E 
  LD E,A 
  LD A,00H 
  SBC A,D 
  LD D,A 
  RET 
D004:  PUSH BC 
  LD B,D 
  LD C,E 
  EX DE,HL 
  LD HL,0000H 
  LD A,10H 
D009:  ADD HL,HL 
  SLA E 
  RL D 
  JR NC,D006 
  INC L 
  OR A 
D006:  SBC HL,BC 
  JR NC,D007 
  ADD HL,BC 
  JR D008 
D007:  INC E 
D008:  DEC A 
  JR NZ,D009 
  EX DE,HL 
  POP BC 
  RET 
; End of listing 

14 
 
  .END 

Hasil Program : 

 
Hasil Dari Operasi Program tersebut dapat diamati pada memori editor atau watch variabel : 

Register/memori  Nilai Hex  DESIMAL 


0FEFFh     
0FEFEh   
0FEFD     
0FEFCh   
0FEFBh     
0FEFAh   
 
 

7.Program Percabangan dan Looping 
Deskripsi : 
Disajikan program percabangan dengan menggunakan instruksi pembanding JR. Ada yang menggunakan 
penghitung mundur, penghitung maju dan ada juga yang menggunakan DJNZ 

1. Program 1 looping menggunakan Instruksi DJNZ 

LD  A,55H 
LD  HL,1900H 
  LD  B,20H 
LOOP  LD  (HL),A 
INC  HL 
DJNZ  LOOP 
HALT 
2. Program Percabangan dengan Instruksi JR dan loop dengan hitung mundur 
  LD  BC,0180H 

15 
 
  LD  HL,1880H 
LOOP  LD  (HL),0AAH 
  INC  HL 
  DEC  BC 
  JR  NZ,LOOP 
  HALT 
 
3. Percabangan dengan Instruksi JR dan loop dengan hitung maju 
  LD  DE,1A00H 
  LD  HL,1B00H 
LOOP  LD  A,(HL) 
  LD  (DE),A 
  CP  0FFH 
  JR  A,EXIT 
  INC  DE 
  JR  LOOP 
EXIT  RST 
  HALT 

Hasil Pengamatan 
Dari Hasil Pengamatan Simulasi, Jelaskan perinsip dari masing‐masing program tersebut, berapakali 
loopingnya, dan hasilnya seperti apa? 

8.Program Pembangkit Bilangan Acak  
Deskripsi :  
Program sederhana untuk menghasilkan bilangan acak/ random. Hasil dari Program ini akan ditampilkan 
pada alamat 0ff00h. Instruksi utama untuk pembangkit bilangan acak ini adalah menggunakan instruksi 
XOR. 

PROGRAM 
        ld      hl,(0ff00h) 
        ld      a,r 
        ld      d,a 
        ld      e,(hl) 
        add     hl,de 

16 
 
        add     a,l 
        xor     h 
        ld      (0ff00h),hl 
        halt 

Hasil Program 
Jalankan Program sebanyak minimal 10x dan tuliskan hasilnya……………………………………………………….. 
………………………………………………………………………………………………………………………………………………………… 

9.Program Delay 1 detik menggunakan Loop 
Deskripsi 
Program dibawah ini akan menghasilkan delay selama ~1 detik jika menggunakan frekuensi Clock 4MHz. 
Untuk menghasilkan delay yang lebih panjang dapat mengganti isi register BC yang lebih besar atau 
dengan menmbuat loop yang memanggil program delay ini. 1 clock =0,25uS. Gunakan breakpoint 
manager untuk mensimulasikan program ini. Pasang break point pada baris ketiga  (NOP) 

Program 
  LD BC,115 
  CALL DELAY 
  NOP 
  END 
DELAY:  NOP 
        DEC BC ;40ck(6inst)=10uS 
        LD A,B 
        OR C 
        RET Z 
        JR DELAY 
        HALT 
  END 

Hasil Pengamatan 
Berapa Jumlah Instruksi : 

Berapa Jumlah Clock : 

Berapa delay yang dihasilkan  

10.Program Flasing Led Pada Port 1 
Deskripsi: 
Program ini mendemonstrasikan cara membuat lampu pada Port1 bit 0 menyala dan padam selang 1 
detik 

17 
 
PROGRAM 
START: 
        LD BC,0E007h 
        LD A,01h 
        OUT (01),A 
        LD BC,15   ;~1 detik second delay 
        CALL DELAY 
        LD BC,0E007h 
        LD A,00h 
        OUT (01),A 
        LD BC,15   ;~1 detik 
        CALL DELAY 
        JP  START 

HASIL 
Amati dan Laporkan hasil nya menggunakan peripheral Device!

18 
 
11.Program Running LED dengan Instruksi RLC 
Deskripsi : 
Program ini merupakan pengembangan dari program Flasihing Led. Dengan tambahan Instruksi RLC 
maka LED tersebut dapat berotasi. 

Program 
    LD   D,01h 
START: 
               LD  A,D 
  OUT   (01),A 
  Ld   D,A 
  RLC   D 
        LD  BC,1   ;~1 detik second delay 
        CALL   DELAY 
        JP  START 
   
DELAY: 
        NOP 
        DEC BC 
        LD A,B 
        OR C 
        RET Z 
        JR DELAY 
        END 
DELAY: 
        NOP 
        DEC BC 
        LD A,B 
        OR C 
        RET Z 
        JR DELAY 
        END     

HASIL 
Amati dan Laporkan hasil nya menggunakan peripheral Device!

19 
 
 

12.Program Pengubah BCD ke Biner 
Deskripsi :  
Program ini berguna untuk mengkonversi bilangan BCD menjadi Biner. Aplikasi yang dapat dijumpai 
pada saat menekan tombol bilangan pada keypad yang hanya memasukan bilangan BCD sedangkan yang 
diolah  secara aritmatika atau logika dalam prosesor adalah bilangan biner atau integer yang angkanya 
menjadi satu kesatuan. 

Program 
  ;KONVERSI 10 DIGIT BCD KE BINER 
  ;INPUT DATA BCD DI RAM 1A04 S.D 1A08H 
  ;OUTPUT DATA BINER DI RAM 1A00H‐1A03 
  ORG  1800h 
  LD  C,32  ;LOOP KONV =32 
DBLP: 
  LD  B,5  ;PENGHITUNG BYTE BCD 
  XOR  A  ;NOLKAN CARRY FLAG 
  LD  HL,1A08H;HL MENUNJUK BYTE KIRI 
COR0  LD  A,(HL)  ;TRANSFER DATA KE REG A 
  RRA    ;ROTASI KE KANAN 
  PUSH  AF  ;SIMPAN CARRY FLAG 
  BIT  7,A  ;TES BIT 7 
  JR  Z,COR1 ;SALAH JIKA BIT 7=0 
  SUB  30H  ;KURANGKAN DARI 30H JIKA BIT 7 =1 
COR1  BIT  3,A  ; TEST BIT 3 
  JR  Z,COR2 
  SUB  3 
COR2  LD  (HL),A  ;SIMPAN DIMEMORY 
  DEC  HL  ; BYTE BERIKUTNYA 
  POP  AF  ; BETULKAN CARRY FLAG 
  DJNZ  COR0  ; LOOP 
  ;ROTASIKAN BINER KE KANAN 
  LD  B,4   
SHR4  RR  (HL) 
  DEC  HL 
  DJNZ  SHR4 
  DEC  C 
  JR  NZ,DBLP 
  RET 

20 
 
Hasil 
Pada memori editor hasilnya dapat dilihat  

Data INPUT BCD :………………………………… 

DATA OUTPUT BINARY :………………………. 

13.Program Pengubah Biner ke BCD 
Deskripsi 
Program ini adalah mengkonversi bilangan biner menjadi bilangan BCD. Aplikasinya adalah untuk 
menampilkan data biner yang diambil dari input seperti ADC pada Display baik LCD maupun 7 segmen. 
Dari satu data biner dapat ditampilkan menjadi beberapa karakter. 

Program 
START:  LD SP,STACK  ;initialize stack pointer 
  LD HL,BINBYT  ;point HL index to where binary number is stored 
  LD A,(HL)  ;transfer byte 
  LD HL,OUTBUF  ;point HL index to output‐buffer memory 
  CALL BINBCD 
  HALT 
 
BINBCD: 
  LD B,100  ;load 100 into register B (power of ten holding register) 
  CALL BCD  ;call conversion for BCD3 
  LD B,10  ;load 10 into register B 
  CALL BCD  ;call conversion for BCD2 
  LD (HL),A  ;store BCD1 
  RET 
 
BCD: 
  LD (HL),0FFH  ;load buffer with ‐1 
STORE:  INC (HL)  ;clear buffer first and increment for each subtraction 
  SUB B  ;subtract power of ten from binary number 
  JR NC,STORE  ;if number is larger than power of ten, go back and add 1 to buffer 
  ADD A,B  ;if no, add power of ten to get back remainder 
  INC HL  ;go to next buffer location 
  RET 
 
  .ORG 0100H 
BINBYT .DB 234  ;example binary number to be converted into a BCD number 
OUTBUF  ;output‐buffer memory location 
 

21 
 
STACK  .EQU 0FFFFH  ;definition of stack pointer initialization address 
  .END 

Hasil 
Pada memori editor hasilnya dapat dilihat  

Data INPUT BINER :………………………………… 

DATA OUTPUT BCD :………………………………. 

LATIHAN 
1. Buatlah Program Pengurangan pada bilangan 16 bit! 
2. Buatlah Program Port I/O menggunakan Port 1 untuk menjalankan motor stepper 
3. Buatlah Program Mendeteksi sensor pada Port 0 bit 1. Jika berlogika 1 Led yang ada pada port1 
berjalan ke kiri bila dimasukan logika 0 lampu semua menyala? 
4. Bagaimana Format Bilangan Pecahan pada mikroprosesor 
5. Buatlah Delay kira‐kira 5 detik menggunakan Looping. 
6. Buatlah Program untuk mengambil data ADC 8 bit dari Port 0 dan ditampilkan pada Port 1 untuk 
angka ratusan, port2 untuk angka puluhan dan port1 untuk angka satuan! 

22 
 

Anda mungkin juga menyukai