Bahasa Mesin dan Assembly v Bahasa Mesin v
Bahasa Mesin dan Assembly v Bahasa Mesin v Assembly Oleh : Oman Somantri, S. Kom Email : oman_mantri@yahoo. com POLITEKNIK HB D 3 TEKNIK KOMPUTER TEGAL @2012
Bahasa Mesin Instruksi yang difetch dari memori untuk kemudian diseksekusi oleh mikroprosesor berformat biner (kombinasi angka 0 dan 1), yang disebut bahasa mesin. Sebagai contoh, Perintah untuk memindahkan data dalam register BX ke register CX adalah 10001011 11001011 ($8 B CB), sedangkan bahasa mesin untuk menjumlahkan data dalam register AL dengan angka 7 adalah 00000100 00000111 ($04 07), dan perintah membaca dari port 5 diberikan dengan 11100100 00000101 ($E 4 05).
Bahasa mesin tidak mudah untuk dimengerti dan dihapalkan oleh seorang programer, apalagi jumlah instruksi yang tersedia berkisar ribuan perintah. Disamping itu, akan mudah sekali terjadi kesalahan ketika menuliskan angka-angka biner yang tersusun atas angka 0 dan 1 yang banyak sekali. Oleh karena itu biasanya kita tidak memprogram komputer langsung dalam bahasa mesin, namun dalam bahasa assembly. Dalam bahasa assembly, setiap instruksi diberi kata (mnemonic) yang sesuai dengan maksud perintah itu, sehingga dapat membantu pemrogram dalam mengingat instruksi kepada mikroprosesor tersebut. Kata yang dipakai biasanya berupa singkatan atau beberapa huruf awal dari kata dalam bahasa Inggris untuk perintah tersebut.
Secara umum instruksi mikroprosesor dikelompokkan menjadi :
Dasar Pemrograman Assembly • Istilah dalam pemrograman Assembly • Mode Pengalamatan – Immediate, Register, Langsung, Tak Langsung, Indeks • Pembagian Instruksi – Transfer, Aritmatik dan Logic, Percabangan, Pemanggilan, Input-Output
Istilah dalam pemrograman Assembly • Memory, I/O, port, alamat, data, register, instruksi, mnemonic, opcode, operand, komentar • Kode mesin, bahasa assembly • Assembler, Compiler • Style penulisan Program Assembly, Kode mesin, Listing program
Register • Berada dalam CPU (Mikroprosesor) • Digunakan untuk menyimpan data selama proses/program/sub program berjalan • Bersifat sementara – Umumnya selama dalam sub program • Cepat • Memerlukan kode instruksi yang pendek • Memiliki/menggunakan nama tertentu
Ilustrasi Beberapa Perintah • • LD LD A, B A, 20 H A, (8000 H) A, (HL) 78 3 E 20 3 A 00 80 7 E (M 1, 4 T) (M 1 -M 2, 7 T) (M 1 -M 2 -M 3 -M 4, 13 T) (M 1 -M 2, 7 T)
Memory • Berada di luar CPU, harus ada – CPU hanya dapat memproses dari memory • Digunakan untuk menyimpan program dan data • Bersifat permanen atau sementara • Jumlah atau ukurannya besar/banyak, jauh lebih banyak dari register • Lebih lambat dari CPU atau register • Memerlukan kode instruksi yang lebih panjang • Memiliki/menggunakan data/alamat memory
I/O • Berada di luar CPU • Harus ada kalau ingin berhubungan antara sistem mikro dengan dunia luar • Tidak bersifat menyimpan data, hanya melewatkan data – Khusus untuk port output, terkadang dilengkapi dengan fungsi latch • Kapasitas terbatas (lebih kecil dari memory) • Lebih lambat dari CPU, register, memory • Menggunakan alamat port
Alamat • Register dinyatakan dengan nama, sedangkan memory dan port dinyatakan dengan alamat • Alamat menyatakan – Posisi dari data yang disimpan pada memory – Saluran dari port dimana data akan disalurkan • Untuk 8086 – Alamat memory berkisar 00000 H s/d FFFFFH – Alamat port berkisar 00 H s/d FFH
Data • Menyatakan sesuatu yang disimpan/diproses/disalurkan, baik berupa suatu nilai atau kode program • Dapat disimpan di register atau memory – Terkadang port output juga bisa menyimpan • Dalam 8086, data yang diproses dalam bentuk satuan 8 bit (1 byte) dengan nilai 0 s/d 255 – Ada proses/penyimpanan yang melibatkan data 16 bit
Kode Mesin • Program yang umumnya ditulis dalam bentuk kode Hexa • Merupakan kode yang dimengerti oleh mesin (CPU) • Terdiri dari alamat dan kode instruksi (data-data berupa program yang tersimpan di memory) • Contoh : 0100 0102 3 E 20 DD 21 8000 Alamat Kode Mesin
Opcode • Suatu kata atau tulisan atau simbol untuk menggantikan satu instruksi kode mesin • Digunakan dalam pemrograman assembly • Contoh : – LD – ADD – SUB Load (isi, transfer, simpan, ambil) Jumlahkan Kurangkan
Operand • Sesuatu yang dioperasikan • Dapat berupa register, data atau alamat memory atau I/O • Contoh : – A, B – B, 20 H – A, (2000 H) register dengan data 8 bit register dengan alamat 16 bit
Catatan Operand • Ada empat jenis cara menuliskan operand – Data langsung (8 bit atau 16 bit atau label) • 80 H, 2000 H, CW, Data. Motor – Register (8 bit atau 16 bit) • A, B, C, BC, DE, HL, IX – Alamat langsung (alamat 8 bit, 16 bit atau label) • (80 H), (8000 H), (2000 H), (Buffer) – Alamat dari register (alamat tidak langsung) • (C), (HL), (IX)
Arah Operand • LD A, B ; A B, atau A = B – Salin data dari B ke A • ADD A, B ; A A + B, A = A + B – Jumlahkan A dengan B dan simpan di A
Mana yang Salah ? • • LD LD A, C A, HL A, (DE) BC, 0 DE, 8000 H A, 2000 H HL, (8000 H) A, (8000 H)
Mnemonic • Menyatakan satu perintah tunggal, termasuk format data atau sesuatu yang dioperasikan oleh data tersebut • Terdiri dari opcode dan operand (data, register, memory atau port) • Contoh : – LD – ADD – LD r, n A, r r, r’
Singkatan pada Operand • • r n nn d register 8 bit data 16 bit displacement (pergeseran 8 bit)
Instruksi • Menyatakan satu perintah/program tunggal • Terdiri dari Opcode dan Operand • Contoh : – LD – IN A, 30 H B, A A, (81 H) Masukkan 30 H ke A Masukkan/salin A ke B Baca port 81 H ke A
Label • Suatu tulisan yang digunakan untuk menunjukkan posisi dari suatu instruksi • Digunakan untuk menggantikan alamat pada penulisan bahasa assembly • Terkadang label dapat digunakan sebagai data • Nilai sesungguhnya dari label tidak dapat diketahui sebelum semua program selesai dan diterjemahkan ke dalam kode mesin • Ditandai dengan titik dua setelah nama label
Contoh Label Start: LD Tabel: B, 20 H LD HL, Tabel JP (HL) … LD A, 10 H ADD A, B … JP Start
Komentar • Suatu tulisan selain instruksi yang digunakan untuk menjelaskan program • Seharusnya selalu ada, mengingat pemrograman assembly lebih sulit untuk dibaca • Sebagai dokumentasi • Harus diawali dengan titik koma (; ) • Contoh : – LD – CALL A, 32 LCD ; Siapkan data SPASI ke Reg. A ; Tampilkan ke LCD
Bahasa Assembly • Bahasa Assembly adalah bahasa yang dirakit/dibuat untuk menggantikan kode mesin yang sulit untuk dibaca/dihafalkan/dimengerti/ditulis • Terdiri dari Label, Opcode, Operand dan komentar • Contoh : Mulai: LD SP, 0 LD B, 0 DJNZ $ ; Posisi awal STACK ; Tunggu sesaat ; dengan cara loop 256 x
Assembler • Assembler adalah Suatu program yang digunakan untuk menterjemahkan, atau lebih tepat mengubah dari bahasa assembly ke dalam kode mesin • Jika suatu komputer dengan prosesor tertentu digunakan untuk menterjemahkan kode dari prosesor lain, maka assembler tersebut dinamakan “Cross Assembler”
Prinsip Kerja Assembler • Secara umum, proses assembly dibagi dua tahap – Pass 1 • Mencatat simbol-simbol, pengenal (identifier), label dan lainnya • Mengurutkan kode mesin untuk mengetahui alokasi alamat atau label-label yang ada – Pass 2 • Penterjemahan instruksi demi instruksi program assembly berdasarkan mnemonic dan identifier yang digunakan
Compiler • Suatu program yang digunakan untuk menterjemahkan, menyusun, menggabungkan dari bahasa tingkat tinggi/menengah ke dalam kode mesin • Jika suatu komputer dengan prosesor tertentu digunakan untuk menterjemahkan kode dari prosesor lain, maka assembler tersebut dinamakan “Cross Compiler”
Style penulisan Program • Kode mesin 0000 3 E 30 0002 06 00 4 0 E 20 ; Masukkan 30 H ke Reg. A ; Masukkan 0 H ke Reg. B ; Masukkan 20 H ke Reg. C • Assembly Start: LD LD LD • Listing program A, 30 H B, 0 C, 32 ; Masukkan 30 H ke Reg. A ; Masukkan 0 H ke Reg. B ; Masukkan 20 H ke Reg. C
Contoh Format Listing Program Alamat Data/Kode 0000 3 E 30 ; Mulai 0002 06 00 0004 0 E 20 0006 D 3 80 0008 DB 81 000 A 31 0000 000 D … Label Opc Operand Start: LD LD … Komentar A, 30 H LD B, 0 LD C, 32 OUT (80 H), A IN A, (81 H) SP, 0000 H
Assembler Directive • Perintah-perintah tambahan yang disertakan dalam program assembly, tetapi bukan bagian dari perintah assembly • Digunakan untuk memberitahukan assembler mengenai apa yang harus dilakukan • Sangat membantu dalam pembuatan program assembly
Contoh Assembler Directive • ORG Origin – Penentuan alamat program • EQU Equal – Membuat suatu identifier, atau konstanta • DEFB Define Byte – Meletakkan data Byte ke dalam program • DEFM Define Memory – Meletakkan beberapa data Byte dalam program • DEFS Define Storage – Memesan tempat kosong dalam memory
Contoh Program Simpan 9000 H Data Start: 20 H A Nilai: 8000 H EQU 9000 H EQU ORG LD LD 20 H 0 H A, Data (Simpan), A ; Data = 20 H ; Alamat 0000 H LD LD A, (Nilai) (Buffer), A ; A [Nilai] ; [Buffer] HALT ; DEFB 30 H ORG 8000 H ; Simpan = ; [9000 H] ; [Nilai] 30 H ; Alamat
Contoh Kasus • Isi register A dengan 20 H dan register B dengan 30 H • Tukar isi kedua register • Tugas 1. 2. 3. 4. Buat ilustrasi proses transfer data Buat program assembly-nya Buat kode mesinnya Susun dalam bentuk listing program yang dimulai dari alamat 0000 H
Referensi Kode Mesin LD
Instruksi yang digunakan LD LD LD A, n B, n C, n A, C C, A B, C C, B A, B D, A C, D 3 E nn 06 nn 0 E nn 79
Ilustrasi Proses, Assembly dan Kode Mesin 20 H 30 H A 20 H B 30 H C 20 H A 30 H B 20 H LD A, 20 H 3 E 20 H LD B, 30 H 06 30 H LD C, A 4 F LD A, B 78 LD B, C 41 HALT 76
Listing Program Pertukaran A-B 0000 0002 0004 0005 0006 0007 3 E 20 06 30 4 F 78 41 76 ORG 0000 H ; … START: LD A, 20 H LD B, 30 H LD C, A LD A, B LD B, C HALT ; … ; …
Latihan • Buat listing program (program assembly beserta kode mesinnya) untuk menukarkan isi dari register A dan B dan menyimpan hasil penjumlahan keduanya ke register C • Gunakan nilai awal A = 10 H dan B = 20 H dengan alamat awal program di 0100 H • Gunakan beberapa instruksi yang ada • Hasil akhir seharusnya A = 20 H, B = 10 H dan C = 30 H • Untuk memudahkan, buat algoritma atau ilustrasi penyimpanan register
Ilustrasi Proses Data 10 H 20 H A 10 H B 20 H C 20 H D 20 H B 10 H + + A 30 H D 00 H C 00 H A 20 H
Contoh Program Assembly Mulai: ORG LD LD ADD LD LD LD HALT 0100 H C, B B, A A, C D, A A, C C, D Mulai: ORG LD LD ADD LD LD HALT 0100 H D, B B, A A, D C, A A, D
SEKIAN TERIMA KASIH
- Slides: 46