Instruksi Pengatur Program

Slides:



Advertisements
Presentasi serupa
JWASM Input Keyboard.
Advertisements

Flags.
PERTEMUAN KE 5 OPERASI LOMPAT/JUMP.
ASSEMBLER PERTEMUAN KE-1
Pertemuan 6 (Organisasi Input/Output)
Aplikasi dari program Mikroprosesor
BAB IV MODE PENGALAMATAN
Tipe-Tipe Instruksi MCS-51 (Arithmatika)
Bhakti Yudho Suprapto, MT
Procedure. Procedure???? Procedure merupakan suatu alat bantu yang sangat berguna. Dengan procedure, suatu program yang besar dapat disusun secara terstruktur.
Chapter 20 Pembentukan Kode.
REGISTER Oleh : Oman Somantri, S.Kom
Register di dalam 8088/8086 Nama Register Bit Katagori AX,BX,CX,DX 16
NAMA KELOMPOK NPM  ANDRIANA RESTIASARI  JULAEHA  JEN RETNO ERYANI DOSEN PEMBIMBING : NAHOT FRASTIAN UNIVERSITAS.
Instruksi Percabangan
PENDAHULUAN Dalam bab ini, kita akan mengembangkan pengetahuan mengenai dasar I/O dan antar muka periferal yang dapat diprogram denagn memelajari sebuah.
INTERUPSI mikroprosesor 8088
Dasar pemrograman Mikroprosesor 8086
Mikroprosesor 8086 dan 8088.
Instruksi Logika Dasar
ARSITEKTUR SET INSTRUKSI
PERTEMUAN KE-2 PERKULIAHAN SISTEM OPERASI
REGISTER.
ORGANISASI & ARSITEKTUR KOMPUTER 2 STRUKTUR & FUNGSI CPU IBP WIDJA, MT
Mode Pengalamatan Memori
EE-2623 Mikroprosesor & Antarmuka
Program Bahasa Rakitan dengan DEBUG.COM
Arsitektur Perangkat Lunak 8086
lnstruksi Aritmetika dan Logika
Pertemuan 9 Strukturisasi Control Flow pada Bahasa rakitan 8088
PENDAHULUAN Pembuatan perangkat lunak yang efisien untuk mikroprosesor membutuhkan pengenalan yang menyeluruh mengenai mode pengalamatan yang digunakan.
INSTRUKSI LOGIKA DASAR
Register.
INTERRUPT Mulyono.
1 Pertemuan 3 Komponen Sistem Komputer dan Register pada prosesor 8088 Matakuliah: T0483 / Bahasa Rakitan Tahun: 2005 Versi: versi 1.0 / revisi 1.0.
Interupsi dan Chip 8259.
Pengenalan Assembler.
Dasar pemrograman Mikroprosesor 8086
Program Bahasa Rakitan dengan DEBUG.COM
BIOS, DOS, dan String.
BAB IV Teknik Pemrograman
Aplikasi dari program Mikroprosesor
Stack dan Procedure.
Komponen CPU (2) ALU,I/O Interconnection & Interupsi
Struktur dan Fungsi CPU (II)
Pendahuluan Interupsi
MODE PENGALAMATAN DAN SET INSTRUKSI
Model Hipotesis SAP-3 Abdillah, S.Si, MIT.
SAP-3.
INSTRUKSI PENGAMBIL KEPUTUSAN DAN STACK
SISTEM MIKROPROSESOR PERTEMUAN 4.
Triyogatama Wahyu Widodo
Matakuliah : H0162/ Mikroprosesor Tahun : 2006 Versi : 1/0
Instruksi Perpindahan Data Miscellaneous
REGISTER.
Mikroprosesor 8086 dan 8088.
Pertemuan 2 Organisasi Komputer II
ORGANISASI & ARSITEKTUR KOMPUTER 2 SET INSTRUKSI IBP WIDJA, MT
Sistem Bilangan & REGISTER
Pengenalan Assembler.
Instruksi-instruksi pada 8086
Instruksi-instruksi pada 8086
FLOW CONTROL INSTRUTIONS
BAB III REGISTER 8088 Mikroprosesor 8088 berorientasi pada register
Model Hipotesis SAP-2 Abdillah, S.Si, MIT.
INSTRUKSI PENGAMBIL KEPUTUSAN DAN STACK
DOSEN PENGAMPU :SOEGIARTO, M.KOM,
Pertemuan IV Struktur dan Fungsi CPU (III)
INSTRUKSI PENGAMBIL KEPUTUSAN DAN STACK
Karakteristik Set Instruksi 14 JP. Karakteristik Set Instruksi Pengertian Set Instruksi Set instruksi adalah kumpulan dari instruksi yang dapat dijalankan.
Transcript presentasi:

Instruksi Pengatur Program PENDAHULUAN Intruksi pengatur program berfungsi mengarahkan aliran program dan membuat aliran tersebut daapat diubah. Perubahan aliran program biasanya terjadi setelah pengambilan keputusan, seperti hasil intruksi CMP atau TEST yang diikuti dengan intruksi pengatur program, termasuk intruksi jump, call, return, interupsi dan intruksi. Pada bab ini juga akan dipaparkan pernyataan relasional bahasa assembly (.IF, .ELSE, .ELSEIF, .ENDIF, .WHILE, .REPEAT, .dan .UNTIL) yang ada pada MASM atau TASM versi 6.X dan yang lebih tinggi, dengan set versi 5.X untuk kompatibilitas MASM. Perintah relasional bahasa assembly ini membantu programer membuat bagian aliran pengatur program dengan bahasa C/C++ secara efisien. NEXT

Usai mempelajari bab ini, anda akan mampu untuk : TUJUAN BAB Usai mempelajari bab ini, anda akan mampu untuk : Menggunakan instruksi lompatan bersyarat dan tidak bersyarat untuk mengatur aliran program. 2. Menggunakan pernyataan rasional bahasa assembly .IF, .REPEAT, .WHILE, dan keempatnya dalam program. 3. Menggunakan instruksi call dan returnuntuk memasukkan (push) prosedur- prosedur dalam struktur program. 4. Menjelaskan sistem kerja interupsi dan intruksi pengatur inntrupsi. 5. Menggunakan instruksi pengatur mesin untuk mengubah bit flag. 6. Menggunakan ENTER dan LEAVE untuk masuk dan meninggalkan struktur program. NEXT

KELOMPOK INSTRUKSI LOMPATAN (JUMP) Instruksi pengatur program utama, jump (JMP), memungkinkan programer untuk melompati sebuah bagian program dan bercabang ke suatu bagian memori lain menuju instruksi selanjutnya. Sebuah lompatan bersyarat memungkinkan programer untuk membuat keputusan berdasarkan pengetesan anggka. Hasil pengetesan angka ini disimpan dalam bit-bit flig, yang kemudian dites sengan instruksi lompatan bersysarat. Instruksi lain yang mirip dengan lompatan bersyarat adlah set bersyarat (Iconditional set), yang dijelaskan dengan instruksi lompatan bersyarat pada bagian ini. Pada bagian tulisan ini, semua instruksi lompatan digambarkan melalui penggunaannya pada contoh program. Selain itu, akan dibahas kembali instruksi LOOP dan LOOP bersyarat, yang telah diuraikan pada Bab 3, karena juga merupakan salah satu bentuk instruksi lompatan. NEXT

Opcode E B Disp Opcode E 9 Disp low Disp high Opcode E A IP Low IP High CS Low CS High GAMBAR 6-1 : Tiga bentuk utama instruksi JMP. Sebagai catatan, Disp adalah jarak atau nilai perpindahan bertanda (signad) 8-bit atau 16-bit. NEXT

LOMPATAN TIDAK BERSYARAT (JMP) Tiga jenis instruksi tidak ber syarat (lihat gambar 6-1) yang terdapat pada mikroprosesor adalah short jump (lompatan pendek), near jump (lompatan dekat), dan far jump (lompatan jauh).Short jump merupakan intruksi dua byte yang memungkinkan lompatan atau percabangan atau lokasi memori yang terletak antara +127 da -128 dari alamat sumber ke alamat yang dituju lompatan. Instruksi tiga byte near jump memungkinkan percabangan atau lompatan dalam area ±32K byte (atau dimanasaja dibagian program) dari instruksi yang sedang menjalankan kode program. Perlu diingat bahwa segmen secara alami bersifat siklus. Artinya, satu lokasi diatas alamat offset FFFFH adalah alamat offset OOOOH. Dengan alasan ini, jika anda melakukan lompatan dua nyte kedepan dalam memori dan pointer instruksi beralamat offset FFFFH, aliran program akan berlanjut kealamat offset OOO1H. Oleh karena itu,displacement ±32k byte memungkinkan sebuah lompatan kesembarang lokasi memori didalam segman kode tersebut. Terakahir, adlah intruksilima byte far jump yang memungkinkan sebuah lompatan kesembarang lokasi dalam sistem memori yang sebenarny. Short jump dan near jump bisa disebut lompatan intrasegman , dan far jump disebut lompatan intersegmen. NEXT

Gambar rangkaian short jump, near jump, dan far jump NEXT

TABEL 6-1 Instruksi Lompatan Bersyarat. Bahasa Assembley     TABEL 6-1 Instruksi Lompatan Bersyarat. Bahasa Assembley Kondisi yang Dites Operasi JA JAE JB JBE JC JE atau JZ JG JGE JL JLE JNC JNE atau JPO JNO JNS JNP atau JPO JO JP atau JPE JS JCXZ JECXZ Z = 0 dan C = 0 C = 0 C = 1 Z = 1 atau C = 1 C =1 Z = 1 Z = 0 dan S = O S = O S <> O Z = 1 atau S <> O Z = 0 O = 0 S = 0 P = 0 O = 1 P = 1 S = 1 CX = 0 ECX = 0 Lompat jika di atas Lompat jika diatas atau sama Lompat jika di bawah Lompat jika di bawah atau sama Lompat jika carry melakukan set Lompat jika sama atau lompat jika nol Lompat jika lebih besar Lompat jika lebih besar atau sama Lompat jika lebih kecil Lompat jika lebih kecil atau sama Lompat jika tak ada carry Lompat jika tak sama atau lompat jika tidak nol Lompat jika tak ada overflow Lompast jika tak ada sign Lompat jika tak ada paritas atau lompat jika paritas ganjil Lompat jika overflow melakukan set Lompat jika paritas diset atau lompat jika paritas genap Lompat jika sign diset Lompast jika CX adalah nol Lompat jika ECX adalah nol   NEXT

Contoh 6-6 ; A Procedure that searches a table of 100 bytes for 0AH. ;The address, TABLE, is transferred to the procedure ;thourgh the SI register. ; 0017 001A 001C 001D 001F 0020 0022 0023 0024 B9 0064 B0 0A FC F2/AE F9 E3 01 F8 C3 SCAN NOT _ PROC MOV CLD REPNE STC JCXZ CLC FOUND: RET ENDP NEAR CX. 100 AL. 0AH SCASBE NOT_FOUND ;load count of 100 ;load AL with 0AH ;select increment ;test 100 bytes for 0AH ;set carry for not found ;if not found ;clear carry if found ;return from procedure NEXT

Pengaturan Bit Flag Carry   Pengaturan Bit Flag Carry Flag carry (c)melambangkan carry atau borrow dalam penjumlahan dan penggurangan multiple-word/double word. Flag ini juga menandakan kesalahan (error) dalam prosedur. Ada tiga intruksi yang mengatur isi flag carry: STC (set carry), CLC(clear carry),dan CMC (complement carry). Karena flag carry jarang digunakan, kecuali pada penjumlahan dan penggurangan multiple-word, maka flag tersebut digunakan untuk keperluan lain. Manfaat utama flag carry adalah menandai kesalahan ketika kembali dari suatu prosedur.misalkan sebuah prosedur membaca data dari file memori disk. Operasi ini dapat dilakukan dengan sukses, atau malah terjadi kesalahan seperti file-not-found. Ketika kembali dari prosedur ini, jika C=1 maka terjadi kesalahan; jika C=0 maka tidak terjadi kersalahan. Kebanyakan prosedur DOS dan BIOS menggunakan flag carry untuk menandai kondisi kesalahan. WAIT Instruksi wait memonitor pin BUSY pada 8086 dan 80386 dan pin TEST pada 8086/8088. nama pin ini pada mikroprosesor 8086 diubah dari TEST menjadi BUSY. Jika instruksi WAIT dieksekusi ketika pin BUSY = 1 maka tidak terjadi apa-apa dan instruksi berikutnya dijalankan. Jika pin BUSY = 0 ketika instruksi WAIT dieksekusi maka mikroprosesor akan menunggu pin BUSY kembali ke logika 1. Pin ini menandakan keadaan sibuk (busy state) ketika berada pada level logika 0. Pin BUSY/TEST mikroprosesor biasanya dihubungkan dengan pin BUSY koprosesor numerik 8087 sampai 80387. koneksi ini membuat mikroprosesor menunggu sampai koprosesor menyelesaikan tugasnya. Karena koprosesor berada di dalam 80486 sampai Pentium 4, pin BUSY tidak ditemukan pada mikroprosesor jenis ini.     NEXT

  HLT Instruksi halt (HLT) menghentikan eksekusi perangkat lunak. Ada 3 cara untuk keluar dari halt : melalui sebuah instruksi dengan resep perangkat keras, atau dengan operasi DMA. Instruksi ini biasanya muncul pada program untuk menunggu interupsi. Seringkali dibuat sinkronisasi antara interupsi perangkat keras dengan sistem perangkat lunak. NOP Ketika mikroprosesor menjumpai instruksi no operation (NOP) maka hanya dibutuhkan sedikit waktu untuk melakukan eksekusi. Pada masa awal, sebelum perangkat pengembangan perangkat lunak ada, sebuah NOP yang menjalankan no operation sering dipakai untuk memberikan ruang dalam perangkat lunak bagi instruksi bahasa mesin mendatang. Jika anda mengembangkan bahasa mesin, yang sangat jarang sekali, direkomendasikan untuk menempatkan 10 atau juga NOP pada program anda dalam interval 50-byte. Hal ini akan berguna ketika anda membutuhkan penambahan instruksi pada tempat tersebut di masa yang akan datang. NOP juga digunakan untuk aplikasi waktu tunda (time delay), yaitu untuk menghabiskan waktu. Perlu disadari bahwa NOP yang digunakan untuk pewaktuan tidak terlalu akurat karena cache dan pipeline pada mikroprosesor modern. Prefiks LOCK Prefiks LOCK melampiri sebuah instruksi dan menyebabkan pin LOCK berlogika 0. Pin LOCK sering digunakan untuk menonaktifkan bus master eksternal atau komponen sistem. Prefiks LOCK menyebabkan pin LOCK diaktifkan selama selang waktu instruksi kuncian (locked). Jika terdapat lebih dari sebuah instruksi yang dikunci, pin LOCK akan tetap berada. Pada logika 0 selama selang waktu urutan intruksi LOCK:MOV AL,[SI] merupakan contoh instruksi kucian.     NEXT

  ESC Instruksi escape (ESC) menyalurkan informasi ke koprosesor numerik 8087-pentium 4. ketika instruksi ESC dieksekusi, mikroprosesor akan menyediakan alamat memori jika dibutuhkan, tetapi juga tetap melaksanakan NOP. Enam bitdalam instruksi ESC menyediakan opcode ke koprosesor dan mulai mengeksekusi instruksi. Opcode ESC tidak pernah terlihat dalam program sebagai ESC dan dianggap sebagai opcode yang usang. Sebagai penggantinya terdapat sekumpulan instruksi kopresesor (FLD,FST,FMUL dan lai-lain) yang di-assembly sebagai instruksi ESC untuk kopresesor. Penjelasan lebih lanjut ada pada Bab 13, yang menjelaskan koprosesor numerik 8087-pentium 4. BOUND Instruksi BOUND dibuat pertama kali untuk mikroprosesor 80186, merupakan instruksi perbandingan yang mungkin menyebabkan interupsi (tipe vector nomor 5). Instruksi ini membandingkan isi memori register 16-bit atau 32-bit dengan isi memori dua word atau double word: batas atas dan bawah. Jika nilai dalam register yang dibandingkan dengan memori tidak berada dalam batas atas dan bawah, interupsi tipe 5 terjadi. Akan tetapi, jika nilainya masih berada dalam batas maka instruksi berikutnay dalam program akan dieksekusi. Sebagai contoh, jika instruksi BOUND SI, DATA dieksekusi maka lokasi DATA berukuran word berisi batas bawah, dan lokasi DATA+2byte yang berukuran word berisi batas atas. Jika angka yang terdapat dalam SI lebih kecil dari lokasi memori DATA atau lebih besar dari lokasi memori DATA+2byte maka interupsi tipe 5 terjadi. Perlu diketahui bahwa insterupsi ini terjadi, alamat return menunjuk pada instruksi BOUND, bukan pada instruksi yang mengikuti BOUND. Ini berbeda dengan instruksi biasa, dimana alamat return menunjuk pada instruksi berikutnya dalam program.     NEXT

    ENTER dan LEAVE Instruksi enter dan leave, pertama dibuat untuk mikroprosesor 80186, digunakan dengan frame stack, dimana mekanismenya digunakan untuk mneneruskan parameter pada sebuah priosedur. Frame stack menyediakan area memori dinamis untuk prosedur dalam lingkungan multipengguna. Instruksi ENTER menciptakan sebuah frame stack dengan mem-push BP kedalam stack dan kemudian mengisi BP dengan alamat frame paling atas. Hal ini membuat frame menjadi variabel untuk di akses melalui register BP. Instruksi ENTER berisi dua operand; operand pertama menentukan jumlah byte yang dicadangkan untuk variabel pada frame stack dan operand kedua level prosedur. Misalkan instruksi ENTER 8,0 dieksekusi. Instruksi ini mengalokasikan 8 byte untuk frame stack dan angka 0 menentukan level 0. gambar 6-9 memperlihatkan frame stack yang dibuat oleh instruksi ini. Perlu diketahui bahwa instruksi ini menympan BP ke stack paling atas. Kemudian, instruksi itu mengurangi stack pointer dengan 8, meninggalkan 8 byte ruang memori untuk penyimpanan data temporer. Lokasi paling atas dari 8 byte area penyimpanan temporer ini dialamati oleh BP. Instruksi LEAVE mengembalikan proses ini dengan mengsi SP dan BP dengan nilai awal mereka.   NEXT

  Soal 1. Berikan contoh short jump, near jump, dan far jump dengan menggunakan gambar rangkaiannya! 2. Buatlah contoh dari instruksi bersyarat dan buatlah satu soal dari instruksi set bersyarat tersebut! 3. Apa perbedaan antara pengaturan bit Flag Carry, Wait, HLT, NOP, Prefiks Lock, ECS, Bound, enter dan leave dari materi pengaturan mesin serta instruksi miscellaneous!   NEXT

TUTUP Terima Kasih