DIKTAT
BAHASA RAKITAN
Riki Ruli S
Modul I dan II
Page 1
PERTEMUAN : 1 PENGENALAN BAHASA ASSEMBLY
Deskripsi singkat
: Dalam pertemuan ini akan dibahas mengenai pengenalan sistem
komputer dan bahasa assembly serta masalah-masalah yang dapat diselesaikan dengan bahasa assembly.
Tujuan Pembelajaran : 1. Dapat memahami fungsi dan konsep dua bidang ilmu yang berbeda yang memiliki hubungan yaitu perangkat keras (hardware) dan perangkat lunak (software). 2. Dapat memahami dan mampu menerangkan perbedaan antara bahasa pemrograman assembly mikrokontroler dan mikroprosesor.
1.1 Pengenalan Sistem Komputer Secara umum komputer terbagi atas dua macam ilmu yang berbeda. Pertama, perangkat keras (hardware). Bidang disiplin ilmu yang diperlukan adalah pengetahuan tentang ilmu Fisika atau elektronika. Kedua, perangkat lunak (software). Fungsinya adalah sebagai pengatur hardware. Tanpa software, komputer bukanlah suatu barang yang berguna, tetapi hanyalah sebuah benda yang tidak lebih berupa gabungan atau rakitan komponen-komponen dalam sebuah rangkaian yang saling terhubung. Dalam perangkat keras, komponen yang paling penting adalah mikroprosesor, selain komponen pendukung lainnya seperti memori, hardisk, DVD, dan lainnya. Mikroprosesor pertama di dunia adalah Intel 4004, yang merupakan mikroprosesor 4-bit sebuah kontroler yang bisa diprogram dalam sebuah chip. Mikroprosesor tersebut mampu mengalamati 4096 lokasi memori selebar 4-bit. Mikroprosesor 4004 hanya memiliki 45 instruksi. Mikroprosesor ini digunakan dalam sistem video game pertama dan sistem kontrol kecil berbasis mikroprosesor. Masalah utama mikroprosesor pertama ini adalah kecepatan, lebar word, dan ukuran memorynya. Evolusi mikroprosesor 4 bit berakhir adalah ketika Intel mengeluarkan 4040. Mikroprosesor 4040 beroperasi pada kecepatan yang lebih tinggi meskipun tidak ada peningkatan dalam hal lebar word dan ukuran memori. Walaupun terjadi evolusi, ada beberapa yang masih bertahan pada aplikasi tingkat rendah, seperti oven microwave dan sistem kontrol Modul I dan II
Page 2
kecil. Sampai saat ini ditahun 2012, prosesor canggih dari Intel adalah Intel Core i7 yang berisi lebih dari 700 jutaan transitor didalamnya dan dengan kecepatan orde gigahertz, disamping itu banyak yang membuat para kompatibelnya, seperti prosesor AMD. Mikroprosesor adalah piranti keras yang tidak akan bisa bekerja kalau tidak ada perangkat lunak. Inilah yang membedakan mikroprosesor dengan rangkaian digital diskrit. Kemampuannya untuk diprogram, dan diprogram ulang adalah suatu kelebihan didalam sistem mikroprosesor. Contohnya dalam suatu sistem pengendali lampu lalu lintas dengan rangkaian diskrit perlu menambahkan atau merubah rangkaian bila diperlukan perubahan sistem, tetapi dengan sistem mikroprosesor, bisa dilakukan dengan hanya merubah program. Perhatikan juga bahwa PC saat ini bisa multi fungsi dengan hanya mengganti programnya saja. Dalam perkembangannya, mikroprosesor dibuat menurut kebutuhan aplikasinya yang lebih spesifik, dalam hal ini menjadi beberapa jenis, yaitu; •
Mikoprosesor RISC (Reduced Instruction Set of Computing) dan CISC (Complex Instruction Set of Computing). Jenis ini yang digunakan untuk pengolahan informasi dengan software yang rumit dan digunakan untuk kebanyakan PC saat ini.
•
Pengolah Sinyal Digital – DSP (Digital Signal Processor). Memiliki software dan hardware yang ditujukan untuk mempermudah memproses sinyal-sinyal digital. Digunakan pada perangkat audio – video modern seperti VCD, DVD, home teater dan juga pada card-card multimedia di komputer. Mikroprosesor dapat bekerja karena didalamnya terdapat bahasa-bahasa mesin (machine
languages) yang telah "dimasukkan" terlebih dahulu ke dalam memory sistem rangkaian berbasis mikroprosesor itu. Di dalam sebuah mikroprosesor, paling tidak terdiri dari rangkaianrangkaian digital: memory/register, pengolah logika aritmatika, rangkaian kontrol operasi sekuensial.
Modul I dan II
Page 3
Gambar 1.1 Skema Mikroprosesor
Mikrokontroler adalah salah satu bagian dasar dari suatu sistem komputer. Meskipun berbentuk jauh lebih kecil daripada personal komputer (PC) dan mainframe, mikrokontroler dibangun dari elemen-elemen dasar yang sama. Secara sederhana, komputer akan menghasilkan keluaran spesifik berdasarkan masukan yang diterima dan program yang dikerjakan. Seperti umumnya komputer, mikrokontroler adalah alat yang mengerjakan instruksi-instruksi yang diberikan kepadanya. Tahun 1976 Intel meluncurkan mikrokontroler pertama yang disebut seri MCS-48 yang berisi lebih dari 17.000 transistor, hingga saat ini seri ini masih digunakan untuk aplikasi khusus. Mikrokontroler, adalah mikroprosesor yang dikhususkan untuk instrumentasi dan kendali. Contoh aplikasi pada kendali motor, berperan seperti PLC (Programmable Logic Controller), pengaturan pengapian dan injeksi bahan bakar pada kendaraan bermotor atau alat mengukur suatu besaran, seperti suhu, tekanan, kelembaban dan lain-lain. Sebagaimana dijelaskan diatas, mikrokontroler adalah pengembangan dari mikroprosesor untuk keperluan instrumentasi ‘sederhana’, misalnya untuk pengaturan motor, pengaturan permukaan cairan, pengukuran suhu, pH, konduktifitas, aplikasi PLC sederhana dan semacamnya. Mikrokontroler adalah suatu chip yang dibuat dengan ciri-ciri kekhasannya, biasanya adalah ; •
Memiliki memory internal relatif sedikit.
•
Memiliki unit I/O langsung
•
Pemroses bit, selain byte
•
Memiliki perintah / program yang langsung berhubungan dengan I/O
•
Program relatif sederhana.
Modul I dan II
Page 4
•
Beberapa varian memiliki memori yang tidak hilang bila catu padam didalamnya untuk menyimpan program
Sedangkan dalam hal aplikasi, sistem mikokontroler memiliki karakteristik sebagai berikut; •
Memiliki program khusus yang disimpan dalam memori untuk aplikasi tertentu, tidak seperti PC yang multifungsi karena mudahnya memasukan program. Program mikrokontroler relatif lebih kecil daripada program-program pada PC.
•
Konsumsi daya kecil.
•
Rangkaian sederhana dan kompak
•
Murah, karena komponen sedikit
•
Unit I/O yang sederhana, misalnya keypad, LCD, LED, Latch.
Lebih tahan terhadap kondisi lingkungan ekstrem misalnya temperatur, tekanan, kelembaban dan sebagainya.
Gambar 1.2 Struktur Sistem Komputer
1.2 Bahasa Assembly Bahasa assembly diprakarsai oleh IBM pada tahun 1956-1963. Bahasa assembly termasuk bahasa tingkat rendah (low level language). Pada tahun 1957, sebuah tim yang dipimpin oleh John W. Backus berhasil mengembangkan sebuah bahasa baru yang lebih mengarah pada Modul I dan II
Page 5
keperluan untuk menganalisis persoalan numeric. Bahasa assembly disebut bahasa level-bawah karena dalam struktur dan fungsi dekat dengan bahasa mesin. Sebaliknya, bahasa tingkat tingggi seperti Pascal, Basic, Fortran, Cobol, C/C++, JAVA mempunyai perintah-perintah yang handal yang diterjemahkan ke dalam berbagai instruksi mesin oleh kompiler. Ekstensi yang dihasilkan dari bahasa assembly adalah file dengan ekstensi COM dan EXE. Secara umum kedua jenis file tersebut memiliki perbedaan antara program yang berkestensi COM dan EXE, yang merupakan ukuran luas daerah yang menyebabkan kelainan pemrograman dalam assembler. Bahasa assembly adalah bahasa pemrograman dengan korespondensi satu-satu antara perintah-perintah/pernyataannya dan bahasa mesin komputer. Bahasa assembly tidak satu jenis sebagaimana CPU komputer pun bermacam-macam. Setiap bahasa assembly secara langsung dipengaruhi oleh set instruksi mesin komputer dan arsitektur perangkat keras. Secara singkat, bahasa assembly IBM-PC mengacu pada istruksi-instruksi yang dikenali oleh keluarga mikroprosesor Intel 8086-80486. Assembler adalah program yang mengkonversi kode program sumber ke dalam bahasa mesin. Pada tulisan ini akan mengacu pada assembler yang membuat instruksi mesin untuk mikrokomputer IBM yang sesuai. Semua kompter tersebut menggunakan mikroprosesor keluarga intel, mulai dari intel 8088 sampai 80486. Program akan berjalan dibawah sistem operasi PC-DOS/MS-DOS versi 3.0 atau lebih tinggi. Terdapat dua assembler yang dikenal baik untuk IBM-PC yaitu MASM (Microsoft Assembler) dan TASM (Turbo Assembler). Bahasa assembly adalah kumpulan instruksi yang spesifik untuk sistem komputer tertentu. Assembler adalah program yang menerjemahkan program yang ditulis dalam bahasa assembly ke dalam bahasa mesin, yang dapat dieksekusi oleh komputer. Setiap tipe komputer memiliki bahasa assembly yang berbeda, karena rancangan komputer mempengaruhi instruksi yang dapat dieksekusi.
1.3 Elemen Bahasa Assembly Seiring dengan perkembangan mikroprosesor yang telah disebutkan pada penjelasan sebelumnya. Pemrograman assembly juga berkembang mulai dari tasm 1.9, 2.0, hingga 5.01 yang bisa digunakan untuk meng-compile hingga 32 bit, sedangkan untuk 64 bit bisa digunakan
Modul I dan II
Page 6
FAsm (Fast Assembler), pada saat dicompiler menjadi file ekesekusi yang dikonversi menjadi 32 bit. Semua itu tergantung pada linker (yang mengubah file obj menjadi file COM ataupun EXE). Bahasa assembly dikategorikan sebagai bahasa tingkat rendah (low level language). Hal itu untuk menggambarkan kekhususannya sebagai bahasa yang berorientasi pada machine dependent. Ciri dari perbedaan antara bahasa assembly dan bahasa mesin, bahasa assembly merupakan representasi teks dari bahasa mesin, yang dimana satu statement merepresentasikan satu instruksi mesin dan sebagai lapisan inti antara program bahasa tingkat tinggu dan kode mesin. Sedangkan bahasa mesin merupakan bahasa alamiah/ibu dari sebuah sistem komputer dengan instruksi dalam words (kata) di lakukan dengan beberapa set intruksi yang direpresentasikan dalam bit ke operasi mesin yang akan dieksekusi oleh hardware.
Gambar 1.3 Level Bahasa Sistem Komputer
Modul I dan II
Page 7
A p p l i cat i o n s High Level Language Low Level language Hardware Assembly Language C,VB,JAVA Word, Excel,Photoshop Gambar 1.4 Komputer Architecture Languages
Dalam bahasa assembly program sumbernya menganut prinsip 1 baris untuk satu perintah, setiap baris perintah tersebut bisa terdiri atas beberapa bagian, yaitu bagian label, bagian mnemonic, dan bagian operan yang bisa lebih dari satu. Label mewakili nomor memori program dari instruksi pada baris yang bersangkutan, misal pada saat menulis JUMP, label ini ditulis pada bagian operand untuk menyatakan nomor memori program yang dituju. Dengan demikian label selalu mewakili nomor memori program dan harus ditulis di bagian awal baris instruksi. Selain label dikenal pula symbol, yakni satu nama yang mewakili satu nilai tertentu dan nilai yang diwakili bisa apa saja tidak harus nomor memori program. Cara penulisan simbol sama dengan penulisan label, harus dimulai di huruf pertama dari baris instruksi. Pada penulisan di bahasa assembly, menggunakan dengan istilah mnemonic code. Mnemonic code merupakan kode alphabet pendek yang membantu memori dalam mengingat suatu instruksi CPU. Mnemonic merupakan singkatan perintah, dikenal dua macam mnemonic, yakni mnemonic yang dipakai sebagai instruksi mengendalikan prosesor, misalnya ADD, MOV, DJNZ dan lainnya. Ada pula mnemonic yang dipakai untuk mengatur kerja dari program assembly misalnya ORG, EQU atau DB, mnemonic untuk mengatur kerja dari program assembly ini dinamakan sebagai “assembly directive”. Dapat berupa: instruksi atau directive instruksi atau
Modul I dan II
Page 8
directive. Contoh dalam penulisan instruksi : mov (Move), int (Interrupt), sedangkan pada directive : DB (Define Byte), ORG Operand adalah bagian yang letaknya di belakang bagian mnemonic, merupakan pelengkap bagi mnemonic. Kalau sebuah instruksi diibaratkan sebagai kalimat perintah, maka mnemonic merupakan subjek (kata kerja) dan operan merupakan objek (kata benda) dari kalimat perintah tersebut. Sebuah instruksi bisa berisi nol, satu atau dua operand Sebuah Operand bisa berupa: register, variabel memori, atau immediate value Contoh: 10
(immediate value)
count (variabel memori) AX
(register)
Komentar digunakan untuk menjelaskan maksud sekumpulan baris program atau satu baris program, setiap komentar didahului oleh tanda titik koma (;). Komentar tidak dirakit ke dalam bahasa mesin. Berikut ini contoh program menggunakan emu8086. name "Coba" ; Program menampilkan Latihan org 100h ; set segment register: mov
ax, 0b800h
mov
ds, ax
; print program "Latihan" mov [02h], 'L' mov [04h], 'a' mov [06h], 't' mov [08h], 'i' mov [0ah], 'h' mov [0ch], 'a' mov [0eh], 'n' mov [10h], '-' mov [12h], 'S' mov [14h], 'a' mov [16h], 't' mov [18h], 'u'
Modul I dan II
Page 9
mov cx, 12
; number of characters.
mov di, 03h ; start from byte after 'h' mov ah, 0 int 16h
Modul I dan II
Page 10
Gambar 1.5 Program menggunakan Emulator 8086
Judul (name) akan memulai suatu program bahasa assembly. Pada judul fungsinya secara umum akan sesuai dengan bagaimana suatu program dihasilkan. Fungsi beberapa pengarah yang digunakan pada program di atas dapat dijelaskan sebagai berikut: NAME merupakan nama program yang akan dibuat. ORG singkatan dari originate untuk menentukan alamat awal suatu blok dalam program baik untuk blok data maupun blok perintah. Tubuh program dapat saja mengandungi label, mnemonik, operan, komentar dan pengarah. Secara umum susunan perintah pada tubuh program dalam satu baris adalah sebagai berikut: Label : MNEMONIK Operan ; Komentar Label akan dinyatakan apabila baris program akan menjadi tempat lompatan dari baris program lain. Label dituliskan sebagaimana adanya suatu pengenal dan dapat dinyatakan sesuai maksud lompatan dan diakhiri dengan titik dua (:). Mnemonik adalah sekumpulan huruf yang terdiri dari dua sampai lebih, singkatan yang mewakili dari maksud perintah dinyatakan, misalnya MOV disingkat dari MOVE yang berarti pemindahan nilai, yaitu MOV AH,02h berarti AH=02h. Mnemonik dapat saja memerlukan operan, dan kadangkala lebih dari dua operan. Mnemonik berlaku khusus, seperti INT disingkat dari interrupt yang diartikan sela/jeda, merupakan pemanggilan perangkat keras yang dihasilkan secara eksternal Modul I dan II
Page 11
dari sinyal perangkat keras atau pemanggilan perangkat lunak secara internal dari pelaksanaan perintah atau dengan peristiwa lain. INT berasal dari BIOS (basic input-output system) dan SO (sistem operasi), misalnya INT 16h dan INT 20h berasal dari SO yang masing-masing berfungsi dan mempunyai ketentutan sendiri, yaitu INT 21h Layanan 16h Fungsi : Untuk menampilkan untaian karakter yang diakhiri $. Masukan : AH = 02h DS:DX = alamat untaian INT 20h Fungsi : Untuk kembali ke prompt sistem operasi Masukan : Operan mengandungi nilai-nilai dengan mana pengoperasian perintah mnemonik didahulukan. Sedikit saja perintah yang tidak memerlukan operan, dan kebanyakan pula perintah memerlukan dua operan. Jika demikian, operan pertama disebut tujuan (destination), sedangkan operan kedua (jika ada) disebut sumber (source). Operan mengambil banyak bentuk yang berbeda sesuai dengan kebutuhan dan syarat-syarat penggunaannya, misalnya MOV memerlukan dua operan, yaitu AH dan 09h, yang tidak lain berupa salah satu register dan data (nilai) langsung. Sedangkan MOV DX, OFFSET Pesan berlaku cara berbeda, dengan mana operan sumber menggunakan pengarah untuk menunjuk alamat untaian karakter yang diwakili oleh peubah Pesan. Register adalah salah satu operan, yang berasal dari sistem komputer. Untuk melakukan suatu pekerjaan, pengolah mikro (microprocessor) menggunakan register sebagai tempat pengolahannya. Register dikategorikan menjadi dua bagian: register serbaguna dan register khusus. Register serba guna (general-puspose register) atau disingkat register umum terdiri dari empat register yaitu accumulator (A), base (B), count (C), dan data (D), dan masing-masing diberi akhiran X bila berukuran 16-bit: AX, BX, CX dan DX. Kemudian, masing-masing juga dapat dibagi menjadi dua, sebagai register 8- bit, dan diberi akhiran H dan L untuk menandakan high dan low: AH, AL, BH, BL, CH, CL, DH dan DL. Untuk pengolah Intel yang terbaru dengan menggunakan register 32-bit masing-masing diberi tambahan awalan E (extended): EAX, EBX, ECX dan EDX. Modul I dan II
Page 12
Register khusus terdiri dari register cetakan (offset) yang berfungsi menunjuk alamat memori per 16-bit atau 32-bit, register penggal (segment) yang berfungsi menunjuk alamat blok memori, dan register bendera yang bertugas khusus sebagai rujukan kendali beberapa pernyataan. Semua ini akan dibicarakan secara lebih luas pada bab-bab berikutnya.
Modul I dan II
Page 13