Wednesday, March 30, 2011

CONTOH TUGAS KULIAH BAHASA ASSEMBLY

Pengenalan Bahasa Assembly

Oleh:
I WAYAN ALAN OKTA KUMARA (0905031001) 
I DW. NYM. NARAYANA PRASADA (0905031002) 



JURUSAN D3 TEKNIK ELEKTRONIKA
 FAKULTAS TEKNIK DAN KEJURUAN
 UNIVERSITAS PENDIDIKAN GANESHA
 2011 

DAFTAR ISI 
Halaman Kata Pengantar…………………………………………………………………………. i 
Daftar Isi………………………………………………………………………………... ii 
BAB I PENDAHULUAN 1.1. 
Latar Belakang……………………………………………………………. 1 
1.2. Rumusan Masalah………………………………………………………… 1 
1.3. Tujuan Penulisan………………………………………………………….. 1 
1.4. Manfaat Penulisan………………………………………………………… 1 
BAB II PEMBAHASAN 
2.1. SEKILAS BAHASA ASSEMBLY………….………………………….... 3 
2.2. REPRESENTASI DATA…………………...…………………………….. 4 
2.3. ELEMEN DASAR BAHASA ASSEMBLY……………………………... 15 
2.4. CONTOH PROGRAM HELLO…………………………………………. 21 
BAB III PENUTUP 
3.1. Kesimpulan………………………………………………………………….. 23 
DAFTAR PUSTAKA


KATA PENGANTAR 
Dalam Makalah berjudul “ PENGENALAN BAHASA ASSEMBLY” ini membahas mulai pengertian bahasa assembly, assembler, representasi data, system dan konversi bilangan,dan elemen dasar bahasa assembly.. Makalah ini disusun berdasarkan kebutuhan untuk mempermudah pemahaman dan pembelajaran pemrograman bahasa assembly. Harapan penulis, dengan membaca makalah ini dapat menambah pengetahuan mengenai motherboard dan mampu memilih motherboard yang sesuai dengan kemampuan CPU tertentu Penulis menyadari dalam makalah ini masih banyak kesalahan dan kekurangannya. Baik dari ejaan, kata, maupun cara penyampaian yang kurang sempurna. Namun demikian penulis berharap , makalah ini dapat bermanfaat. 
Singaraja, maret 2011 

penulis 


BAB I PENDAHULUAN 
1.1. Latar Belakang
Bahasa assembly adalah bahasa pemrograman mendasar yang sangat dekat dengan mesin. Konsep perangkat keras dan perangkat lunak dapat dijelaskan secara konstektual dengan memahami bahasa assembly. Disini akan dijelaskan bagaimana perangkat keras computer dan sistem operasi bekerja sama dan bagaimana program aplikasi berkomunikasi dengan system operasi. Untuk memahami keseluruhan computer dan system informasinya, seseorang perlu memahami perangkat lunak pada berbagai level. Level pertama adalah program aplikasi. Dalam level ini program berinteraksi dengan DOS. Pada level bahasa tingkat tinggi, perintah /pernyataan yang andal diuraikan ke dalam instruksi- instruksi mesin. Pada level yang lebih rendah (lebih dekat dengan mesin), seseorang akan berinteraksi pada instruksi- instruksi yang dikenali oleh CPU, sebagaimana program berkomunikasi dengan DOS. 
1.2. Rumusan Masalah
Permasalahan yang akan dibahas dalam penulisan makalah ini, adalah definisi dari bahasa assembly dan assembler; penjelasan mengenai system bilangan dan konversi bilangan; elemen dasar bahasa assembly. 
1.3. Tujuan. Tujuan dari penulisan makalah ini ialah untuk menyelesaikan tugas mata kuliah BAHASA ASSEMBLY,dan untuk mendapatkan pengetahuan mengenai bahasa assembly baik bagi penulis maupun pembaca. 
1.4. Manfaat. Manfaat Penulisan Makalah ini adalah sebagai sarana untuk menambah pengetahuan dan sebagai media pembelajaran. 


BAB II PEMBAHASAN
2.1. SEKILAS BAHASA ASSEMBLY
Bahasa Assembly adalah bahasa yang memudahkan pemahaman bagian computer yang paling rendah, mendekati mesin. Bahasa assembly sebaiknya dipelajari secara kontektual sehingga interaksi perangkat keras dan perangkat lunak computer mungkin lebih mudah dipahami. Bahasa assembly adalah bahasa pemrograman dengan korespondensi satu-satu antara perintah-perintah/pertanyaannya dan bahasa mesin computer. Bahasa assembly tidak satu jenis sebagaimana CPU computer yang bermacam-macam. Setiap bahasa assembly secara langsung dipengaruhi oleh set intruksi mesin computer dan arsitektur perangkat keras. Misalnya, bahasa assembly IBM-PC adalah bahasa assembly yang mengacu pada instruksi-instruksi yang dikenali oleh keluarga mikroprosesor intel 8086-80486. Apa itu assembler? Assembler adalah program yang mengonversi kode program sumber ke dalam bahasa mesin Terdapat dua assembler yang dikenal baik untuk IBM-PC , yaitu MASM (Microsoft Assembler) dan TASM (Turbo Assembler). Bahasa assembly disebut bahasa level-bawah karena dalam struktur dan fungsi dekat dengan bahasa mesin. Sebaliknya, bahasa tingkat tinggi seperti Pascal, Basic, Fortran, dan Cobol mempunyai perintah-perintah yang andal yang diterjemahkan ke dalam berbagai instruksi mesin oleh compiler. Mengapa mempelajari bahasa assembly? Ada berbagai alasan mengapa kita mempelajari bahasa assembly. Salah satu alasan adalah untuk mempelajari arsitektur computer dan system operasi . Alasan lain adalah kegunaan pemrograman tertentu sulit atau tidak mungkin dikerjakan oleh bahasa tingkat tinggi . Contoh, komunikasi langsung dengan system operasi computer mungkin diperlukan . Program grafik warna kecepatan tinggi mungkin harus di tulis menggunakan memori minimum . program khusus mungkin diperlukan sebagai penghubung antara printer dengan computer. Keterbatasan bahasa tingkat tinggi sering juga perlu dihilangkan , di luar keperluan ,menentukan aturan-aturan tentang apa yang di bolehkan dalam program . contoh ,pascal tidak mengizinkan nilai karakter di beri nilai dala variable integer . pemrogram yang berpengalaman akan menemukan cara untuk keluar dari batasan ini , tetapi dalam pelaksanaannya , membuat kode tidak dapat digunakan oleh system computer lain dan sulit dibaca . Bahasa assembly , sebaliknya , memiliki sangat sedikit batasan atau aturan . Harga yang harus dibayar untuk keluluasan itu adalah berbagai kerumitan dalam pemrograman yang perlu ditangani.
A. APLIKASI BAHASA ASSEMBLY
Biasanya kita membuat subrutin dalam bahasa assembly dan memanggilnya dari program bahasa tingkat tinggi. Keuntungan dapat diperoleh karena katanya bahasa tingkat tinggi , dengan menggunakan bahasa tingkat rendah dalam membuat aplikasi . subrutin bahasa assembly menangani operasi-operasi yang tidak tersedia dalam bahasa tingkat tinggi . Misalnya kita menulis program aplikasi bisnis dlam cobol untuk IBM-PC. Kita memerluka aplikasi untuk mengecek ruang bebas disk, membuat subdirektorionie, menulis proteksi file, dan membuat window yang overlap-semuanya dalam satu program. Missal komfilator cobol tidak dapat melakukan semuanya, kita dapat membuat subrutin bahasa assembly untuk menangani tugas-tugas tersebut. 
B. BAHASA MESIN
Sebelum lebih jauh secara rinci membahas bahasa assembly , mari kita lihat dalam suatu persfektif . computer kenyataannya tidak mengerti bahasa assembly . dia hanya mengikuti bahasa mesin . bahasa mesin adalah bahasa yang di bangun oleh sejumlah angka yang dapat diinterpretasikan oleh cpu computer . CPU biasanya mempunyai program kecil yang di tambahkan langsung ke dalam chip , disebut microcode.Penerjemah microcode mengubah langsung intruksi-intruksi mesin ke dalam sinyal perangkat keras. Bahasa mesin memungkinkan untuk melaksakan tugas-tugas umum oleh CPU , seperti pemindahan bilangan atau perhitungan aritmatik . berikut contoh instruksi bahasa mesin yang memindahkan angka 5 ke dalam register AL. 1011000000000101 Deretan angka diatas di tulis dalam biner , system penomoran yang dibangun hanya oleh angka 1 dan 0. Delapan bit pertama adalah kode operasi (opcode) yang menunjukkannya sebagai intruksi yang memindahkan angka-delapan bit ke register AL. Delapan bit kedua adalah operand. Instruksi secara keseluruhan memindahkan angka 5 kedalam register AL. Register adalah memori kecepatan tinggi yang berada didalam CPU. Register diidentifikasikan oleh nama dua huruf, seperti AH, AL, atau AX. Kumpulan instruksi (instruction set) CPU adalah sekumpulan instruksi mesin yang dapat dieksekusi CPU. Untuk keluarga CPU Intel, set instruksi adalah down-ward-compatible, artinya bahwa instruksi yang bekerja pada prosesor level yang lebih rendah akan bekerja juga pada prosesor yang lebih tinggi. Contohnya : instruksi MOV bekerja pada 8088 dan oleh karena itu harus bekerja pula pada 80286. Akan tetapi, terdapat instruksi yang lebih maju dalam 80286 yang tidak dapat bekerja pada 8088. 
2.2. REPRESENTASI DATA
Oleh karena kita bersentuhan dengan computer pada level mesin , kita perlu untuk memeriksa isi memori dan register. Computer yang ada saat ini adalah computer biner yang system bilangannya terdiri angka 1 dan 0, dan kita kenal dengan istilah logic digital. 
 A. SISTEM BILANGAN 
System bilangan (number system) adalah suatu cara untuk mewakili besaran dari suatu item fisik. Sistem bilanan yang banyak dipergunakan oleh manusia adalah system biilangan desimal, yaitu sisitem bilangan yang menggunakan 10 macam symbol untuk mewakili suatu besaran.Sistem ini banyak digunakan karena manusia mempunyai sepuluh jari untuk dapat membantu perhitungan. Lain halnya dengan komputer, logika di komputer diwakili oleh bentuk elemen dua keadaan yaitu off (tidak ada arus) dan on (ada arus). Konsep inilah yang dipakai dalam sistem bilangan binary yang mempunyai dua macam nilai untuk mewakili suatu besaran nilai. Selain system bilangan biner, komputer juga menggunakan system bilangan octal dan hexadesimal. Bilangan biner Komputer menyimpan semua instruksi dan data sebagai rangkaian digit biner, tanpa perbedaan antara keduanya. Contoh, tiga huruf pertama alfabet akan disimpan dalam IBM-PC sebagai: 010000010100001000011 = “ABC” Pada saat yang sama, instruksi untuk menjumlahkan dua buah bilangan akan disimpan di memori sebagai: 0000010000000101 Setiap digit dalam angka biner disebut bit. Kemudian, 8 buah bit disebut byte, yang merupakan unit terkecil penyimpanan computer saat ini. Setiap lokasi dalam computer menyimpan 1 byte, atau 8 bit. Tipe penyimpan yang lebih besar adalah word yang panjangnya 16 bit (2 byte) Byte byte 101101011011010 Word Setiap system penulisan angka mempunyai basis, yaitu jumlah maximum nilai pada suatu digit, yang disebut radix atau basis sistem Basis/radix Digit yng mungkin Biner oktal Desimal heksadesimal 2 8 10 16 01 01234567 0123456789 0123456789ABCDEF Dalam sistem bilangan heksadesimal, huruf A sampai F mewakili nilai decimal 10 sampai 15.Pada saat mengacu pada bilangan biner, octal atau heksadesimal, sebuah huruf kecil akan ditambahkan pada akhir setiap bilangan pada akhir setiap bilangan untuk menunjukkan basisnya contoh bilangan 45 heksadesimal akan ditulis sebagai 45h, 76 oktal ditulis 76o atau 76q, dan biner 11010011 akan terlihat 11010011b. Computer pribadi IBM disebut 16-bit karena instruksinya dapat mengoperasikan sejumlah 16-bit bilangan. Integer biasanya disimpan dalam memori sebagai byte, word atau double word. Masing-masing mempunyai batasan bawah dan atas sebagai berikut: Tipe penyimpan Bit Range Byte Word Double word 8 16 32 0-225 0-65,535 0-4,294,967,295 Walaupun masing-masing bilangan membutuhkan jumlah bit yang berbeda-beda, pada kenyataannya semua bilangan disimpan di memori sebagai nilai biner karena arsitektur computer adalah biner. Setiap bit memori adalah1 atau 0, tetapi lokasi terkecil memori yang diberi alamat adalah byte. Bilangan heksadesimal Bilangan biner yang banyak susah untuk dibaca sehingga biasanya digunakan bilangan heksadesimal untuk menggambarkan memori computer atau instruksi. Setiap digit bilangan heksadesimal mewakili 4 bit bilangan biner, dan 2 digit bilangan heksadesimal mewakili satu byte. Pada contoh berikut terlihat bahwa bilangan biner 000101100000011110010100 digambarkan oleh bilangan heksadesimal 160794: 0001 0110 0000 0111 1001 0100 1 6 0 7 9 4 Sebuah digit heksadesimal mungkin mempunyai nilai sampai 15 sehingga untuk angka 10-15 menggunakan huruf A-F. table berikut menunjukkan bagaimana setiap 4bit biner diterjemahkan ke dalam decimal dan heksadesimal : Biner Decimal Heksadesimal 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 1 2 3 4 5 6 7 8 9 A B C D E F Bilangan Desimal Sistem ini menggunakan 10 macam symbol yaitu 0,1,2,3,4,5,6,7,8,dan 9. system ini menggunakan basis 10. Bentuk nilai ini dapat berupa integer desimal atau pecahan. Integer desimal : adalah nilai desimal yang bulat, misalnya 8598 dapat diartikan : 8 x 103 = 8000 5 x 102 = 500 9 x 101 = 90 8 x 100 = 8 8598 position value/palce value absolute value Absolue value merupakan nilai untuk masing-masing digit bilangan, sedangkan position value adalah merupakan penimbang atau bobot dari masing-masing digit tergantung dari letak posisinya, yaitu nernilai basis dipangkatkan dengan urutan posisinya. 
Pecahan desimal : Adalah nilai desimal yang mengandung nilai pecahan dibelakang koma, misalnya nilai 183,75 adalah pecahan desimal yang dapat diartikan : 1 x 10 2 = 100 8 x 10 1 = 80 3 x 10 0 = 3 7 x 10 –1 = 0,7 5 x 10 –2 = 0,05 183,75 Bilangan Oktal Sistem bilangan Oktal menggunakan 8 macam symbol bilangan berbasis 8 digit angka, yaitu 0 ,1,2,3,4,5,6,7. Position value system bilangan octal adalah perpangkatan dari nilai 8. Contoh : 12(8) = …… (10) 2 x 8 0 = 2 1 x 8 1 =8 10 Jadi 10 (10) Konversi Bilangan Konversi bilangan adalah suatu proses dimana satu system bilangan dengan basis tertentu akan dijadikan bilangan dengan basis yang alian. Dalam konversi bilangan terdapat istilah Most Significant Bit (MSB) atau bit yang paling berarti atau paling besar, dan Least Significant Bit (LSB) atau bit yang paling tidak berarti atau yang terkecil Konversi dari bilangan Desimal 1. Konversi dari bilangan Desimal ke biner Yaitu dengan cara membagi bilangan desimal dengan dua kemudian diambil sisa pembagiannya. Contoh : 45 (10) = …..(2) 45 : 2 = 22 + sisa 1 22 : 2 = 11 + sisa 0 11 : 2 = 5 + sisa 1 5 : 2 = 2 + sisa 1 2 : 2 = 1 + sisa 0 101101(2) ditulis dari bawah ke atas MSB LSB 2. Konversi bilangan Desimal ke Oktal Yaitu dengan cara membagi bilangan desimal dengan 8 kemudian diambil sisa pembagiannya Contoh : 385 ( 10 ) = ….(8) 385 : 8 = 48 + sisa 1 48 : 8 = 6 + sisa 0 601 (8) 3. Konversi bilangan Desimal ke Hexadesimal Yaitu dengan cara membagi bilangan desimal dengan 16 kemudian diambil sisa pembagiannya Contoh : 1583 ( 10 ) = ….(16) 1583 : 16 = 98 + sisa 15 96 : 16 = 6 + sisa 2 62F (16) Konversi dari system bilangan Biner 1. Konversi ke desimal Yaitu dengan cara mengalikan masing-masing bit dalam bilangan dengan position valuenya. Contoh : 1 0 0 1 1 x 2 0 = 1 0 x 2 1 = 0 0 x 2 2 = 0 1 x 2 3 = 8 10 (10) 2. Konversi ke Oktal Dapat dilakukan dengan mengkonversikan tiap-tiap tiga buah digit biner yang dimulai dari bagian belakang. Contoh : 11010100 (2) = ………(8) 11 010 100 3 2 4 diperjelas : 100 = 0 x 2 0 = 0 0 x 2 1 = 0 1 x 2 2 = 4 4 Begitu seterusnya untuk yang lain. 3. Konversi ke Hexademial Dapat dilakukan dengan mengkonversikan tiap-tiap empat buah digit biner yang dimulai dari bagian belakang. Contoh : 11010100 1101 0100 D 4 Konversi dari system bilangan Oktal 1. Konversi ke Desimal Yaitu dengan cara mengalikan masing-masing bit dalam bilangan dengan position valuenya. Contoh : 12(8) = …… (10) 2 x 8 0 = 2 1 x 8 1 =8 10 Jadi 10 (10) 2. Konversi ke Biner Dilakukan dengan mengkonversikan masing-masing digit octal ke tiga digit biner. Contoh : 6502 (8) ….. = (2) 2 = 010 0 = 000 5 = 101 6 = 110 jadi 110101000010 3. Konversi ke Hexadesimal Dilakukan dengan cara merubah dari bilangan octal menjadi bilangan biner kemudian dikonversikan ke hexadesimal. Contoh : 2537 (8) = …..(16) 2537 (8) = 010101011111 010101010000(2) = 55F (16) Konversi dari bilangan Hexadesimal 1. Konversi ke Desimal Yaitu dengan cara mengalikan masing-masing bit dalam bilangan dengan position valuenya. Contoh : C7(16) = …… (10) 7 x 16 0 = 7 C x 16 1 = 192 199 Jadi 199 (10) 2. Konversi ke Oktal Dilakukan dengan cara merubah dari bilangan hexadesimal menjadi biner terlebih dahulu kemudian dikonversikan ke octal. Contoh : 55F (16) = …..(8) 55F(16) = 010101011111(2) 010101011111 (2) = 2537 (8) Bilangan Bertanda Bilangan biner mungkin bertanda atau tidak bertanda. Byte bertanda menggunakan 8 bit seluruhnya untuk nilai angkanya. Contoh, 11111111= 255. Oleh karena itu, 255 adalah nilai tertinggi yang dapat disimpan dalam byte tidak bertanda. Nilai terbesar yang dapat disimpan dalam word tidak bertanda adalah 65,535. Byte bertanda hanya menggunakan 7 bit untuk nilai, sedangkan bit paling kiri digunakan sebagai tanda. Bilangan mungkin positif atau negative. Jika tanda sama dengan satu maka bilangan negative. Sebaliknya, jika tanda bernilai 0 maka bilangan positif.: Bit tanda 10001010 (bilangan negative) 00001010 (bilangan positif) One complement. Untuk menghitung bilangan one complement dari suatu bilangan maka balikkan seluruh nilai bitnya. Contoh, ones complement dari 11110000b adalah 00001111b. Twos complement. Untuk menyimpan nilai negative maka digunakan bilangan twos complement. Twos complement diperoleh dengan menambahkan satu pada bilangan ones complement. Contoh twos complement dari +6 (00000110b), balikkan nilai bitnya untuk mendapatkan ones complement menjadi 11111001b, untuk memperoleh twos complementnya ditambah satu menjadi 11111010b (ini nilai twos complement untuk -6). Untuk mendapatkan kembali nilai +6 sebagai berikut: 11111010 -6 00000101 ones complement + 1 tambah 1 00000110 +6 Nilai maksimum dan minimum. Oleh karena nilai paling kiri pada bilangan bertanda digunakan untuk tanda bilangan, maka ukuran bilangan akan berkurang; yang digunakan hanya 7 bit sehingga nilai paling besar yang bisa dicapai adalah +127. Table berikut menunjukkan nilai maksimum dan minimum untuk byte, word dan double word bertanda: Tipe penyimpan Nilai terendah Nilai tertinggi Byte Word Double word -127 -32,767 -2,147,483,647 +127 +32,767 +2,147,483,647 PENYIMPAN KARAKTER komputer hanya dapat menyimpan bilangan biner, jadi bagaimana menyimpan karakter seperti: “A” dan “$”? Telah dibuat suatu system menerjemahkan karakter ke dalam bilangan biner, yaitu American Standart Code for Information Interchange (ASCII). 
Sistem lainnya, Extended Binery Code for Decimal Interchange (EBCDIC), digunakan oleh mini dan mainframe computer IBM. Kode ASCII Ctrl Mnemonic Penjelasan 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F Ctrl-A Ctrl-B Ctrl-C Ctrl-D Ctrl-E Ctrl-F Ctrl-G Ctrl-H Ctrl-I Ctrl-J Ctrl-K Ctrl-L Ctrl-M Ctrl-N Ctrl-O Ctrl-P Ctrl-Q Ctrl-R Ctrl-S Ctrl-T Ctrl-U Ctrl-V Ctrl-W Ctrl-X Ctrl-Y Ctrl-Z Ctrl-[ Ctrl-\ Ctrl-] Ctrl-^ Ctrl- - NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US Karakter kosong Awal header Awal teks Akhir teks Akhir transmisi Pertanyaan(enquiry) Pemberitahuan Bel Backspace Tab horison Line feed Tab vertical Form feed Carriage return Shift out Shift in Data link escape Device control 1 Device control 2 Device control 3 Device control 4 Pemberitahuan negative Synchronous idle Akhir transmisi blok Batal Akhir medium Pengurangan(substitusi) Escape Pemisah file Pemisah grup Pemisah record Pemisah unit Standart kode ASCII hanya menggunakan 7- bit kode, sedangkan nilai selebihnya yang mungkin 7Fh. 8-bit lainnya adalah pilihan, digunakan oleh IBM-PC untuk memperluas kumpulan karakter. Nilai 80h-FFh menggambarkan symbol grafik dan karakter yunani. Nilai 0-1Fh adalah kode kendali untuk printer, komunikasi dan keluaran layar. Semua karakter, termasuk bilangan dan huruf, dibuat unik pada kode ASCII. Contoh kode untuk karakter string “ABC123” adalah: Karakter A B C 1 2 3 Kode ASCII 41h 42h 43h 30h 31h 32h Lalu bagaiman halnya dengan penyimpanan bilangan? Setiap huruf atau digit memerlukan I byte memori. Namun, ketika menyimpan bilangan, kita bias lebih efisien. Contohnya, bilangan 123 dapat disimpan dalam memorisebagai satu byte, yaitu 01111011b.
2.3. ELEMEN DASAR BAHASA ASSEMBLY
Instruksi bahasa assembly Instruksi bahasa assembly adalah representasi simbolik instruksi mesin tunggal. Dalam bentuknya yang paling sederhana, yang terdiri dari satu mnemonic, kode alphabet singkat yang secara harfiah “membantu memori” dalam mengingat instruksi CPU. Mnemonic mungkin diikuti oleh operand contoh berikut: clc ; hanya sebuah mnemonic inc ax ; operand tunggal mov ax, bx ; dua operand stiap instruksi dapat diikuti oleh komentar, yang selalu diawali dengan titik koma(;). Operand mungkin berupa register, variable, lokasi memori atau nilai immediate. Contoh : 10 (nilai immediate) count (variable) AX (register) [0200] (lokasi memori) Contoh program Program bahasa assembly dibangun oleh instruksi dan operand. Instruksi memerintahkan CPU untuk melaksanakan aksi, sedang variable adalah lokasi memori dimana dat disimpan. Variable juga disebut operand memori. Operand langsung adalah konstanta seperti 5 dan 10. Berikut ini contoh program untuk menjumlahkan 3 bilangan dan menyimpannya dalam variable yang disebut sum. Sum diasumsikan dalam heksadesimal. mov ax, 5 ; memindahkan 5 ke dalam register ax add ax, 10 ; menambahkan nilai 10h terhadap register ax add ax, 20 ; menambahkan nilai 20h terhadap register ax mov sum, ax ; menyimpan ax dalam variable sum int 20 ; akhir program instruksi MOV memerintahkan CPU untuk memindahkan atau menyalin data, dari operand sumber ke operand tujuan. Baris 1 memindahkan 5 ke dalam register AX. Baris 2 memindahkan 10 (heksa) ke dalam AX, membuatnya sama dengan 15. Baris 3 menambahkan 20 ke AX, membuatnya sama dengan 35, dan baris 4 menyalin AX ke dalam variable dalam memori yang disebut SUM. Baris terakhir menghentikan program. Perintah DEBUG untuk menyusun dan menguji program adalah sebagi berikut: Perintah Komentar A 100 Mov ax, 5 Add ax,10 Add ax,20 Mov [0120], ax Int 20 R T T T G Q Assembly dimulai pada lokasi 100h Perintah program yang pertama Hasil jumlah pada lokasi 0120h Akhir program (tekan Enter untuk mengakhiri assembly) Menampilkan register Trace satu instruksi Eksekusi sisa program Keluar dari Debug kembaali ke DOS Setelah instruksi yang kedua, akan diperoleh tampilan hasil sebagai berikut: 1. mov ax, 5 ax : 05 2. add ax, 10 ax : 10 3. add ax, 20 ax : 20 4. mov sum, ax ax : 35 sum : 35 AX = 0015 BX= 0000 CX= 0000 DX= 0000 SP= FFEE BP= 0000 SI= 0000 DI= 0000 DS= 23AD ES= 23AD SS= 23AD CS= 23AD IP= 0106 NV UP EI PL NZ NA PO NC 23AD : 0106 052000 ADD AX, 0020 Register AX merupakan hasil penjumlahan 5 dan 10 sehingga AX= 15. Register IP menyimpan alamat instruksi berikutnya yang akan dieksekusi (0106). Instruksi berikutnya yang akan dieksekusi adalah ADD AX, 0020. Elemen dasar bahasa assembly Karakter- karakter dasar assembler mungkin digunakan untuk membentuk nomor, nama, perintah, dan parameter. Konstanta Konstanta adalah nilai yang diketahui dan dikalkulasikan pada saat penyusunan program. Konstanta mungkin nomor atau karakter string. Dia tidak dapat diubah pada saat program dijalankan. Kumpulan karakter dalam assembly Letter : A-Z, a-z Digit : 0-9 Karakter khusus: ? , (koma) @ “ _ & $ % : ! . ‘ [] ~ () | {} = + # - ^ / ; * ` Variable, sebaliknya, adalah lokasi memori yang dapat berubah pada saat program dijalankan. Contoh berikut adalah konstanta: ‘ABC’ 2134 5*6 (1+2)/3 Iteger. Integer dibangun oleh digit-digit angka tanpa decimal,diikuti oleh karakter radix (d=decimal, h=hexa, q=octal, b=biner) Contoh Radix 11110000b 200 300d 4A6Bh 2047q 2047o Biner Decimal Decimal Heksadesimal Octal oktal Bilangan riil. Angka riil mengandung digit, titikdesimal tunggal, eksponen (opsional) dan tanda awal (opsional). Sintaknya: [{+/-}] digit.digit [E{+/-}] digit Contoh: 2.3 + 200.576 E +05 0.243526E – 05 6.08 e3 Notasi sintak. Dalam contoh sebelumnya dan pada contoh yang akan dating, elemen opsional akan ditutup dengan kurung siku. Tanda kurung besar mengidentifikasikan pilihan yang diperlukan. Kata kunci yang diperlukan ditulis dalam huruf capital. Kata dengan huruf kecil miring adalah istilah- istilah yang didefinisikan sebelumnya seperti identifier, operand, dan register. Karakter atau konstanta string. Karakter ASCII tunggal atau string karakter yang ditutup oleh tanda quotasi tunggal (‘’) atau ganda (“”), contoh: “a” ‘B’ “Stack Overflow” ‘012#?%&’ Konstanta karakter panjangnya 1 byte. Panjang sebuah string ditentukan oleh jumlah karakter yang ada di dalamnya. Konstanta berikut panjangnya 5 byte: ‘ABCDE’ Apostrof (‘) ditutup diantara dua tanda quotasi (“”), atau tanda quotasi ganda (“”) ditutup oleh tanda quotasi tunggal (‘’). Contoh berikut adalah benar: “That’s not all………” ‘The file “First” was not found’ “The file ‘First’ was not found” Pernyataan Pernyataan/perintah bahasa assembly terdiri dari nama, mnemonic, operand dan komentar. Pernyataan secara umum dibagi menjadi dua kelas, yaitu instruksi dan perintah. Instruksi adalah pernyataan yang dapat dieksekusi, sementara perintah adalah pernyataan yang menyediakan informasi untuk membantu assembler dalam menghasilkan kode yang dapat dieksekusi. Format umum sebuah kalimat: [name][mnemonic][operand][;coment] Kalimat harus ditulis pada baris tunggal dan tidak melebihi 128 kolom. Perintah, atau pseudo op, adalah pernyataan yang berefek pada daftar program atau cara kode mesin dibuat. Contoh, perintah DG memerintah assembler untuk membuat memori untuk variable bernama count dan member nilai awal 50. Count DB 50 Instruksi dieksekusi oleh mikroprosesor pada saat dijalankan. Instruksi dibagi ke dalam tipe-tipe umum, seperti: kendali program, transfer data, aritmetik, logic, dan I/O. Instruksi-instruksi selalu diterjemahkan langsung ke dalam kode mesin oleh assembler. Setiap satu instruksi bahasa assembly diterjemahkan langsung ke dalam satu instruksi bahasa mesin. Nama Nama mengidentifikasikan label, variable, symbol atau kata kunci. Nama mungkin mengandung salah satu karakter berikut: Karakter Penjelasan A…Z, a…z 0-9 ? _ @ $ . Huruf Angka Tanda Tanya Underscore Tanda @ Tanda dollar Titik Nama mempunyai batasan sebagai berikut: 1. Hanya 31 karakter pertama yang dikenali, 2. Tidak ada perbedaan antara huruf capital dan huruf kecil, 3. Karakter pertama tidak boleh angka, 4. Jika digunakan, tanda (.) hanya bisa digunakan sebagai karakter pertama, 5. Tidak boleh memilih nama yang samadengan kata kunci (perintah/direktif). Variable dan konstanta. Nama digunakan sebelum perintah alokasi memori mengidentifikasikan lokasi diman data disimpan dalam memori. Atau, mungkin juga digunakan untuk mengidentifikasikan konstanta, sebagai berikut: Count 1 db 50 ; variable (alokasi memori) Count 2 equ 100 ; konstanta Label. Jika nama tampil disamping instruksi program, ini disebut label. Label berfungsi sebagai penanda kapan saja program mau meloncat atau looping dari satu lokasi ke lokasi lain. Sperti contoh berikut dimana label 1 dan label 2 adalah label yang mengidentifikasikan lokasi dalam program: Label 1 mov ax, 0 Label 2 mov ax, 0 … … Label 2 Jmp label 1 Kata kunci. Kata kunci atau reserved word selalu mempunyai arti yang sebelumnya telah didefinisikan. Keyword mungkin instruksi atau direktif. Contohnya, MOV, ADD, AX, dan END. Kata kunci tidak dapat digunakan keluar dari konteksnya atau sebagai identifier. Contoh kekeliruan penggunaan ADD sebagai label adalah berikut: add : mov ax, 10 
2.4. CONTOH PROGRAM HELLO
Program Hello pada gambar 
1.3 yang menempilkan pesan ‘’Hello, world !” pada layar . Baris 1 mengandung perintah title; semua karakter sisanya pada baris 1 dianggap komentar , seperti pada baris 3. Sebelum menyelesaikan lebih lanjut kita jelaskan dulu segmen ,yaitu bagian-bagian yang membangun program . Segmen code adalah bagian dimana intruksi program di simpan ; segmen data adalah bagian dimana variable di simpan ; dan segmen stack adalah tempat menyimpan stack . stack sendiri merupakan daftar dalam memori dimana program dijaga dalam variable sementara, kembali dari subrutin , dan semacamnya . Direktif dosseg menunjukkan segmen standar untuk code , data dan segmen stack . perintah model small mengindifikasikan bahwa program menggunakan Microsoft assembler memory “small” . Direktif stack menset 100 H (256) byte stack untuk program. Title program hello word [1] [2] ; program ini menampilkan pesan “hello,word” [3] [4] Dosseg [5] . model small [6] . stack 100h [7] [8] . data [9] . hello_message db ‘hello, world !’,0dh,0ah, ‘$’ [10] [11] . code [12] main proc [13] mov ax, @data [14] mov ds,ax [15] [16] mov ah ,9 [17] mov dx, offset hello_message [18] int 21 h [19] [20] mov ax,4000h [21] int 21h [22] main endp [23] endp main [24] GAMBAR 1.3 Program hello.asm Direcktif . code menandai awal segmen code . perintah data menandai awal segmen data , dimana variable dideklarasikan . Baris 9-10 mengandung segmen data, dimana variable diberi nama hello_message dideklarasikan . huruf db adalah direktif define byte yang meminta assembler mengalokasikan serangkaian byte memori untk data yang mengikutinya . Baris 13 mengunakan perintah proc untuk mendeklarasikan prosedur main (mungkin juga menggunakan nama lain ) . Baris 14-15 menyalin alamat segmen data ke dalam reg DS . intruksi MOV selalu mempunyai 2 operand: tujuan dan sumber . Baris 17-19 menyebabkan string karakter dituliskan kekonsole . Mereka melakukannya dengan memnggil fungsi DOS yang menampilkan string yang beralamat dalam register DX.Nomor fungsi diletakkan dalam register AH. Baris 21-22 adalah perintah untuk berhenti dan kembali ke DOS. Baris 23 akhir dari prosedur main dan baris 24 baris terakhir di assembly. 

BAB III PENUTUP
3.1. Kesimpulan.
Bahasa Assembly adalah bahasa yang memudahkan pemahaman bagian computer yang paling rendah, mendekati mesin. Bahasa assembly sebaiknya dipelajari secara kontektual sehingga interaksi perangkat keras dan perangkat lunak computer mungkin lebih mudah dipahami. Bahasa assembly adalah bahasa pemrograman dengan korespondensi satu-satu antara perintah-perintah/pertanyaannya dan bahasa mesin computer. Assembler adalah program yang mengonversi kode program sumber ke dalam bahasa mesin System bilangan (number system) adalah suatu cara untuk mewakili besaran dari suatu item fisik. System bilangan terdiri dari: bilangan biner, bilangan decimal, bilangan octal dan hexadesimal. Kumpulan karakter dalam assembly Letter : A-Z, a-z Digit : 0-9 Karakter khusus: ? , (koma) @ “ _ & $ % : ! . ‘ [] ~ () | {} = + # - ^ / ; * ` 

DAFTAR PUSTAKA
Abdurohman, Maman. Pemrograman Bahasa Assembly- konsep dasar dan implementasinya. ANDI. Yogyakarta . 2010

No comments:

Post a Comment