Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Dasar pemrograman Mikroprosesor 8086

Presentasi serupa


Presentasi berjudul: "Dasar pemrograman Mikroprosesor 8086"— Transcript presentasi:

1 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 E4 INPUT dari 00101H 05 PORT 05H 00102H 04 ADD 00103H 07 07H 00104H E6 OUTPUT ke 00105H 02 PORT 02 NEXT

2 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

3 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 3 Moving 17 to CX bite Reg ADD [BX+SI+0005],AH 00 A 16+EA ADD AH to [BX+SI+0005] NEXT

4 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

5 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

6 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

7 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

8 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

9 (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

10 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

11 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

12 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

13 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

14 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

15 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 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

16 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

17 Soal : 1. Apa perbedaan yang mendasar antara bahasa mesin, dan bahasa assembly pada sistem mikroprosesor! 2. Sebutkan dan jelaskan 5 buah pengelompokkan perintah berdasarkan mode pengalamatan! 3. Jelaskan dengan contoh-contoh pemakaian dari buah pengelompokkan berdasarkan kategori! NEXT

18 TUTUP Terima Kasih


Download ppt "Dasar pemrograman Mikroprosesor 8086"

Presentasi serupa


Iklan oleh Google