• Tidak ada hasil yang ditemukan

I. PENGENALAN Pendahuluan

N/A
N/A
Protected

Academic year: 2021

Membagikan "I. PENGENALAN Pendahuluan"

Copied!
15
0
0

Teks penuh

(1)

Created By : IKA PARMA DEWI Page 1 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.

(2)

Created By : IKA PARMA DEWI Page 2

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.

(3)

Created By : IKA PARMA DEWI Page 3

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 down- ward-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).

(4)

Created By : IKA PARMA DEWI Page 4

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 :

27 26 25 24 23 22 21 20

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 .

(5)

Created By : IKA PARMA DEWI Page 5

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.

163 162 161 160

(6)

Created By : IKA PARMA DEWI Page 6

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.

(7)

Created By : IKA PARMA DEWI Page 7

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

(8)

Created By : IKA PARMA DEWI Page 8 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 ; hanya sebuah mnemonic

inc ax ; operand tunggal

mov ax, bx ; 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)

(9)

Created By : IKA PARMA DEWI Page 9 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 ; 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 variabel 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 (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 :

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

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

(10)

Created By : IKA PARMA DEWI Page 10

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) @ “ _ & $ % : ! . „ [] ~ () | <> / {} = + # - ^ / ; * `

(11)

Created By : IKA PARMA DEWI Page 11

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 :

Contoh Radix 11110000b 200 300d 4A6Bh 2047q 2047o Biner Desimal Desimal Heksadesimal Oktal Oktal

Bilangan real : angka real mengandung digit, titik desimal tunggal, eksponent (opsional) dan tanda awal (opsional). Sintaknya :

[{+/-}] digit.digit [E{+/-}] digit Contoh

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#?%&‟

(12)

Created By : IKA PARMA DEWI Page 12

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 :

Karakter Penjelasan A … Z, a … z 0 … 9 ? _ @ Huruf Angka Tanda tanya Underscore Tanda @

(13)

Created By : IKA PARMA DEWI Page 13

$ .

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 ; variabel (alokasi memori)

Count2 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. 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 bagian- bagian yang membangun program.

(14)

Created By : IKA PARMA DEWI Page 14

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.

(15)

Created By : IKA PARMA DEWI Page 15

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.

Referensi

Dokumen terkait

Jika kita sudah menulis program dalam bahasa assembly, pertanyaannya bagaimana menterjemahkan menjadi bahasa mesin dalam bentuk kode operasi yang siap dieksekusi ke sistim

Yaitu program yang digunakan untuk menerjemahkan instruksi-instruksi yang ditulis dalam bahasa pemrograman ke dalam bahasa mesin agar dapat dimengerti komputer.. Perangkat

Yaitu program yang digunakan untuk menerjemahkan instruksi-instruksi yang ditulis dalam bahasa pemrograman ke dalam bahasa mesin agar dapat dimengerti komputer.. Perangkat

Agar dapat dilaksanakan oleh komputer, algoritma harus ditulis dalam notasi bahasa pemrograman sehingga dinamakan program.jadi, program adalah perwujudan atau

Penerjemahan bahasa pemprogramana di bedakan menjadi 3 (tiga) macam, yaitu assembler, compiler, dan interprenter. 1) assembler : program yang di gunakan untuk menerjemahkan

pengembangan komputer generasi kedua yang lebih kecil, lebih cepat, lebih dapat diandalkan, dan lebih hemat energi.. • Menggantikan bahasa mesin dengan

Yaitu program yang digunakan untuk menerjemahkan instruksi-instruksi yang ditulis dalam bahasa pemrograman ke dalam bahasa mesin agar dapat dimengerti komputer.. Perangkat

 Penterjemahan bahasa assembly menjadi kode biner bahasa mesin dapat dilakukan secara manual atau menggunakan program yang disebut dengan assembler.... Teknologi dan