MODUL KE 10 Sistem Mikroprosesor (3 sks) 10 MATERI KULIAH : Pengelompokan instruksi mikroprosesor : data manipulation instruction, data transfer instruction, program manipulation instruction, status management instruction. Perincian masing-masing kelompok instruksi, contoh-contoh instruksi penting dari masing-masing kelompok beserta pengertian/pengaruhnya. POKOK BAHASAN : Instruksi Mikroprosesor Oleh Ir. INDRAGUNG PRIYAMBODO, MT. 10.1 Pengelompokan Instruksi Mikroprosesor Instruksi mikroprosesor dapat dikategorikan menjadi 4 (empat) kategori/kelompok/tipe : 1. Data manipulation instruction Arithmatic Instruction Logical Instruction Shift Instruction Comparison Instruction Special Purpose Instruction 2. Data transfer instruction Memindahkan/meng-copy-kan data dari satu tempat ke tempat lain pada sistem mikroprosesor dengan tidak/tanpa mengubah data. Memory Transfer Instruction Input/Output Instruction Internal Transfer Instruction Stack Instruction Sistem Mikroprosesor/Teknik Elektro/FTI/Universitas Jayabaya/Modul ke 10/Hal 10-1
3. Program manipulation instruction Mentransfer kendali/kontrol program dari satu tempat ke tempat lainnya pada memori, dan terdapatnya/dilakukan perubahan program counter (PC). Unconditional Jump Instruction Conditional Jump Instruction Subrouting Instruction Halts and No Operation Instruction 4. Status Management instruction Mengubah status condition dari sistem mikroprosesor tanpa mempengaruhi data/eksekusi. Jadi instruksi-instruksi ini lebih merupakan management function dibandingkan sebagai data processing function. 10.2 Data Manipulation Instruction 10.2.1 Arithmatic Instruction (Instruksi/Operasi Aritmatika) Instruksi Aritmatika ADD ADD WITH CARRY SUBTRACT SUBTRACT WITH CARRY INCREMENT DECREMENT MULTIPLY DIVIDE Artinya A = A + M A = A + M + C A = A M A = A M C A = A + 1 A = A 1 A = A x M A = A M atau A = A/M A = Isi dari Accumulator M = Isi dari effective address (alamat efektif) ADD with carry untuk menjumlahkan 4327 dengan 5096 menggunakan mikroprosesor 8 bit. Karena hanya dapat dilakukan penambahan dua (2) digit pada satu saat, maka penjumlahannya dilakukan bertahap berikut ini. Sistem Mikroprosesor/Teknik Elektro/FTI/Universitas Jayabaya/Modul ke 10/Hal 10-2
. 27 43. 96 50 + CARRY (1) 9423 HASILNYA 1 23 + 94 Hasil 10.2.2 Logical Instruction (Instruksi/Operasi Logika) Instruksi Logika AND OR XOR COMPLEMENT Artinya A = A. M A = A + M A = A M A = M = ~M = M A = Isi dari Accumulator M = Isi dari effective address (alamat efektif) AND sering digunakan untuk menguji suatu word dan prosesnya disebut sebagai masking process, kemudian yang di-and-kan disebuk sebagai a mask Menghilangkan bit yang tidak digunakan, misalnya mengeluarkan LSB suatu 8 bit word. 10101101 di AND kan dengan 0F H atau 00001111 a binary mask 00001101 hasilnya (LSB dikeluarkan) Jika menggunakan binary mask F0 H atau 11110000, maka MSB-nya yang dikeluarkan. Jika menggunakan binary mask F7 H atau 11110111, maka akan meng-clearkan bit ke 3, dan seterusnya. OR sering digunakan untuk men-set bit, Men-set bit ke 4 dari suatu word. 10101101 di OR kan dengan 10 H atau 00010000 10111101 bit ke 4 bernilai 1 (set) Sistem Mikroprosesor/Teknik Elektro/FTI/Universitas Jayabaya/Modul ke 10/Hal 10-3
XOR sering digunakan men-cek level/kondisi bit, atau meng-inisiasi suatu lokasi atau register. Men-cek bit ke berapa saja yang bernilai 1 pada suatu word : 10101101 di XOR kan dengan 11 H atau 11111111 01010010 terlihat bahwa bit ke 0, 2, 3, 5, dan 7 bernilai 0, sehingga bitbit tersebutlah pada word tadi yang bernilai 1. Meng-clear-kan atau menginisiasi isi suatu lokasi, misalnya suatu lokasi berisi word 10101101 dan akan di-clear-kan, maka caranya adalah di XOR kan dengan dirinya sendiri seperti berikut ini. 10101101 di XOR kan dengan dirinya sendiri 10101101 00000000 hasilnya akan 0 semua. COMPLEMENT digunakan untuk meng-invert atau mengkomplemenkan tingkat logika, sehingga untuk logika 1 dikomplemenkan menjadi 0 dan sebaliknya. 10.2.3 Shift Instruction INSTRUKSI LOGICAL SHIFT ARITHMATIC SHIFT ROTATE ROTATE WITH CARRY ARTI M digeser 1 bit, empty bit clear (0), carry = most/least significant bit (MSB/LSB) yang tergeser keluar. M digeser 1 bit, empty bit clear (0), sign bit (bit ke 7 atau MSB ke 1) tetap, carry = bit yang tergeser keluar. M digeser memutar 1 bit, dengan MSB dan LSB dihubungkan tidak melewati carry M digeser memutar 1 bit, dengan MSB dan LSB dohubungkan melewati carry M = Isi effective address (alamat efektif/tujuan) LOGICAL SHIFT instruction, menggeser data clear Sistem Mikroprosesor/Teknik Elektro/FTI/Universitas Jayabaya/Modul ke 10/Hal 10-4
Carry Data C b7 b6 b5 b4 b3 b2 b1 B0 : Kondisi Awal b7 b6 b5 b4 b3 b2 b1 b0 0 Logical Shift Left b0 0 b7 b6 b5 b4 b3 b2 b1 Logical Shift Right 1 0 1 1 0 1 1 0 1 : Kondisi Awal 0 1 1 0 1 1 0 1 0 Logical Shift Left 1 0 0 1 1 0 1 1 0 Logical Shift Right ARITHMATIC SHIFT instruction Sign bit (bit terakhir) tetap C b7 b6 b5 b4 b3 b2 b1 b0 : Kondisi Awal Tetap b6 b7 b5 B4 b3 b2 b1 b0 0 Arithmatic Shift Left Tetap b0 b7 b7 b6 b5 b4 b3 b2 b1 Arithmatic Shift Right 0 1 0 1 1 0 0 0 1 : Kondisi Awal 0 1 1 1 0 0 0 1 0 Arithmatic Shift Left 1 1 1 0 1 1 0 0 0 Arithmatic Shift Right ROTATE instruction memutar, mengubah posisi bit, tetapi isi carry tetap Sistem Mikroprosesor/Teknik Elektro/FTI/Universitas Jayabaya/Modul ke 10/Hal 10-5
Carry Data C b7 b6 b5 b4 b3 b2 b1 b0 : Kondisi Awal C b6 b5 b4 b3 b2 b1 b0 b7 Rotate Shift Left C b0 b7 b6 b5 b4 b3 b2 b1 Rotate Shift Right 0 1 1 0 0 1 0 0 1 : Kondisi Awal 0 1 0 0 1 0 0 1 1 Rotate Shift Left 0 1 1 1 0 0 1 0 0 Rotate Shift Right ROTATE WITH CARRY instruction memutar, mengubah posisi bit & isi carry C b7 b6 b5 b4 b3 b2 b1 b0 : Kondisi Awal b7 b6 b5 b4 b3 b2 b1 b0 b7 Rotate Shift Left b0 b0 b7 b6 b5 b4 b3 b2 b1 Rotate Shift Right 0 1 1 0 0 1 0 0 1 : Kondisi Awal 1 1 0 0 1 0 0 1 1 Rotate Shift Left 1 1 1 1 0 0 1 0 0 Rotate Shift Right Sistem Mikroprosesor/Teknik Elektro/FTI/Universitas Jayabaya/Modul ke 10/Hal 10-6
10.2.4 Comparison Instruction Untuk membandingkan atau menguji/tes data apakah sesuai atau tidak sesuai dengan kondisi yang diinginkan dengan tidak/tanpa mengubahnya data tersebut. Comparison Instruction Artinya COMPARE BIT TEST TEST SCAN Compute A M Compute A. M Compute M 0 A = Isi dari Accumulator M = Isi dari effective address (alamat efektif) Look for a pattern in string 10.2.5 Special Purpose Instruction Untuk hal-hal khusus Decimal arithmatic Keyboard scan for calculation application. 10.3 Data Manipulation Instruction Memindahkan/meng-copy-kan data dari satu tempat ke tempat lain pada sistem mikroprosesor dengan tidak/tanpa mengubah data. 10.3.1 Memory Transfer Instruction Transfer data antara register dan lokasi memori. Isi dari source tetap LOAD, STORE, CLEAR, atau SET. 10.3.2 Input/Output Instruction Seperti pada memory transfer instruction, perbedaannya bahwa source/destination adalah input atau output port, bukan likasi memori. READ atau INPUT dari input port ke register WRITE atau OUTPUT dari register ke output port. 10.3.3 Internal Transfer Instruction Sistem Mikroprosesor/Teknik Elektro/FTI/Universitas Jayabaya/Modul ke 10/Hal 10-7
MOVE data dari suatu register ke register lainnya. Pada umumnya untuk mengamankan isi accumulator ke general purpose register, atau move/meng-copy isi general purpose register ke accumulator/index register. 10.3.4 Stack Instruction Transfer data antara stack dan register. PUSH meletakkan isi register ke stack (Stack RAM). POP/PULL mengambil isi Stack RAM ke register. Instruksi PUSH atau PULL/POP akan mengubah isi stack pointer (SP). 10.4 Data Manipulation Instruction Mentransfer kendali/kontrol program dari satu tempat ke tempat lainnya pada memori, dan terdapatnya/dilakukan perubahan program counter (PC). 10.4.1 Unconditional Jump Operation Mengubah urutan eksekusi normal dari suatu instruksi. JUMP atau BRANCH. Contoh JUMP 150 Letakkan 150 ke PC (Program Counter), mikroprosesor akan mengambil instruksi berikutnya dari lokasi ini. SKIP Instruction memintas urutan instruksi berikutnya. 10.4.2 Conditional Jump Operation Dari sebagian besar program, operasi/instruksi ini adalah yang terpenting. Dapat melakukan pengulangan (looping) urutan instruksi, mengenali error, mengecek status. JUMP ON CONDITION instruction hanya melakukan jump bila suatu kondisi tertentu telah ditemukan. Bila kondisi tertentu tersebut tidak ditemukan, maka melakukan instruksi berikutnya (next instruction). Sistem Mikroprosesor/Teknik Elektro/FTI/Universitas Jayabaya/Modul ke 10/Hal 10-8
Typical Conditional Jump Instruction Address Instruction Result 100 JUMP ON CARRY 150 (PC) = 150 IF CARRY = 1 (PC) = 101 IF CARRY = 0 135 JUMP ON NOT ZERO 139 160 JUMP ON NEGATIVE 120 145 JUMP ON OVERFLOW ZERO 147 (PC) = 139 IF ZERO FLAG = 0 (PC) = 136 IF ZERO FLAG = 1 (PC) = 120 IF SIGN FLAG = 1 (PC) = 161 IF SIGN FLAG = 0 (PC) = 147 IF OVERFLOW = 0 (PC) = 146 IF OVERFLOW = 1 Contoh Suatu program loop dengan iterasi pada suatu bilangan tertentu, misalnya untuk mejumlahkan isi dari lokasi 21 s/d 29. Address Instruksi 0 LOAD INDEX REGISTER #9 1 CLEAR ACCUMULATOR 2 ADD 20, X 3 DECREMENT INDEX REGISTER 4 JUMP ON NOT ZERO 2 Setiap melakukan loop (address 2 s/d 4 ), dengan instruksi ADD 20, X akan menjumlahkan isi accumulator dengan isi dari lokasi 21 s/d 29. Index register yang pada awalnya diisi dengan bilangan 9, dengan adanya instruksi decrement index register, maka isi index register akan berkurang 1, dan pada akhirnya berisi nol (ini mengakibatkan ZERO FLAG = 1). Hal ini akan menghentikan looping (exit condition) dan program akan melanjutkan ke instruksi berikutnya di alamat 5. 10.4.3 Subrouting Instruction Diawali dengan instruksi yang berlabel sebagai alamat masuk atau alamat yang dipanggil. Instruksi pertamannya harus membuat temporary storage (untuk mengamankan kondisi mutakhir), terutama bila subrutin dapat dipanggil oleh interupt (dapat diinterupsi). Ditengahnya memberikan suatu hasil. Sistem Mikroprosesor/Teknik Elektro/FTI/Universitas Jayabaya/Modul ke 10/Hal 10-9
Diakhiri dengan instruksi RETURN untuk kembali ke program utama (main program). Pada Program Utamanya (main program) : Harus passing parameter (menyiapkan data untuk input-nya) untuk digunakan oleh subrutin. Harus menyiapkan return address di stack (yang berarti sebelumnya stack pointer harus sudah diinisiasi terlebih dahulu). Catatan : Biasanya otomatis dilakukan oleh instruksi CALL. Untuk INTEL 8080 inisiasi SP dapat menggunakan alternatif LXI SP, double atau SPHL : (HL) SP Harus melakukan CALL subrutin. Menginterpretasikan hasil subrutin. Konsep subrutin secara global digambarkan seperti berikut ini. Program Utama Subrutin 1 CALL Subrutin 1 Start 1 Instruksi Berikutnya 2 Subrutin 2 CALL Subrutin 2 Start Instruksi Berikutnya 4 3 RETURN RETURN 10.4.4 HALT and NO OPERATION Instruksi HALT : Menyebabkan mikroprosesor memasukkan suspended state sampai diterima sinyal dari luar. Instruksi NO OPERATION : Tidak mengerjakan apa-apa, kecuali melakukan instruction cycle dan increment program counter. Sistem Mikroprosesor/Teknik Elektro/FTI/Universitas Jayabaya/Modul ke 10/Hal 10-10
10.5 Status Management Instruction Mengubah status condition dari sistem mikroprosesor tanpa mempengaruhi data/eksekusi. Instruksi-instruksi ini lebih merupakan management function dibandingkan sebagai data processing function. Instruksi ini adalah ENABLE INTERRUPT (atau CLEAR INTERRUPT) dan DISABLE INTERRUPT (atau SET INTERRUPT). Dengan adanya instruksiinstruksi ini, maka mikroprosesor secara otomatis akan men-disable interrupt system selama RESET atau ketika interrupt telah dilaksanakan. DAFTAR PUSTAKA [1] Lance A. Leventhal, Introduction to Microprocessors : Software, Hardware, Programming, Prentice Hall,1978. [2] Pasahow, Edward, J., Microprocessor and Microcomputer Interfacing for Electronics Technicians, McGraw-Hill, New York, 1981. [3] Chris H. Pappas dan Willian H. Murray III, 80386 Mikroprocessor Handbook, Osborne McGraw-Hill, 1988 [4] Avtar Singh dan Walter A. Triebel, The 8088 Microprocessor : Programmnig, Interfacing, Software, Hardware, and Applications, Prentice Hall, International Editions, 1989 [5] Charles M.Gilmore, Microprocessors:Principles and Applications, Glencoe/McGraw-Hill, 2 nd International Ed., 1995 [6] Rodnay Azks (alih bahasa : S.H. Nasution), From Chips to Systems : An Introduction to Microprocessors ( Dari Chip ke Sistem : Pengantar Mikroprosesor), Sybec Inc., 1981 (Penerbit Erlangga, 1986). [7] Harry Garland (alih bahasa : M. Barmawi dan M.O. Tjia), Introduction to Microprocessor System Design ( Pengantar Desain Sistem Mikroprosesor), McGraw-Hill Inc., 1979 (Penerbit Erlangga, 1984). [8] Barry B. Brey, Microprocessors and Peripherals : Hardware,Software,Interfacing, and Applications, Merrill Publishing Company, 1988. Sistem Mikroprosesor/Teknik Elektro/FTI/Universitas Jayabaya/Modul ke 10/Hal 10-11