Sto Assembly

Embed Size (px)

Text of Sto Assembly

P e m r o g r am an

Bahasa AssemblyS t osto@poboxes.com

IlmuKomputer.Com

Pemrograman Dengan Bahasa Assembly Edisi Online Versi 1.0

Penulis : Sto Editor : Arif Nopi

1

KATA PENGANTAR

Walaupun bahasa tingkat tinggi terus berkembang dengan segala fasilitas dan kemudahannya, peranan bahasa pemrograman tingkat rendah tetap tidak dapat digantikan. Bahasa assembly mempunyai keunggulan yang tidak mungkin diikuti oleh bahasa tingkat apapun dalam hal kecepatan, ukuran file yang kecil serta kemudahan dalam manipulasi sistem komputer. Buku ini disusun berdasarkan pengalaman dari penulis sendiri dalam

menggunakan bahasa assembler. Oleh karenanya buku ini disusun dengan harapan bagi anda yang tidak tahu sedikitpun tentang assembly dapat belajar sehingga assembler akan tampak sama mudahnya dengan bahasa tingkat tinggi. Setiap penjelasan pada buku ini akan disertai dengan contoh program yang sesederhana dan semenarik mungkin agar mudah dimengerti. Selain itu juga

diberikan TIP-TIP dan TRIK dalam pemrograman !

EDISI ONLINESetelah melalui beberapa kali cetakan di PT Gramedia, buku ini tidak mengalami cetakan lanjutan lagi dan mempertimbangkan cukup banyak yang tertarik dengan buku ini, maka saya memutuskan untuk mempublikasikannya secara online dan memberikannya secara gratis sehingga perpanjangan percetakan ke Gramedia tidak akan dilakukan lagi untuk buku ini. Edisi online ini bisa terlaksana berkat partisipasi dari teman kita melalui milist Jasakom Arif Nopi (nophiee@yahoo.com ) yang biasa menggunakan nick Ragila yang telah meluangkan waktunya yang begitu banyak untuk mengedit versi buku online ini. Melalui ini saya ucapkan banyak terima kasih yang tak terhingga atas kesediaannya menjadi sukarelawan demi kemajuan anak-anak bangsa. Anda diijinkan untuk mendistribusikan buku ini secara bebas asalkan tidak merubah sedikitpun isi yang ada di buku edisi online. Untuk mendistribuksikannya ataupun saran dan kritik anda bisa menghubungi penulis melalui email sto@poboxes.com atau sto@jasakom.com

Sto

25 Jun 2001 http://www.jasakom.com

2

DISKET PROGRAMBuku ini disertai dengan disket program sehingga memudahkan anda yang ingin mencoba program-program didalam buku ini. Semua listing program dalam buku ini disimpan pada directory ASM. Listing program telah diuji semua oleh penulis dan anda dapat memperoleh hasil jadinya dalam bentuk COM maupun EXE pada directory COM. Selain itu penulis juga menyadari bahwa bahasa assembler adalah bahasa yang rawan. Dengan sedikit kesalahan atau saja misalkan dalam anda lupa mengakhiri interupsi,

program

dengan

suatu

interupsi

kesalahan

pemakaian

komputer akan menjadi "hang". Tentunya akan sangat membosankan bila anda harus selalu mem-boot ulang komputer setiap kali menjalankan program anda yang

ternyata salah. Untuk itulah penulis membuat sebuah program yang sangat sederhana dengan ukuran file sekecil mungkin untuk membantu anda. Program tersebut bisa anda dapatkan pada disket program dengan nama SV.COM. Program SV merupakan sebuah program residen (akan anda pelajari pada bab 24) yang akan membelokkan vektor interupsi 05h(PrtScr). Sebelum anda mulai bereksperimen dengan program-program assembly,

jalankanlah dahulu program SV.COM dengan cara:

C:\SV

Setelah program SV dijalankan maka setiap kali program anda mengalami kemacetan anda tinggal menekan tombol PrtScr. Tombol PrtScr akan segera

memaksa program tersebut segera kembali ke DOS sehingga anda tidak perlu memBoot ulang komputer anda. Program SV dibuat dengan cara sesederhana dan sekecil mungkin (hanya 816 Byte) sehingga anda tidak perlu khawatir akan kekurangan memory. Listing

program SV sengaja tidak disertakan karena diharapkan setelah anda membaca bab 24(tentang residen) anda sudah bisa membuat program semacam ini. Bila anda ingin melihat listing dari program SV ini anda bisa menggunakan program

seperti SR.EXE(khusus untuk melihat listing), DEBUG.EXE atau TD.EXE(Bab 27).

3

UCAPAN TERIMA KASIHAtas diselesaikannya buku ini, penulis ingin mengucapkan terima kasih kepada Suriyanto, Rudi, Pieter, Harianto, Adi dan Sentosa yang telah

meminjamkan buku-buku bacaan, Aripin yang telah meminjamkan printer HP, Wandy, To-je, Aliang, Aminandar, Petrick, Suwangdi dan Weng yang selalu mendukung, serta teman- teman seperjuangan di STMIK BINA NUSANTARA, terutama yang sering menandatangani absen saya. Diluar itu semua, saya juga sangat berterima kasih kepada Sdr.

AriSubagijo yang telah banyak membantu, Staf serta pimpinan dari ELEX MEDIA KOMPUTINDO.

Jakarta, 27 November 1994

4

Sto

4

BAB IBILANGAN 1.1. BERBAGAI JENIS BILANGANDidalam pemrograman dengan bahasa assembler, bisa digunakan berbagai jenis bilangan. Jenis bilangan yang bisa digunakan, yaitu: Bilangan biner, oktaf, desimal dan hexadesimal. Pemahaman terhadap jenis-jenis bilangan ini adalah penting, karena akan sangat membantu kita dalam pemrograman yang

sesungguhnya.

1.1.1. BILANGAN BINERSebenarnya semua bilangan, data maupun program itu sendiri akan diterjemahkan oleh komputer ke dalam bentuk biner. Jadi pendefinisisan data dengan jenis bilangan apapun(Desimal, oktaf dan hexadesimal) akan selalu

diterjemahkan oleh komputer ke dalam bentuk biner. Bilangan biner adalah dua), bilangan 0 dan yang 1. hanya Karena terdiri berbasis atas 2, 2 maka

kemungkinan(Berbasis

yaitu

pengkorversian ke dalam bentuk desimal adalah dengan mengalikan suku ke-N dengan 2N. Contohnya: bilangan biner 01112 = (0 X 23) + (1 X 22) + (1 X 21) + (1 X 20) = 710.

1.1.2. BILANGAN DESIMALTentunya jenis bilangan ini sudah tidak asing lagi bagi kita semua. Bilangan Desimal adalah jenis bilangan yang paling banyak dipakai dalam

kehidupan sehari-hari, sehingga kebanyakan orang sudah akrab dengannya. Bilangan desimal adalah bilangan yang terdiri atas 10 buah

angka(Berbasis 10), yaitu angka 0-9. Dengan basis sepuluh ini maka suatu angka dapat dijabarkan dengan perpangkatan sepuluh. Misalkan pada angka 12310 = (1 X 1) + (1 X 100). 102) + (2 X 10

1.1.3. BILANGAN OKTALBilangan oktal adalah bilangan dengan basis 8, artinya angka yang dipakai hanyalah antara 0-7. Sama halnya dengan jenis bilangan yang lain, suatu dapat dikonversikan dalam bentuk desimal dengan N. Contohnya bilangan 128 = (1 X 81) + (2 X 80) = mengalikan suku ke-N dengan 8 1010. bilangan oktal

5

1.1.4. BILANGAN

HEXADESIMAL

Bilangan hexadesimal merupakan bilangan yang berbasis 16. Dengan angka yang digunakan berupa: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F. Dalam pemrograman assembler, jenis bilangan ini boleh dikatakan yang paling banyak digunakan. Hal ini dikarenakan mudahnya pengkonversian bilangan ini dengan bilangan yang lain, terutama dengan bilangan biner dan desimal. Karena berbasis 16, maka 1 angka pada hexadesimal akan menggunakan 4 bit.

1.2. BILANGAN BERTANDA DAN TIDAKPada assembler bilangan-bilangan dibedakan lagi menjadi 2, yaitu bilangan bertanda dan tidak. Bilangan bertanda adalah bilangan yang mempunyai arti plus(+) dan minus(-), misalkan angka 17 dan -17. Pada bilangan tidak bertanda, angka negatif(yang mengandung tanda '-') tidaklah dikenal. Jadi angka -17 tidak akan akan dikenali sebagai angka -17, tetapi sebagai angka lain. Kapan suatu bilangan perlakukan sebagai bilangan bertanda dan tidak? Assembler akan selalu melihat pada Sign Flag, bila pada flag ini bernilai 0, maka bilangan akan diperlakukan sebagai bilangan tidak bertanda, sebaliknya jika flag ini bernilai 1, maka bilangan akan diperlakukan sebagai bilangan bertanda. Pada bilangan bertanda bit terakhir (bit ke 16) digunakan sebagai tanda plus(+) atau minus(-). Jika pada bit terakhir bernilai 1 artinya bilangan tersebut adalah bilangan negatif, sebaliknya jika bit terakhir bernilai 0, artinya bilangan tersebut adalah bilangan positif(Gambar 1.1).

+--------------------------------------------+ | >>>> Bilangan tasm coba Turbo Assembler Version 2.0 1990 Borland International Assembling file: Error messages: Warning messages: Passes: Remaining memory: C:\>dir coba.* coba.ASM None None 1 307k

Copyright (c) 1988,

Volume in drive C is Sto Directory of C:\ COBA COBA OBJ ASM 2 file(s) 128 08-12-94 10:42p 128 08-12-94 10:41p 246 bytes 1,085,952 bytes free

5.3. LINGKINGFile object yang telah terbentuk dengan TASM, belum dapat dieksekusi secara langsung. Untuk membuat file object ke bentuk file yang dapat

dieksekusi(ektensi .COM atau .EXE) bisa anda gunakan file TLINK.EXE. Bila source program yang anda buat dalam bentuk EXE maka untuk membentuk

20

file dengan ektensi EXE bisa anda ketikkan : C:\>tlink coba Turbo Link Version 3.0 Copyright (c) 1987, 1990 Borland International Bila ketikkan: C:\>tlink/t coba Turbo Link Version 3.0 Copyright (c) 1987, 1990 Borland International source program yang dibuat adalah file COM, maka bisa anda

5.4. PERBEDAAN PROGRAM COM DAN EXEProgram dengan ektensi COM dan EXE mempunya berbagai perbedaan yang menyolok, antara lain : PROGRAM COM : - Lebih pendek dari file EXE - Lebih cepat dibanding file EXE - Hanya dapat menggunakan 1 segmen - Ukuran file maksimum 64 KB (ukuran satu segment) - sulit untuk mengakses data atau procedure yang terletak pada segment yang lain. - 100h byte pertama merupakan PSP(Program Segment Prefix) dari program tersebut. - Bisa dibuat dengan DEBUG - Lebih panjang dari file COM - Lebih lambat dibanding file COM - Bisa menggunakan lebih dari 1 segmen - Ukuran file tak terbatas sesuai dengan ukuran memory. - mudah mengakses data atau procedure pada segment yang lain. - Tidak bisa dibuat dengan DEBUG

PROGRAM EXE :

5.5. BENTUK ANGKAAssembler mengizinkan penggunaan beberapa ben