Anda di halaman 1dari 5

Laboratorium Digital

Departemen Teknik Elektro


Fakultas Teknik
Universitas Indonesia

MODUL PRAKTIKUM
MIKROPROSESOR
DAN
MIKROKONTROLER
Modul 7: Subrutin

Tujuan:

1. Memelajari prinsip kerja dan bahasa tingkat


rendah dari mikrokontroler

2. Memelajari serta memahami instruksi-instruksi yang


digunakan pada MCU 8051

3. Membuat program sederhana dengan


menggunakan subrutin
Modul  Praktikum  Mikroprosesor  dan  Mikrokontroler  
 
 

Laboratorium Digital, Departemen Teknik Elektro

Modul 7: Subrutin
1  |  FUNDAMENTAL  OF  SUBROUTINE   3  

2  |  LOOP  AND  JUMP   3  

3  |  PROCEDURE   4  

4  |  REFERENCES   5  

Copyright
©2014
Modul  Praktikum  Mikroprosesor  dan  Mikrokontroler  
 
 
MODUL 7: SUBRUTIN

1 | FUNDAMENTAL OF SUBROUTINE
Pada dasarnya program dijalankan intruksi demi instruksi, artinya selesai menjalankan
satu instruksi mikrokontroler langsung menjalankan instruksi berikutnya, untuk keperluan
ini mikrokontroler dilengkapi dengan Program Counter yang mengatur pengambilan
intruksi secara berurutan. Meskipun demikian, program yang kerjanya hanya berurutan
saja tidaklah banyak artinya, untuk keperluan ini mikrokontroler dilengkapi dengan
instruksi-instruksi untuk mengatur alur program.

Secara umum kelompok instruksi yang dipakai untuk mengatur alur program terdiri atas
instruksi-instruksi JUMP (setara dengan statemen GOTO dalam Pascal), instruksi-
instruksi untuk membuat dan memakai sub-rutin/modul (setara dengan PROCEDURE
dalam Pascal), instruksi-instruksi JUMP bersyarat (conditional Jump, setara dengan
statemen IF .. THEN dalam Pascal). Di samping itu ada pula instruksi PUSH dan POP
yang bisa memengaruhi alur program.

Mikrokontroler menjalankan intruksi demi instruksi, selesai menjalankan satu instruksi


mikrokontroler langsung menjalankan instruksi berikutnya, hal ini dilakukan dengan cara
nilai Program Counter bertambah sebanyak jumlah byte yang membentuk instruksi yang
sedang dijalankan, dengan demikian pada saat instruksi bersangkutan dijalankan
Program Counter selalu menyimpan nomor memori-program yang menyimpan instruksi
berikutnya.

2 | LOOP AND JUMP


Instruksi LOOP adalah instruksi yang melakukan secara berulang-ulang suatu instruksi
dalam satuan waktu. Instruksi ini merupakan kombinasi antara instruksi decrement
register dan JNZ, contohnya adalah DJNZ register, label. Yang artinya adalah men-
decrement register, lalu jump ke label jika tidak bernilai 0. Satuan waktu yang digunakan
sebagai patokan melakukan instruksi LOOP disimpan di counter (dan dapat berupa
lokasi RAM), sedangkan registernya antara R0 – R7. Loop digunakan bersamaan
dengan instruksi conditional jump yang akan mengulang kembali bagian tertentu.
Modul  Praktikum  Mikroprosesor  dan  Mikrokontroler  
 
 
Instruksi JUMP (JMP) artinya programmer dapat meng-skip beberapa bagian dari
program dan langsung melakukan instruksi berikutnya. JUMP dibagi menjadi 2 jenis
yaitu Conditional Jump dan Unconditional Jump.

Instruction Action
JZ / JE Jump if ZF = 0
JNZ / JNE Jump if ZF ≠ 0
DJNZ Decrement and jump if register ≠ 0
CJNE A, data Jump if A ≠ data
CJNE reg, #data Jump if byte ≠ data
JC Jump if CY = 1
JNC Jump if CY = 0
JB Jump if below/ not above or equal (CF = 1)
JNB Jump if not below/ above or equal (CF = 0)
JBC Jump if bit = 1 and clear bit
JS Jump on sign / jump negative (SF = 1)
JNS Jump on not sign / jump positive (SF = 0)

Untuk instruksi unconditional jump terdapat 2 jenis yaitu LJMP (Long Jump) dan SJMP
(Short Jump). LJMP adalah instruksi 3 byte dimana byte pertama berupa opcode, dan
byte kedua serta ketiga adalah alamat 16-bit dari lokasi tujuan. Alamat tujuan ini
memiliki range lokasi memori dari 0000H sampai FFFFH. SJMP (biasanya dipanggil
relative jump) merupakan instruksi 2-byte, byte pertama berupa opcode dan byte kedua
adalah relative address dari lokasi tujuan yang memiliki range antara 00H – FFH dan
dibagi menjadi 2 jenis jump yaitu forward jump dan backward jump.

3 | PROCEDURE
Procedure atau biasa dikenal subrutin adalah bagian penting dari sebuah arsitektur
sistem komputer. Procedure adalah set dari instruksi-instruksi yang biasanya melakukan
suatu perintah. Procedure adalah bagian yang dapat digunakan secara berulang-ulang
dalam suatu software yang disimpan di memory hanya sekali, namun dapat digunakan
berkali-kali. Keunggulan dari procedure adalah tidak memakan banyak memory namun
dibutuhkan waktu bagi komputer untuk terhubung ke suatu procedure dan kemudian
kembali (return) ke state awal. Instruksi CALL menghubungkan ke instruksi procedure
dan instruksi RET (return) mengembalikan dari procedure. Stack menyimpan return
Modul  Praktikum  Mikroprosesor  dan  Mikrokontroler  
 
 
address ketika procedure dipanggil saat melakukan sebuah eksekusi.Sebuah procedure
dimulai dengan PROC dan diakhiri dengan ENDP, dan setiap procedure diberi nama
dari procedure tersebut.

Instruksi CALL ini membuat sebuah program menjadi lebih terstruktur sehingga tidak
memakan banyak memory. Terdapat 2 jenis CALL yaitu LCALL (Long Call) dan ACALL
(Absolute Call), dan penggunaannya berdasarkan address tujuan. Instruksi ini menaruh
return address di 2 lokasi memori sebelum SP (Stack Pointer) berpindah, oleh karena itu,
programmer harus men-set SP sebelum melakukan instruksi CALL. Sedangkan instruksi
RET mengambil isi dari 2 lokasi memori yang terletak paling atas dari stack dan
menggunakannya sebagai return address. Di bahasa assembly, data dikirim ke subrutin
melalui register-register. Data disimpan di salah satu register dengan memanggil
program dan subrutin menggunakan nilai dari register tersebut.

4 | REFERENCES
Brey, Barry B. 2006. The Intel Microprocessors Architecture, Programming, and
Interfacing. New Jersey: Pearson Prentice Hall.

Anda mungkin juga menyukai