Dasar pemrograman Mikroprosesor 8086

Slides:



Advertisements
Presentasi serupa
PERTEMUAN KE 5 OPERASI LOMPAT/JUMP.
Advertisements

Oleh: Anis Nurlaili W, MT
ASSEMBLER PERTEMUAN KE-1
Aplikasi dari program Mikroprosesor
BAB IV MODE PENGALAMATAN
Tipe-Tipe Instruksi MCS-51 (Arithmatika)
Bhakti Yudho Suprapto, MT
REGISTER Oleh : Oman Somantri, S.Kom
Dasar pemrograman Mikroprosesor 8086
ARSITEKTUR SET INSTRUKSI
PENGAMBILAN KEPUTUSAN
Mode Pengalamatan Mengatasi keterbatasan format instruksi
ADDRESSING MODES Penjelasan dan program lihat pada Pemograman Bahasa Assembly (Ilmu Komputer)
ARSITEKTUR SET INSTRUKSI
SET INSTRUKSI.
Johannes Simatupang, MKom, Cobit5-F NIDN :
REGISTER.
Mode Pengalamatan.
ARSITEKTUR INTERNAL MIKROPROSESOR 8086
1 Pertemuan 4 Mode Pengalamatan Matakuliah: T0483 / Bahasa Rakitan Tahun: 2005 Versi: 1.0.
EE-2623 Mikroprosesor & Antarmuka
SISTEM BILANGAN DAN REGISTER
Pointer. Karakteristik Operasi Assembly  Lebar data tujuan dan asal harus sama! Lebar data tidak sama => invalid opcode  Operasi 8bit disimpan pada.
Program Bahasa Rakitan dengan DEBUG.COM
Bahasa Mesin dan Assembly
Arsitektur Perangkat Lunak 8086
lnstruksi Aritmetika dan Logika
PENDAHULUAN Pembuatan perangkat lunak yang efisien untuk mikroprosesor membutuhkan pengenalan yang menyeluruh mengenai mode pengalamatan yang digunakan.
INSTRUKSI LOGIKA DASAR
Arsitektur Mikroprosessor 8086
Register.
Pertemuan 8 Instruksi Bahasa Rakitan 8088
1 Pertemuan 3 Komponen Sistem Komputer dan Register pada prosesor 8088 Matakuliah: T0483 / Bahasa Rakitan Tahun: 2005 Versi: versi 1.0 / revisi 1.0.
Pengenalan Assembler.
ARSITEKTUR SET INSTRUKSI
Set Instruksi:.
Program Bahasa Rakitan dengan DEBUG.COM
Aplikasi dari program Mikroprosesor
Dasar-Dasar Pemrograman Assembler
Mode Pengalamatan Mengatasi keterbatasan format instruksi
Stack Segment & Bahasa Assembly
Pertemuan III SET Instruksi.
ARSITEKTUR INTERNAL MIKROPROSESOR 8086
ARSITEKTUR INTERNAL MIKROPROSESOR 8086
MODE PENGALAMATAN DAN SET INSTRUKSI
Mode Pengalamatan.
SAP-2.
SAP-3.
INSTRUKSI PENGAMBIL KEPUTUSAN DAN STACK
ARSITEKTUR SET INSTRUKSI
REGISTER.
Mode Pengalamatan &Jenis-Jenis Instruksi
ORGANISASI & ARSITEKTUR KOMPUTER 2 SET INSTRUKSI IBP WIDJA, MT
Sistem Bilangan & REGISTER
Pengenalan Assembler.
FLOW CONTROL INSTRUTIONS
BAB III REGISTER 8088 Mikroprosesor 8088 berorientasi pada register
Set Instruksi:.
Mode Pengalamatan.
ARSITEKTUR SET INSTRUKSI
Mode Pengalamatan Mulyono.
OPERASI LOGIKA Mulyono.
INSTRUKSI PENGAMBIL KEPUTUSAN DAN STACK
Ilustrasi kinerja CPU.
ARSITEKTUR SET INSTRUKSI
Manipulasi Bit dan Logika
ARSITEKTUR INTERNAL MIKROPROSESOR 8086
INSTRUKSI PENGAMBIL KEPUTUSAN DAN STACK
ARSITEKTUR SET INSTRUKSI
Karakteristik Set Instruksi 14 JP. Karakteristik Set Instruksi Pengertian Set Instruksi Set instruksi adalah kumpulan dari instruksi yang dapat dijalankan.
Transcript presentasi:

Dasar pemrograman Mikroprosesor 8086 Bahasa Mesin : bahasa pemrograman dalam mikroprosesor bisa ditulis dalam bahasa mesin, dalam bentuk kode binary untuk memberi perintah pada mikro komputer. Contoh bahasa mesin sebagai berikut : Memory Address Isi (binary) Isi (hexadecimal) Operasi 00100H 11100100 E4 INPUT dari 00101H 00000101 05 PORT 05H 00102H 00000100 04 ADD 00103H 00000111 07 07H 00104H 11100110 E6 OUTPUT ke 00105H 00000010 02 PORT 02 NEXT

Binary tersebut membentuk program yang dinamakan bahasa mesin. Meskipun bahasa tersebut susah dimengerti, dan hampir mustahil bagi programmer untuk mengingat ribuan instruksi kode binary untuk masing-masing CPU. Sangat mungkin untuk menimbulkan error (kesalahan) untuk bekerja dengan kode binary yang berbentuk serial angka memanjang dari 0 dan 1 saja. Menggunakan bilangan Hexadecimal yang mewakili binary mungkin cukup membantu, namun tetap saja masih ada ribuan kode instruksi yang harus dihafalkan. Bahasa Assembly : untuk membuat program yang lebih simple, programmer biasa menuliskan program dalam bahasa assembly. Kemudian diterjemahkan ke dalam bahasa mesin, sehingga dapat di- load/muat ke dalam memory untuk di-run/eksekusi. Bahasa assembly menggunakan dua, tiga atau empat huruf MNEMONIC sebagai sarana membantu mengingat sesuatu. Huruf dalam bahasa mnemonic assembly biasanya merupakan kependekan dari kata-kata bahasa Inggris untuk mengoperasikan suatu perintah. Contoh Mnemonic dari SUB = SUBSTRACT (pengurangan) XOR = Exckusive OR (Boolean Logika) MOV = MOVE (mnemonic untuk menyalin data dari suatu lokasi ke lokasi lainnya) NEXT

Jenis-jenis perintah berdasarkan pemakaian byte : Dalam pemrograman Mikroprosesor dikenal beberapa perintah yang dibedakan berdasarkan banyaknya byte yang dipergunakan menjadi : Perintah satu byte Perintah dua byte Perintah tiga byte Perintah empat byte Contoh : Mnemonic Op-Code Byte Waktu (state) Operations AAA 37 1 4 Adjust AL, flags, AH MOV AL,04 BO 04 2 Moving 04h to AL 8 bites Reg MOV CX,17 89 0017 3 Moving 17 to CX 16 bite Reg ADD [BX+SI+0005],AH 00 A0 05 00 16+EA ADD AH to [BX+SI+0005] NEXT

Pengelompokkan perintah berdasarkan mode pengalamatan : Immediate Addressing (Pengalamatan Segera) Register Addressing (Pengalamatan Register) Direct Addressing (Pengalamatan Langsung) Indirect Addressing (Pengalamatan tak Langsung) Lainnya (Indexed, Based, Based and Indexed, String) 1. Immediate Addressing (Pengalamatan Segera) Mode pengalamatan segera memungkinkan pemprograman untuk memindahkan data tertentu ke suatu lokasi. Data yang akan dipindahkan ditentukan dalam perintah itu sendiri dan berupa data satu byte. Dengan mode ini sumber bukan sebuah register atau lokasi memori, melainkan data sebenarnya yang diisikan dalam urutan perintah itu sendiri. Sebagai contoh : MVI A, FEh Byte sumber Alamat tujuan Operasi Register A diisi dengan nilai FE, hexadecimal. Kalimat yang tepat adalah “Pindahkan segera FEh ke register A”. NEXT

Pasangan register 16-bit (BC, DE dan HL) dapat ditentukan sebagai alamat tujuan. Perintah seperti itu memerlukan 2 byte data segera. Contoh : LXI H, 802Dh. Perintah ini menyebabkan pasangan register HL dimuati dengan data segera 802Dh. Perintah tersebut memakai “H” untuk menyatakan pasangan HL. Hal ini merupakan standard bagi 8086. Pasangan BC dan DE bisa disebut B dan D saja. 2. Register Addressing (Pengalamatan Register) Pengalamatan register memindahkan data antar reg internal pada Mikroprosesor. Operand menentukan reg mana yang digunakan dalam pemindahan tersebut. Urutan operand menunjukkan reg mana sebagai sumber dan mana sebagai tujuan, contoh : MOV B, A Alamat sumber Alamat tujuan Operasi NEXT

Perintah ini menyebabkan isi reg A dipindahkan ke reg B. Setelah perintah dilaksanakan, isi reg A tidak berubah. MOV B,A biasa ditunjukkan dalam bentuk (A) : pindahkan isi reg A ke reg B 3. Direct Addressing (Pengalamatan Langsung) Pengalamatan segera seperti telah dijelaskan di atas, menggunakan lokasi dalam Direct Addressing (Pengalamatan Langsung). lokasi dalam CPU sebagai alamat sumber dan/atau alamat tujuan. Dengan pengalamatan langsung data dapat dibaca dari atau ditulis ke lokasi memory. Alamat lokasi memory ditentukan dalam perintahnya. Kemampuan untuk mengalamati lokasi penyimpanan mencakup seluruh lokasi memory. Pengalamatan langsung kadang-kadang disebut pengalamatan diperluas. Contohnya : LDA 20EAh Perintah ini menyebabkan reg A dimuati dengan isi lokasi memory dengan alamat 20EAh. Sebaliknya isi reg A dapat disimpan langsung di suatu lokasi memory. NEXT

Pasangan reg HL sering digunakan untuk menyimpan alamat memory 16 bit, untuk itu dua perintah disediakan untuk memungkinkan 2 reg H dan L dimuati dengan perintah tunggal melalui pengalamatan langsung. Contohnya : LHLD 20A2h Perintah ini mengisi reg L dengan isi lokasi memory 20A2h dengan reg H dimuati dengan isi dari lokasi berikutnya yaitu 20A3h yang dinyatakan sebagai : [L] [20A2h] [H] [20A3h] Meskipun detail yang diberikan disini berlaku untuk 8085, namun metode penyimpanan alamat dengan “byte rendah” di lokasi pertama dan “byte tinggi” di lokasi berikutnya berlaku cukup umum untuk beberapa keluarga Mikroprosesor. Pasangan tersebut adalah : SHLD 20AFh Atau menyimpan HL langsung di 20AFh : [20AFh] [L] [20BOh] [H] NEXT

4. Indirect Addressing (Pengalamatan Tidak Langsung) Pada pengalamatan langsung hanya reg A atau pasangan HL yang dapat digunakan untuk menyimpan atau memuat nilai ke dan dari memory. Jika nilai yang akan disimpan ke memory berasal dari reg B menggunakan pengalamatan langsung, maka pertama-tama perlu memindahkan isi reg B ke A. Kemudian operasi penyimpanan baru dapat dilakukan. Pengalamatan tak langsung menggunakan isi lokasi penyimpanan untuk menunjuk ke alamat yang dituju. Jika reg internal digunakan pada pengalamatan tak langsung, mode alamat dikatakan sebagai pengalamatan tak langsung register, yaitu operasi membaca data dari atau menulis data ke lokasi memory yang alamatnya disimpan di pasangan reg HL. Perintah tidak berisi alamat memory yang sebenarnya. Sebaliknya alamat disimpan dalam pasangan reg HL. Alamat yang sebenarnya diperoleh dengan cara tidak langsung melalui pasangan HL. Byte alamat orde tinggi dianggap berada di reg H. Dengan byte orde rendah di reg L. Isi pasangan reg HL menunjukkan alamat memory yang ditunjuk. ((HL)) Isi lokasi memory yang alamatnya ada di pasangan reg HL di bawa ke accumulator. NEXT

(Indexed, Based, Based and Indexed, String) Indexed Addressing 5. Pengalamatan Lainnya (Indexed, Based, Based and Indexed, String) Indexed Addressing Pengalamatan Index adalah alamat memory disimpan di reg index, ditambah bilangan dalam instruksi MOV AX,[SI + 06] Reg yang terlibat DS Ket : AL [SI+06]; AH [SI+07] Based Addressing Pengalamatan Based adalah alamat memori disimpan di reg BP atau BX ditambah bilangan dalam instruksi. MOV AX,[BP +02] Reg yang terlibat SS Ket : AL [BP+02]; AH [BP+03] JMP [BX +06] Reg yang terlibat BP Ket : IP [BX+06 : BP+07] Based and Indexed Addressing Pengalamatan Based and Index adalah alamat memory disimpan di reg BP atau BX ditambah reg Index. MOV AX,[BX + SI] Reg yang terlibat DS Ket : AL [BX+SI]; AH (BX+SI+01] NEXT

MOV SB Reg yang terlibat ES, DS Ket : [ES:DI] [DS:SI] String Addressing Pengalamatan String adalah pengalamatan memory dilakukan oleh dua buah segmen yang berbeda dengan offset reg index. MOV SB Reg yang terlibat ES, DS Ket : [ES:DI] [DS:SI] Pengelompokan berdasarkan kategori Perintah Transfer Data Perintah Aritmatika Perintah Logika Perintah Percabangan Perintah Geser dan Putar Perintah Bit Perintah I/O Lain-lain NEXT

1. Perintah Transfer Data Tipe instruksi untuk baca dan tulis data ke / dari register, adalah : Memori ke Register Contoh : MOV Reg,[Mem] MOV AX,[437AH] Register ke Memori Contoh : MOV [Mem],Reg MOV [BX],AX Register ke Register Contoh : MOV Reg,Reg MOV AX,BX Data ke Register Contoh : MOV Reg,data MOV AX,437AH 2. Perintah Aritmatika Contohnya : ADD, untuk menjumlahkan data baik 8 bit maupun 16 bit Untuk 8 bit Reg dengan reg ADD CL,BL Reg dengan data ADD AL,74H Reg dengan Mem ADD AL,[BX] NEXT

Reg dengan Mem ADD AX,[BX] ADC (Add With Carry) Untuk 16 bit Reg dengan reg ADD CX,BX Reg dengan data ADD AX,7401H Reg dengan Mem ADD AX,[BX] ADC (Add With Carry) Sama seperti ADD, hanya ditambahkan dengan flag Carry. Jika Carry bernilai 1, maka hasil penjumlahannya ditambah 1. SUB dan SUBC SUB adalah perintah untuk pengurangan. Cara kerjanya mirip dengan ADD dan ADC 3. Perintah Logika Yang termasuk perintah logika, yaitu : AND OR XOR Hasilnya akan mengubah juga flag register. Perintah ini sering digunakan untuk MASK suatu data. NEXT

Perintah percabangan ada 2 tipe (untuk beberapa macam Mikroprosesor termasuk Z-80), yaitu percabangan absolute dan percabangan relatif. Selain itu perintah JUMP bisa bergantung pada kondisi flag (Zero / Carry) dan ada yang tidak tergantung flag. Perintah JUMP yang tidak tergantung dari kondisi flag : JMP Perintah JUMP yang tergantung kondisi flag : JA / JNBE Loncat jika Above / Not Below or Equal JAE / JNB / JNC Loncat jika Above or Equal / Not Below / No Carry JB / JC / JNAE Loncat jika Below / Carry / Not Above or Equal JBE / JNA Loncat jika Below or Equal / Not Above JCXZ Loncat jika CX register berisi 0 JE / JZ Loncat jika Equal / Zero JG / JNLE Loncat jika Greater / Not Less Than or Equal JGE / JNL Loncat jika Greater than or Equal / Not Less JL / JNGE Loncat jika Less than / Not Greater or Equal JLE / JNG Loncat jika Less than or Equal / Not Greater Dll NEXT

Bagian utama Program JMLH POP BC POP AF RET Subrutin Salah satu bentuk pencabangan yang lain adalah Subrutin. Subrutin adalah program yang dipanggil oleh program lainnya. Cara memanggil Subrutin berbeda dengan cara memanggil lompatan, yaitu : bila Subrutin sudah dilaksanakan, maka komputer akan kembali melanjutkan program sebelumnya mulai dari tempat/alamat sebelum terjadinya pencabangan. Jadi pada panggilan subrutin, alamat instruksi selanjutnya (sebelum terjadi pencabangan program) sudah disimpan, dan CPU alamat ini agar bisa kembali ke program utama. Alamat kembali dan pelaksanaan lanjutan instruksi, disimpan dalam program utama, menggunakan mekanisme STACK dengan menggunakan metode LIFO (Lat In First Out). Operasi alih data dengan STACK, dilakukan dengan instruksi PUSH qq dan POP qq. Instruksi PUSH qq akan menempatkan isi register qq ke STACK. Kebalikan dari operasi PUSH qq adalah operasi POP qq, yang mana instruksi ini akan mengalihkan isi memori paling atas STACK ke register qq. Operasi PUSH qq digunakan untuk menyimpan isi berbagai register ke dalam STACK, apabila register-register ini hendak digunakan pada program subrutin yang dipanggil. Contoh : JMLH PUSH AF PUSH BC Bagian utama Program JMLH POP BC POP AF RET NEXT

5. Perintah Geser dan Putar Sebelum keluar dari subrutin JMLH, isi register BC dikembalikan ke situasi semula (oleh instruksi POP BC), dan isi dari register AF juga dikembalikan ke situasi semula ( oleh instruksi POP BC), dan isi register AF juga dikembalikan ke situasi semula oleh instruksi POP AF. Akhirnya, instruksi RET akan mengembalikan isi STACK dan program kembali ke program utama. 5. Perintah Geser dan Putar Perintah geser untuk menggeserkan isi-isi bit pada register tertentu ke arah kiri maupun kanan, contohnya : SAL / SHL, menggeser bit ke kiri dan meletakkan 0 pada LSB. CF MSB LSB 0 SAR, menggeser bit ke kanan dan MSB yang baru sama dengan MSB yang lama MSB MSB LSB CF Perintah putar untuk memutarkan isi-isi bit pada register tertentu ke arah kiri maupun kanan, contohnya : ROL, CF MSB LSB ROR, memutarkan bit ke kanan dan LSB ke MSB NEXT

Pada Mikroprosesor tertentu (Z-80) ada perintah bit, yaitu untuk mengetest data satu buah bit pada sebuah register, contohnya : BIT 2,B berfungsi untuk mengecek apakah bit ke 2 pada register B, bernilai satu atau nol. 7. Perintah I/O Berfungsi untuk mengakses data dari atau ke port, contoh : IN mengambil data dari port tertentu kje register OUT mengirimkan data dari register ke port tertentu 8. Lain-lain Selain kelompok perintah-perintah di atas, setiap prosesor memiliki banyak sekali perintah-perintah yang lainnya. NEXT