Modul 7 PDF
Modul 7 PDF
MODUL PRAKTIKUM
MIKROPROSESOR
DAN
MIKROKONTROLER
Modul 7: Subrutin
Tujuan:
Modul 7: Subrutin
1
|
FUNDAMENTAL
OF
SUBROUTINE
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.
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.