180 likes | 516 Views
NEXT. 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 :. NEXT.
E N D
NEXT 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 :
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 :
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). • Pengalamatan segera seperti telah dijelaskan di atas, menggunakan • 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 • 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 • 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 • 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 • 4. Perintah Percabangan • 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 • 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 • 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 • CF MSB LSB
NEXT • 6. Perintah Bit • 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.