I. PENGENALAN Pendahuluan

dokumen-dokumen yang mirip
Sistem Bilangan & Dasar Assembler Dadang Mulyana

SISTEM BILANGAN DAN SANDI

RANGKAIAN ARITMETIKA 2

BAB VI SISTEM BILANGAN

SISTEM BILANGAN Desimal, Biner, Oktal dan Heksadesimal

BUKU AJAR BAHASA PEMROGRAMAN TINGKAT RENDAH (BPTR)

BAB 3 MODE AKSES MEMORI, PENGGUNAAN VARIABEL DAN STACK

MODUL V STACK dan PENGENALAN PROCEDURE

BAB IV SISTEM SANDI (CODING)

ASCII (American Standart Code for Information Intercharge)

BAB IV SISTEM SANDI (CODING)

FPGA DAN VHDL TEORI, ANTARMUKA DAN APLIKASI

CODING. Komunikasi Data

MODUL I PENGENALAN ASSEMBLY

Pemrograman Assembler dengan Debug

DIKTAT BAHASA RAKITAN

Quis. 2. Sistem bilangan yang menggunakan basis 8 adalah: A. Biner D. Hexadesimal B. Oktal E. Sexagesimal C. Desimal

Daftar Isi. Daftar Isi Pertemuan 2: Pengenalan Debug dan Interrupt P2.1. Teori Pengenalan DEBUG... 3

BAB III DATA KOMPUTASI

Materi 3. Komponen Mikrokomputer SYSTEM HARDWARE DAN SOFTWARE DADANG MULYANA

Daftar Isi. Daftar Isi Pertemuan 6: Perintah Masukkan dari Keyboard P6.1. Teori Masukkan dari Keyboard... 3

Penggunaan Sistem Bilangan dan Pengkodean -3-

Diktat Kuliah intel 8088

Karakteristik Instruksi Mesin

BAB V b SISTEM PENGOLAHAN DATA KOMPUTER (Representasi Data) "Pengantar Teknologi Informasi" 1

Algoritma & Pemrograman

Bab 1. Pemrograman dan Bahasa Rakitan. 1.1 Pendahuluan

MODUL PRAKTIKUM ORGANISASI SISTEM KOMPUTER

Representasi Bilangan Digital (Bagian 2)

PERTEMUAN : 4 EKSPLORASI DEBUG

Komputer menggunakan dan memanipulasi data untuk perhitungan aritmatik, pemrosesan data dan operasi logik. Data adalah bilangan biner dan informasi

Microcontroller: Bahasa Pemrograman Assembly 8051

INTRUKSI-INTRUKSI BAHASA PEMROGRAMAN ASSEMBLY

2.0 PERWAKILAN DATA PROGRAM LATIHAN GURU ASAS SAINS KOMPUTER TINGKATAN 1 BAHAGIAN PENDIDIKAN GURU KEMENTERIAN PENDIDIKAN MALAYSIA.

MEMULAI MEMPROGRAM DI DOS. Struktur Assambler. Menggunakan Debug dari DOS

BAHASA PEMROGRAMAN MIKROKOMPUTER

RANGKAIAN ARITMETIKA 2

BAB 4 PENGENALAN BAHASA C

PENGANTAR KOMPUTER DAN TEKNOLOGI INFORMASI 1A

BAHASA PEMROGRAMAN C

PERTEMUAN : 2 SISTEM BILANGAN

Diktat Kuliah Instruksi dan Segmentasi

Instruksi-Instruksi Pemindahan Data. Sistem Komputer Universitas Gunadarma

RANGKAIAN ARITMETIKA

BAB II SISTEM BILANGAN DAN KODE BILANGAN

Sistem Komputer. Komputer terdiri dari CPU, Memory dan I/O (Arsitektur Von-Neumann) Ada tiga bus dalam sistem komputer

Eksplorasi Prosesor 8086 Dengan Program DEBUG

OPERATION SYSTEM. Jenis - Jenis Register Berdasarkan Mikroprosesor 8086/8088

LAPORAN PRAKTIKUM ORGANISASI KOMPUTER & BAHASA ASSEMBLY PROGRAM POINTER OPERASI ARITMATIKA

Mikroprosesor. Bab 3: Arsitektur Mikroprosesor. INTEL 8086 Generasi Awal Prosesor PENTIUM. Arsitektur Mikroprosesor 1

REGISTER Register-register yang terdapat pada mikroprosesor, antara lain :

R E G I S T E R. = Code Segment Register = Data Segment Register = Stack Segment Register = Extra Segment Register. 3.

MAKALAH. Mata Kuliah. Arsitektur dan Organisasi Komputer

KOMPETENSI DASAR : MATERI POKOK : Sistem Bilangan URAIAN MATERI 1. Representasi Data

Web Site :

PERTEMUAN BAHASA PEMOGRAMAN DAN FORMAT BILANGAN MIKROKONTROLER

DASAR PEMROGRAMAN. PENGANTAR BAHASA C ( Sejarah, Struktur Pemrograman, Tipe Data, Operator ) Djoko Soerjanto, M.Kom

BAB I SEKILAS TENTANG C

Arsitektur dan Organisasi Komputer. Set instruksi dan Pengalamatan

Data Link Layer BAB 3

Set Instruksi & Mode Pengalamatan. Team Dosen Telkom University 2016

Bahasa Pemrograman Assembler 8051

Brigida Arie Minartiningtyas, M.Kom

MIKROPROSESOR REGISTER-REGISTER MIKROPROSESOR INTEL

MAKALAH SISTEM BILANGAN BINER DAN SANDI (KODE) ELEKTRONIKA DIGITAL. (Untuk memenuhi tugas mata kuliah Elektronika Digital)

Mata Kuliah : Bahasa Rakitan

Pertemuan ke 7 Mode Pengalamatan. Computer Organization Eko Budi Setiawan

SISTEM BILANGAN 1.1 Sistem Bilangan Puluhan

Representasi Data Digital (Bagian 1)

Pertemuan ke 6 Set Instruksi. Computer Organization Dosen : Eko Budi Setiawan

DCH1B3 Konfigurasi Perangkat Keras Komputer

Diktat Kuliah Organisasi dan Interaksi

8/4/2011. Microprocessor & Microcontroller Programming. Bahasa Pemrograman. Bahasa Pemrograman. Bahasa Pemrograman

ilmu bahasa pemrograman ilmu c++ Copyright izie ilmu c++

ARSITEKTUR KOMPUTER SET INSTRUKSI

SET INSTRUKSI. Organisasi dan Arsitektur Komputer

PEMROGRAMAN BAHASA RAKITAN

PROGRAM STUDI TEKNIK KOMPUTER JURUSAN TEKNIK KOMPUTER POLITEKNIK NEGERI SRIWIJAYA PALEMBANG TK Praktikum Bahasa Rakitan Hand On Lab 4

Pada pembahasan kali ini, digunakan instruksi MOV untuk menjelaskan mode pengalamatan data. Format penulisannya adalah :

BAHASA RAKITAN. Kuliah I : Pengenalan. Universitas Gunadarma. Bahasa Rakitan

Arsitektur dan Organisasi

LAYER FISIK TERKAIT LAYER FISIK: 1. SINKRONISASI 2. PHYSICAL ENCODING : NRZI, NRZ, MANCHESTER, AMI 3. GANGGUAN LAYER FISIK

BAB II ARITMATIKA DAN PENGKODEAN

ORGANISASI DAN ARSITEKTUR KOMPUTER. rsp oak informatika

Algoritma & Pemrograman 1B BASIC

SISTEM BILANGAN DAN FORMAT DATA

Arsitektur Set Instruksi. Abdul Syukur

PERTEMUAN MINGGU KE-3 REPRESENTASI DATA

Algoritme dan Pemrograman

Representasi Bilangan dan Operasi Aritmatika

ARSITEKTUR SISTEM KOMPUTER. Wayan Suparta, PhD Maret 2018

Standard IEEE 754 & Big Endian Litle Endian

PETA MEMORI MIKROPROSESOR 8088

Set Instruksi. Set Instruksi. Set Instruksi adalah kumpulan

LAPORAN PRAKTIKUM ORGANISASI KOMPUTER & BAHASA ASSEMBLY PROGRAM OPERASI ARITMATIKA. Kelas : INF 2B Praktikum 1 Nama : Fernalia NIM : J3C212210

Jumlah maksimum operand dalam suatu computer menunjukkan organisasi prosessor mesin tersebut.

MICROPROSESSOR ASEMBLY (REGISTER)

REPRESENTASI DATA DATA REPRESENTATION

Bahasa C-M6 By Jamilah, Skom 1

Mikroprosesor. Pertemuan 8. By: Augury

Transkripsi:

I. PENGENALAN 1.1. Pendahuluan Bahasa assembly membuka rahasia perangkat keras dan perangkat lunak komputer. Disini akan dipelajari bagaimana perangkat keras komputer dan sistem operasi bekerjasama dan bagaimana program aplikasi berkomunikasi dengan sistem operasi. Untuk memahami keseluruhan komputer dan sistem informasinya, seseorang perlu memahami perangkat lunak pada berbagai level. Pertama level program aplikasi, dimana program berinteraksi dengan DOS. Level bahasa tingkat tinggi, dimana perintah/pernyataan yang handal diuraikan kedalam instruksi-instruksi mesin. Pada level yang lebih rendah (lebih dekat dengan mesin), seseorang akan konsentrasi pada instruksi-instruksi yang dikenali oleh CPU, sebagaimana program berkomunikasi dengan DOS. Bahasa assembly meningkatkan pemahaman seseorang tentang level yang lebih rendah ini. Pada tulisan ini memberikan titik pandang bahwa bahasa assembly seharusnya dipelajari secara kontekstual, sehingga interaksi perangkat keras dan preangkat lunak komputer mungkin lebih mudah dipahami. Pada bab berikutnya, akan dibahas perangkat keras komputer, bahasa mesin, konsep sistem operasi dan struktur pemrograman. Apakah bahasa assembly? 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 keluargaa mikroprosesor Intel 8086-80486. Apa itu assembler? Assembler adalah program yang mengkonversi kode program sumber ke dalam bahasa mesin. Pada tuliasn ini akan mengacu pada assembler yang membuat instruksi mesin untuk mikrokomputer IBP 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 meiliki bahasa assembly yang berbeda, karena rancangan komputer mempengaruhi instruksi yang dapat dieksekusi. Created By : IKA PARMA DEWI Page 1

Bahasa assembly disebut bahasa level-bawah karena dalam struktur dan fungsi dekat dengan bahasa mesin. Sebaliknya, bahasa tingkat tingggi seperti Pascal, Basic, Fortran dan Cobol mempunyai perintah-perintah yang handal yang diterjemahkan ke dalam berbagai instruksi mesin oleh kompiler. Mengapa mempelajari bahasa assembly? Berbagai alasan mengapa kita mempelajari bahasa assembly. Salah satu alasan adalah untuk mempelajari arsitektur komputer dan sistem operasi. Alasan lain adalah karena kegunaan pemrograman tertentu sulit atau tidak mungkin dikerjakan oleh bahasa tingkat tinggi. Contoh, kompunikasi langsung dengan sistem operasi komputer mungkin deperlukan. Program grafik warna kecepatan tinggi mungkin harus ditulis menggunakan memori minimum. Program khusus mungkin diperlukan sebagai penghubung antara printer dengan komputer. Sering juga perlu untuk menghilangkan keterbatasan bahasa tingkat tinggi, diluar keperluan, menentukan aturan-aturan tentang apa yang dibolehkan dalam program. Contoh, pascal tidak mengijinkan nilai karakter diberi nilai dalam variabel integerr. Pemrogram yang berpengalaman akan menemukan cara untuk keluar dari batasan ini, tapi dalam pelaksanaannya, membuat kode tidak dapat digunakan oleh sistem komputer lain dan sulit dibaca. Bahasa assembly, sebaliknya, memiliki sangat sedikit batasan atau aturan. Harga yang harus dibayar untuk keleluasaan itu adalah perlu menangani berbagai kerumitan dalam pemrograman. Aplikasi bahasa assembly Biasanya ktia membuat subrutin dalam bahasa assembly dan memanggilnya dari program bahasa tingkat tinggi. Keuntungan dapat diperoleh karena ketanya bahasa tingkat tinggi, dengan menggunakan bahasa tingkat rendah dalam membuat aplikasi. Subrutin bahasa assembly menangani operasi-operasi yang tidak tersedia dalam bahasa tingkat tinggi. Misal kita menulis program aplikasi bisnis dalam Cobol untuk IBM-PC. Kita memerlukan aplikasi untuk mengecek ruang bebas disk, membuat subdirektory, menulis proteksi file, dan membuat window yang overlap, semuanya dalam satu program. Misal kompilator Cobol tidak dapat melakukan semuanya, maka kita dapat mebuat subrutin bahasa assembly untuk menangani tugas-tugas tersebut. Bahasa mesin Sebelum lebih jauh secara rinci membahas bahasa assembly, mari kita lihat dalam suatu prespektif. Komputer kenyataannya tidak mengerti bahasa assembly, dia hanya mengikuti bahasa mesin. Bahasa mesin adalah bahasa yang dibangun oleh sejumlah angka yang dapat diinterpretasikan oleh CPU komputer. CPU biasanya mempunyai program kecil yang ditambahkan langsung ke dalam chip, disebut microcode. Penerjemah microcode mengubah langsung instruksi-instruksi mesin ke dalam sinyal perangkat keras. Dengan bahasa mesin memungkinkan untuk melaksanakan tugas-tugas umum oleh CPU, seperti pemindahan bilangan atau perhitungan aritmatik. Berikut contoh instruksi bahasa mesin yang memindahkan angka 5 ke dalam register AL. Created By : IKA PARMA DEWI Page 2

1011000000000101 Deretan angka diatas ditulis dalam biner, sistem penomoran yang dibangun hanya oleh angka 1 dan 0. Delapan bit pertama adalah kode operasi (opcode) yang menunjukannya sebagai isntruksi yang memindahkan angka 8 bit ke register AL. Delapan bit kedua adalah operand. Instruksi secara keseluruhan memindahkan angka 5 ke dalam register AL. Register adalah memori kecepatan tinggi yang berada di dalam CPU. Register diidentifikasikan oleh nama 2 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 downward-compatible, artinya bahwa instruksi yang bekerja pada prosesor level yang lebih rendah akan bekerja juga pada prosesor yang lebih tinggi. Contoh instruksi MOV bekerja pada 8088 dan karena itu harus bekerja pula pada 80286. Tetapi terdapat instruksi yang lebih maju dlam 80286 yang tidak dapat bekerja pada 8088. Dulu, semua program ditulis dalam bahasa mesin. Hal ini sangat menyulitkan bagi pemrogram baik dalam membacanya maupun menulisnya. Itulah sebabnya mengapa dibuat assembler dan kompiler yang akan mengkonversi instruksi yang mudah dibaca, dibuat dalam editor teks ke dalam bahasa mesin. Contoh instruksi diatas adalah : MOV AL,5 1.2. Representasi Data Karena kita akan bersentuhan dengan komputer pada level mesin, kita perlu untuk memeriksa isi memori dan register. Komputer yang ada saat ini adalah komputer biner yang sistem bilangannya terdiri angka 1 dan 0 yang kita kenal dengan istilah logic digital. 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 Bit & Byte. Setiap digit dalam angka biner desebut bit. 8 buah bit desebut byte, yang merupakan unit terkecil penyimpanan pada komputer saat ini. Setiap lokasi dalam komputer menyimpan 1 byte, atau 8 bit. Tipe penyimpan yang lebih besar adalah word yang panjangnya 16 bit (2 byte). Created By : IKA PARMA DEWI Page 3

byte byte 1 0 1 1 0 1 0 1 1 0 1 1 0 1 0 word Setiap sistem penuliasan angka mempunyai basis, yaitu jumlah maksimum nillai pada suatu digit. Ini disebut radix atau basis. Sistem Basis / radix Digit yang mungkin Biner 2 01 Oktal 8 01234567 Desimal 10 0123456789 Heksadesimal 16 0123456789ABCDEF Dalam sistem bilangan heksadesimal, huruf A sampai F mewakili nilai desimal 10 sampai 15. Pada saat mengacu pada bilangan biner, oktal atau heksadesimal, sebuah huruf kecil akan ditambahkan pada akhir setiap bilangan untuk menunjukan basisnya. Contoh bilangan 45 heksadesimal akan ditulis sebagai 45h, 76 oktal akan ditulis 76o atau 76q, dan biner 11010011 akan terlihat 11010011b. Komputer pribadi IBM disebut komputer 16-bit karena instruksinya dapat mengoperasikan sejumlah 16-bit bilangan. Integer biasanya disimpan dalam memori sebagai byte, word atau double word. Untuk masing-masingnya mempunyai batasan bawah dan atasnya, sebagai berikut : Tipe penyimpan Bit Range (bawah-atas) Byte 8 0-225 Word 16 0-65,535 Double word 32 0-4,294,967,295 Walaupun masing-masing billangan membutuhkan jumlah bit yang berbeda-beda, pada kenyataannya semua bilangan disimpan di memori sebagai nilai biner karena arsitektur komputer adalah biner. Setiap bit memori adalah 1 atau 0, tetapi lokasi terkecil memori yang diberi alamat adalah byte. Pengubahan bilangan biner ke desimal Karena berbagai keperluan mungkin kita perlu mengubah bilangan dari biner ke desimal. Setiap posisi bit dalam bilangan biner adalah pangkat dari 2, seperti gambaran berikut : 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 Nilai 128 64 32 16 8 4 2 1 Untuk mendapatkan nilai desimal dari sebuah bilangan biner, kita harus menjumlahkan nilai setiap bit yang bernilai 1. Created By : IKA PARMA DEWI Page 4

0 0 0 0 1 0 0 1 Desimal 8 1 = 9 d Bilangan heksadesimal Bilangan biner yang banyak susah untuk dibaca, sehingga bilangan heksadsimal biasanya sering digunakan untuk menggambarkan memori komputer 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. Tabel berikut menunjukan bagaimana setiap 4 bit biner diterjemahkan ke dalam desimal dan heksadesimal : Biner Desimal Heksadesimal 0000 0 0 0001 1 1 0010 2 2 0011 3 3 0100 4 4 0101 5 5 0110 6 6 0111 7 7 1000 8 8 1001 9 9 1010 10 A 1011 11 B 1100 12 C 1101 13 D 1110 14 E 1111 15 F Posisi digit heksadesimal. Setiap posisi digit heksadesimal mewakili bilangan pangkat dari 16. 16 3 16 2 16 1 16 0 Nilai 4096 256 16 1 Created By : IKA PARMA DEWI Page 5

Bilangan dapat dikonversi dari heksadesimal ke desimal dengan mengalikan masing-masing digit dengan nilai posisinya. Misalnya bilangan 3BA4h, hasilnya 3 B A 4 Nilai posisi 4096 256 16 1 Hasil kali 12,288 2,816 160 4 = 15,268d Pada saat perkalian huruf B diganti 11 dan A dengan 10. Bilangan bertanda Bilangan biner mungkin bertanda atau tidak bertanda. Byte bertanda menggunakan 8 bit seluruhnya untuk nilai angkanya. Contoh, 11111111 = 255. 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 negatif, jika tanda sama dengan 1 maka bilangan negatif sebaliknya jika tanda bernilai 0 maka bilangan positif : Bit tanda 10001010 (bilangan negatif) 00001010 (bilangan positif) Ones complement. Untuk menghitung bilangan ones complement dari suatu bilangan maka balikan seluruh nilai bitnya. Contoh, ones complement dari 11110000b adalah 00001111b. Twos complement. Untuk menyimpan nilai negetif maka digunakan bilangan twos complement. Twos complement diperoleh dengan menambah satu pada bilangan ones complement. Contoh twos complement dari +6 (00000110b), balikan nilai bitnya untuk mendapatkan ones compelent menjadi 11111001b, untuk memperoleh twos complementnya ditambah satu menjadi : 11111010b (ini nilai twos complement untuk -6). Untuk mendapatkan kembali nilai +6 sebagai berikut : 1 1 1 1 1 0 1 0-6 0 0 0 0 0 1 0 1 ones complement + 1 tambah 1 0 0 0 0 0 1 1 0 + 6 Nilai maksimum dan minimum. 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. Created By : IKA PARMA DEWI Page 6

Tabel berikut menunjukan nilai maksimum dan minimum untuk byte, word dan double word bertanda : Tipe penyimpan Nilai terendah Nilai tertinggi Byte -127 +127 Word -32,767 +32,767 Double word -2,147,483,647 +2,147,483,647 Penyimpan karakter Komputer hanya dapat menyimpan bilangan biner, jadi bagaimana menyimpan karakter seperti A dan $? Telah dibuat suatu sistem menterjemahkan karakter ke dalam bilangan biner yaitu American Standard Code for Information Interchange (ASCII). Sistem lainnya, Extended Binary Code for Decimal Interchange (EBCDIC), digunakan oleh mini dan mainframe komputer IBM. Berikut ini tabel contoh kode ASCII : Kode ASCII Ctrl Mnemonic Penjelasan 00 NUL Karakter kosong 01 Ctrl A SOH Awal header 02 Ctrl B STX Awal teks 03 Ctrl C ETX Akhir teks 04 Ctrl D EOT Akhir transmisi 05 Ctrl E ENQ Pertanyaan (Enquiry) 06 Ctrl F ACK Pemberitahuan 07 Ctrl G BEL Bel 08 Ctrl H BS Backspace 09 Ctrl I HT Tab horison 0A Ctrl J LF Line feed 0B Ctrl K VT Tab vertikal 0C Ctrl L FF Form feed 0D Ctrl M CR Carriage return 0E Ctrl N SO Shift out 0F Ctrl O SI Shift in 10 Ctrl P DLE Data link escape 11 Ctrl Q DC1 Device control 1 12 Ctrl R DC2 Device control 2 13 Ctrl S DC3 Device control 3 14 Ctrl T DC4 Device control 4 15 Ctrl U NAK Pemberitahuan negatif 16 Ctrl V SYN Synchronous idle 17 Ctrl W ETB Akhir transmisi blok 18 Ctrl X CAN Batal 19 Ctrl Y EM Akhir medium 1A Ctrl Z SUB Pengurangan (substitusi) Created By : IKA PARMA DEWI Page 7

1B Ctrl [ ESC Escape 1C Ctrl \ FS Pemisah file 1D Ctrl ] GS Pemisah grup 1E Ctrl ^ RS Pemisah rekord 1F Ctrl - US Pemisah unit Standar kode ASCII hanya menggunakan 7-bit kode sedangkan nilai selebihnya yang mungkin 7Fh. 8-bit lainya adalah pilihan, digunakan oleh IBM-PC untuk memperluas kumpulan karakter. Nilai 80h FFh menggambarkan simbol 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 Penyimpanan bilangan. Setiap huruf atau digit memerlukan 1 byte memori. Namun ketika menyimpan bilangan, kita bisa lebih efisien, contoh, bilangan 123 dapat disimpan dalam memoori sebagai satu byte yaitu 01111011b. 1.3. Bahasa Assembly Pengenalan Insturksi bahasa assembly Meskipun mungkin untuk membuat program bahasa mesin menggunakan angka, bahasa assembly membuat pekerjaan lebih mudah. Instruksi bahasa assembly adalah representasi simbolik instruksi mesin tunggal. Dalam bentuknya yang paling sederhana, terdiri dari satu mnemonic, kode alfabet singkat yang secara harfiah membantu memori dalam mengingat instruksi CPU. Mnemonic mungkin diikuti oleh operand berikut contohnaya : clc inc ax mov ax, bx ; hanya sebuah mnemonic ; operand tunggal ; dua operand Setiap instruksi dapat diikuti oleh komentar, yang selalu diawali dengan titik koma (;). Operand, operand mungkin berupa register, variabel, lokasi memori atau nilai immediate. Contoh : 10 (nilai immediate) count (variabel) AX (register) [0200] (lokasi memori) Created By : IKA PARMA DEWI Page 8

Contoh program Program bahasa assembly dibangun oleh instruksi dan operand. Instruksi memerintahkan CPU untuk melaksanakan aksi, sedang variabel adalah lokasi memori dimana data disimpan. Variabel juga disebut operand memori. Operand langsung adalah konstanta seperti 5 dan 10. Berikut ini contoh program untuk menjumlahkan 3 bilangan dan menyimpannya dalam variabel yang disebut sum. Sum diasumsikan dalam heksadesimal. mov ax, 5 add ax, 10 add ax, 20 mov sum, ax int 20 ; memindahkan 5 ke dalam register ax ; menambahkan nilai 10h terhadap register ax ; menambahkan nilai 20h terhadap register ax ; menyimpan ax dalam variabel sum ; 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 (hexa) ke dalam AX, membuatnya sama dengan 15. baris 3 menambahkan 20 ke AX, membuatnya sama dengan 35, dan baris 4 menyalin AX ke dalam variabel dalam memori yang disebut SUM. Baris terakhir menghentikan program. Perintah DEBUG untuk menyusun dan test program adalah sebagai berikut : A 100 Mov ax, 5 Add ax, 10 Add ax, 20 Mov [0120], ax Int 20 R T T T G Q Perintah Komentar 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 Ekseskusi sisa program Keluar dari Debug kembali ke DOS Setelah isntruksi 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 : 35 4. mov sum, ax ax : 35 sum : 35 Created By : IKA PARMA DEWI Page 9

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 Gambar 1.1. Program contoh 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 di eksekusi adalah ADD AX, 0020 1.3.1. Elemen Dasar Bahasa Assembly Gambar 1.2. menunjukan kumpulan karakter dasar assembler. Karakter-karakter tersebut mungkin digunakan unntuk 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) @ _ & $ % :!. [] ~ () <> / {} = + # - ^ / ; * ` Created By : IKA PARMA DEWI Page 10

Gambar 1.2. Kumpulan karakter assembly Variabel, sebaliknya, adalah lokasi memori yang dapat berubah pada saat program dijalankan. Contoh berikut adalah konstanta : ABC 2134 5*6 (1+2)/3 Integer. Integer dibangun oleh digit-digit angka tanpa titik desimal, diikuti oleh karakter radix (d=desimal, h=hexa, q=octal, b=biner). Contoh : 11110000b 200 300d 4A6Bh 2047q 2047o Contoh Biner Desimal Desimal Heksadesimal Oktal Oktal Radix Bilangan real : angka real mengandung digit, titik desimal tunggal, eksponent (opsional) dan tanda awal (opsional). Sintaknya : Contoh [{+/-}] digit.digit [E{+/-}] digit 2.3 + 200.576 E +05 0.243526E 5-6.08 e3 Notasi sintak : dalam contoh sebelumnya dan pada contoh yang akan datang elemen opsional akan ditutup dengan kurung siku. Tanda kurung besar mengidentifikasikan pilihan yang diperlukan. Kata kunci yang diperlukan ditulis dalam huruf besar. Kata huruf kecil miring adalah istilah-istilah yang telah 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#?%& Created By : IKA PARMA DEWI Page 11

Konsatanta 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 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, oeprand dan komentar. Pernyataan secara umum dibagi ke dalam dua kelas yaitu instruksi dan perintah. Instruksi adalah pernyataan yang dapat dieksekusi, dan 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 DB memerintah assembler untuk membuat memori untuk variabel bernama count dan memberi nilai awal 50. Count DB 50 Isnturksi dieksekusi oleh mikroprosesor pada saat dijalankan. Instruksi dibagi ke dalam tipe-tipe-tipe umum : 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, variabel, simbol atau kata kunci. Nama mungkin mengandung salah satu karakter berikut : A Z, a z 0 9? _ @ Karakter Huruf Angka Tanda tanya Underscore Tanda @ Penjelasan Created By : IKA PARMA DEWI Page 12

$. Tanda dollar Titik Nama mempunyai batasan sebagai berikut : - Hanya 31 karakter pertama yang dikenali - Tidak ada perbedaan antara huruf besar dan huruf kecil - Karakter pertama tidak boleh angka - Jika digunakan, tanda (.) hanya bisa digunakan sebagai karakter pertama - Tidak boleh memilih nama yang sama dengan kata kunci (perintah/direktif) Variabel dan konstanta. Nama digunakan sebelum perintah alokasi memori mengidentifikasikan lokasi dimana data disimpan dalam memori. Atau mungkin juga digunakan untuk mendefinisikan konstanta, sebagai berikut : Count1 db 50 Count2 equ 100 ; variabel (alokasi memori) ; 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. Seperti contoh berikut dimana Label1 dan Label2 adalah label yang mengidentifikasikan lokasi dalam program : Label1 : mov ax, 0 mov bx, 0 Label2 : jmp label1 Kata kunci. Kata kunci atau reserved word selalu mempunyai arti yang sebelumnya telah didefinisikan. Keyword mungkin instruksi atau direktif. Contohnya : MOV, PROC, ADD, AX dan END. Kata kunci tidak dapat digunakan keluar dari konteknya atau sebagai identifier, contoh penggunaan ADD sebagai label adalah tidak benar : add : mov ax, 10 1.4. Contoh Program Hello Kita lihat gambar 1.3. yang menampilkan pesan Hello, world! pada layar. Baris 1 mengandung perintah title; semua karakter sisanya pada baris 1 dianggap komentar, sepreti pada baris 3. Sebelum menyelesaikan lebih lanjut, kita jelaskan dulu segmen, yaitu bagianbagian yang membangun program. Created By : IKA PARMA DEWI Page 13

Segmen code adalah bagian dimana instruksi program disimpan, segemen data adalah bagian dimana variabel disimpan. Dan segmen stack dimana stack disimpan. Stack adalah daftar dalam memori dimana program dijaga dalam variabel sementara, kembali dari subrutin dan semacamnya. Direktif dosseg menunjukan segmen standar untuk code, data dan segmen stack. Perintah model small mengindikasikan bahwa program menggunakan microsoft assembler memory small. Direktif stack menset 100 H (256) byte ruang stack untuk program. Title Program Hello world [1] [2] ; program ini menampilkan pesan Hello, world [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 21h [19] [20] mov ax, 4000h [21] int 21h [22] main endp [23] endp main [24] Gambar 1.3. Program Hello.asm Direktif.code menandai awal segemen kode. Perintah.data menandai awal segmen data, dimana variabel dideklarasikan. Baris 9-10 mengandung segmen data, dimana variabel yang diberinama hello_message dideklarasikan. Huruf DB adalah direktif define byte yang meminta assembler untuk mengalokasikan serangkaian byte memori untuk data yang mengikutinya. Baris 13 menggunakan perintah proc untuk mendeklarasikan prosedur main (mungkin juga menggunakan nama lain). Baris 14-15 menyalin alamat segmen data ke dalam reg DS. Instruksi MOV selalu mempunyai 2 operand. Tujuan dan sumber. Created By : IKA PARMA DEWI Page 14

Baris 17-19 menyebabkan string karakter dituliskan ke konsole. Mereka melakukannya dengan memanggil fungsi DOS yang menampilkan string yang alamatnya dalam register DX. Nomor fungsi diletakan dalam register AH. Baris 21-22 adalah perintah untuk berhenti dan kembali ke DOS. Baris 23 adalah akhir dari prosedur main dan baris 24 baris terakhir yang diassembly. Created By : IKA PARMA DEWI Page 15