Jumat, 20 Mei 2011

BAB III

BAB III
INTERRUPT
3.1. PENGERTIAN INTERRUPT
Interupsi adalah suatu permintaan khusus kepada mikroposesor untuk melakukan sesuatu. Bila terjadi interupsi, maka komputer akan menghentikan dahulu apa yang sedang dikerjakannya dan melakukan apa yang diminta oleh yang menginterupsi.
Pada IBM PC dan kompatibelnya disediakan 256 buah interupsi yang diberi nomor 0 sampai 255. Nomor interupsi 0 sampai 1Fh disediakan oleh ROM BIOS, yaitu suatu IC didalam komputer yang mengatur operasi dasar komputer. Jadi bila terjadi interupsi dengan nomor 0-1Fh, maka secara default komputer akan beralih menuju ROM BIOS dan melaksanakan program yang terdapat disana. Program yang melayani suatu interupsi dinamakan Interrupt Handler.
3.2. VEKTOR INTERUPSI
Setiap interrupt akan mengeksekusi interrupt handlernya masing-masing berdasarkan nomornya. Sedangkan alamat dari masing- masing interupt handler tercatat di memori dalam bentuk array yang besar elemennya masing-masing 4 byte. Keempat byte ini dibagi lagi yaitu 2 byte pertama berisi kode offset sedangkan 2 byte berikutnya berisi kode segmen dari alamat interupt handler yang bersangkutan. Jadi besarnya array itu adalah 256 elemen dengan ukuran elemen masing-masing 4 byte. Total keseluruhan memori yang dipakai adalah sebesar 1024 byte (256 x 4 = 1024) atau 1 KB dan disimpan dalam lokasi memori absolut 0000h sampai 3FFh. Array sebesar 1 KB ini disebut Interupt Vector Table (Table Vektor Interupsi). Nilai-nilai yang terkandung pada Interupt Vector Table ini tidak akan sama di satu komputer dengan yang lainnya.
Interupt yang berjumlah 256 buah ini dibagi lagi ke dalam 2 macam yaitu:
- Interupt 00h - 1Fh (0 - 31) adalah interrupt BIOS dan standar di semua komputer baik yang menggunakan sistem operasi DOS atau bukan. Lokasi Interupt Vector Table-nya ada di alamat absolut 0000h-007Fh.
- Interupt 20h - FFh (32 - 255) adalah interrupt DOS. Interrupt ini hanya ada pada komputer yang menggunakan sistem operasi DOS dan Interupt Handler-nya di-load ke memori oleh DOS pada saat DOS digunakan. Lokasi Interupt Vector Table-nya ada di alamat absolut 07Fh-3FFh. +---------------------------------------------------------------+
| Nomor Nama Nomor Nama |
| Interupt Interupt Interupt Interupt |
+---------------------------------------------------------------+
| *00h Divide By Zero 10h Video Service |
| *01h Single Step 11h Equipment Check |
| *02h Non MaskableInt(NMI) 12h Memory Size |
| *03h Break point 13h Disk Service |
| 04h Arithmatic Overflow 14h Communication (RS-232)|
| 05h Print Screen 15h Cassette Service |
| 06h Reserved 16h Keyboard Service |
| 07h Reserved 17h Printer Service |
| 08h Clock Tick(Timer) 18h ROM Basic |
| 09h Keyboard 19h Bootstrap Loader |
| 0Ah I/O Channel Action 1Ah BIOS time & date |
| 0Bh COM 1 (serial 1) 1Bh Control Break |
| 0Ch COM 2 (serial 2) 1Ch Timer Tick |
| 0Dh Fixed Disk 1Dh Video Initialization |
| 0Eh Diskette 1Eh Disk Parameters |
| 0Fh LPT 1 (Parallel 1) 1Fh Graphics Char |
+---------------------------------------------------------------+
Gambar 3.1. BIOS Interrupt
* Interrupt ini telah dipastikan kegunaannya oleh sistem untuk keperluan yang khusus , tidak boleh dirubah oleh pemrogram seperti yang lainnya.
- DEVIDE BY ZERO : Jika terjadi pembagian dengan nol maka proses akan segera
dihentikan.
- SINGLE STEP : Untuk melaksanakan / mengeksekusi intruksi satu persatu.
- NMI : Pelayanan terhadap NMI (Non Maskable Interrupt) yaitu
interupsi yang tak dapat dicegah.
- BREAK POINT : Jika suatu program menyebabkan overflow flag menjadi 1
maka interrupt ini akan melayani pencegahannya dan memberi
tanda error.
14
+-------------------------------------------+
| Nomor Nama Interrupt |
| Interrupt |
+-------------------------------------------+
| 20h Terminate Program |
| 21h DOS Function Services |
| 22h Terminate Code |
| 23h Ctrl-Break Code |
| 24h Critical Error Handler |
| 25h Absolute Disk Read |
| 26h Absolute Disk Write |
| 27h Terminate But Stay Resident |
+-------------------------------------------+
Gambar 3.2. DOS Interrupt
Didalam pemrograman dengan bahasa assembler kita akan banyak sekali menggunakan interupsi untuk menyelesaikan suatu tugas.



BAB IV
REGISTER
4.1.PENGERTIAN REGISTER
Dalam pemrograman dengan bahasa Assembly, mau tidak mau anda harus berhubungan dengan apa yang dinamakan sebagai Register. Lalu apakah yang dimaksudkan dengan register itu sebenarnya ?.
Register merupakan sebagian memori dari mikroprosesor yang dapat diakses dengan kecepatan yang sangat tinggi. Dalam melakukan pekerjaannya mikroprosesor selalu menggunakan register-register sebagai perantaranya, jadi register dapat diibaratkan sebagai kaki dan tangannya mikroprosesor.
4.2.JENIS-JENIS REGISTER
Register yang digunakan oleh mikroprosesor dibagi menjadi 5 bagian dengan tugasnya yang berbeda-beda pula, yaitu :
4.2.1. Segmen Register.
Register yang termasuk dalam kelompok ini terdiri atas register CS,DS,ES dan SS yang masing-masingnya merupakan register 16 bit. Register-register dalam kelompok ini secara umum digunakan untuk menunjukkan alamat dari suatu segmen.
Register CS(Code Segment) digunakan untuk menunjukkan tempat dari segmen yang sedang aktif, sedangkan register SS(Stack Segment) menunjukkan letak dari segmen yang digunakan oleh stack. Kedua register ini sebaiknya tidak sembarang diubah karena akan menyebabkan kekacauan pada program anda nantinya.
Register DS(Data Segment) biasanya digunakan untuk menunjukkan tempat segmen dimana data-data pada program disimpan. Umumnya isi dari register ini tidak perlu diubah kecuali pada program residen. Register ES(Extra Segment), sesuai dengan namanya adalah suatu register bonus yang tidak mempunyai suatu tugas khusus. Register ES ini biasanya digunakan untuk menunjukkan suatu alamat di memory, misalkan alamat memory video.
Pada prosesor 80386 terdapat tambahan register segment 16 bit, yaitu FS dan GS.
4.2.2. Pointer dan Index Register.
Register yang termasuk dalam kelompok ini adalah register SP,BP,SI dan DI yang masing-masing terdiri atas 16 bit. Register- register dalam kelompok
16 4.2.4. Index Pointer Register
Register IP berpasangan dengan CS(CS:IP) menunjukkan alamat dimemory tempat dari intruksi(perintah) selanjutnya yang akan dieksekusi. Register IP juga merupakan register 16 bit. Pada prosesor 80386 digunakan register EIP yang merupakan register 32 bit.
4.2.5. Flags Register.
Sesuai dengan namanya Flags(Bendera) register ini menunjukkan kondisi dari suatu keadaan< ya atau tidak >. Karena setiap keadaan dapat digunakan 1 bit saja, maka sesuai dengan jumlah bitnya, Flags register ini mampu memcatat sampai 16 keadaan. Adapun flag yang terdapat pada mikroprosesor 8088 keatas adalah :
- OF . Jika terjadi OverFlow pada operasi aritmatika, bit ini
akan bernilai 1.
- SF . Jika digunakan bilangan bertanda bit ini akan bernilai 1
- ZF . Jika hasil operasi menghasilkan nol, bit ini akan
bernilai 1.
- CF . Jika terjadi borrow pada operasi pengurangan atau carry
pada penjumlahan, bit ini akan bernilai 1.
0F 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| |NT| IOPL|OF|DF|IF|TF|SF|ZF| |AF| |PF| |CF|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
Gambar 4.2. Susunan Flags Register 8088
- PF . Digunakan untuk menunjukkan paritas bilangan. Bit ini akan
bernilai 1 bila bilangan yang dihasilkan merupakan bilangan genap.
- DF . Digunakan pada operasi string untuk menunjukkan arah
proses.
- IF . CPU akan mengabaikan interupsi yang terjadi jika
bit ini 0.
- TF . Digunakan terutama untuk Debugging, dengan operasi step by
step.
18
- AF . Digunakan oleh operasi BCD, seperti pada perintah AAA.
- NT . Digunakan pada prosesor 80286 dan 80386 untuk menjaga
jalannya interupsi yang terjadi secara beruntun.
- IOPL . Flag ini terdiri atas 2 bit dan digunakan pada
prosesor 80286 dan 80386 untuk mode proteksi.
Adapun susunan dari masing-masing flag didalam flags register dapat anda lihat pada gambar 4.2. Pada prosesor 80286 dan 80386 keatas terdapat beberapa tambahan pada flags register, yaitu :
- PE . Digunakan untuk mengaktifkan mode proteksi. flag ini
akan bernilai 1 pada mode proteksi dan 0 pada mode real.
- MP . Digunakan bersama flag TS untuk menangani
terjadinya intruksi WAIT.
- EM . Flag ini digunakan untuk mensimulasikan coprosesor
80287 atau 80387.
- TS . Flag ini tersedia pada 80286 keatas.
- ET . Flag ini digunakan untuk menentukan jenis coprosesor
80287 atau 80387.
- RF . Register ini hanya terdapat pada prosesor 80386 keatas.
- VF . Bila flag ini bernilai 1 pada saat mode proteksi,
mikroprosesor akan memungkinkan dijalankannya aplikasi mode real pada mode proteksi. Register ini hanya terdapat pada 80386 keatas.
ini secara umum digunakan sebagai penunjuk atau pointer terhadap suatu lokasi di memory.
Register SP(Stack Pointer) yang berpasangan dengan register segment SS(SS:SP) digunakan untuk mununjukkan alamat dari stack, sedangkan register BP(Base Pointer)yang berpasangan dengan register SS(SS:BP) mencatat suatu alamat di memory tempat data.
Register SI(Source Index) dan register DI(Destination Index) biasanya digunakan pada operasi string dengan mengakses secara langsung pada alamat di memory yang ditunjukkan oleh kedua register ini.
Pada prosesor 80386 terdapat tambahan register 32 bit, yaitu ESP,EBP,ESI dan EDI.
4.2.3. General Purpose Register.
Register yang termasuk dalam kelompok ini adalah register AX,BX,CX dan DX yang masing-masing terdiri atas 16 bit. Register- register 16 bit dari kelompok ini mempunyai suatu ciri khas, yaitu dapat dipisah menjadi 2 bagian dimana masing-masing bagian terdiri atas 8 bit, seperti pada gambar 4.1. Akhiran H menunjukkan High sedangkan akhiran L menunjukkan Low.
+ A X + + B X + + C X + + D X +
+-+--+--+-+ +-+--+--+-+ +-+--+--+-+ +-+--+--+-+
| AH | AL | | BH | BL | | CH | CL | | DH | DL |
+----+----+ +----+----+ +----+----+ +----+----+
Gambar 4.1. General purpose Register
Secara umum register-register dalam kelompok ini dapat digunakan untuk berbagai keperluan, walaupun demikian ada pula penggunaan khusus dari masing-masing register ini yaitu :
Register AX, secara khusus digunakan pada operasi aritmatika terutama dalam operasi pembagian dan pengurangan.
Register BX, biasanya digunakan untuk menunjukkan suatu alamat offset dari suatu segmen.
Register CX, digunakan secara khusus pada operasi looping dimana register ini menentukan berapa banyaknya looping yang akan terjadi.
Register DX, digunakan untuk menampung sisa hasil pembagian 16 bit.
Pada prosesor 80386 terdapat tambahan register 32 bit, yaitu EAX,EBX,ECX dan EDX.





MEMULAI DENGAN ASSEMBLY
5.1. TEXT EDITOR
Untuk menuliskan source file untuk program assembly bisa anda gunakan berbagai editor, misalkan SideKick, WordStar dan Word Perfect. Source file yang diketikkan harus berupa file ASCII, file ini bisa anda hasilkan melalui WordStar dengan file 'NON DOCUMEN', atau dengan SideKick.
Untuk meyakinkan bahwa source file yang anda buat adalah file ASCII, bisa anda coba ketikkan perintah Type pada A>. Bila file yang terlihat dengan perintah type sama persis dengan yang anda ketikkan pada editor, tanpa tambahan karakter-karakter yang acak, maka file tersebut adalah file ASCII. Source file untuk assembly harus berektensi .ASM.
5.2. COMPILER
Source file ASCII yang telah anda ketikkan perlu dicompile kebentuk file object dengan extensi .OBJ, dari file object inilah nantinya dapat dijadikan kebentuk file .EXE atau .COM.
Untuk mengcompile source file, misalnya file COBA.ASM menjadi file object dengan extensi .OBJ bisa anda gunakan file TASM.EXE dengan mengetikkan:
C:\>tasm coba
Turbo Assembler Version 2.0 Copyright (c) 1988,
1990 Borland International
Assembling file: coba.ASM
Error messages: None
Warning messages: None
Passes: 1
Remaining memory: 307k
C:\>dir coba.*
Volume in drive C is S’to
Directory of C:\
COBA OBJ 128 08-12-94 10:42p
COBA ASM 128 08-12-94 10:41p
2 file(s) 246 bytes
1,085,952 bytes free
5.3. LINGKING
File 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 source program yang dibuat adalah file COM, maka bisa anda ketikkan:
C:\>tlink/t coba
Turbo Link Version 3.0 Copyright (c) 1987,
1990 Borland International
5.4. PERBEDAAN PROGRAM COM DAN EXE
Program 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
PROGRAM EXE : - 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
5.5. BENTUK ANGKA
Assembler mengizinkan penggunaan beberapa bentuk angka , yaitu :
1. DESIMAL
Untuk menuliskan angka dalam bentuk desimal, bisa digunakan tanda 'D' pada akhir angka tersebut atau bisa juga tidak diberi tanda sama sekali, contoh : 298D atau 298 saja.
212. BINER
Untuk menuliskan angka dalam bentuk biner(0..1), harus ditambahkan tanda 'B' pada akhir angka tersebut, contoh : 01100111B.
3. HEXADESIMAL
Untuk menuliskan angka dalam bentuk hexadesimal(0..9,A..F), harus ditambahkan tanda 'H' pada akhir angka tersebut. Perlu diperhatikan bahwa bila angka pertama dari hexa berupa karakter(A..F) maka angka nol harus ditambahkan didepannya. Bila hal ini tidak dilakukan, assembler akan menganggapnya sebagai suatu label, bukannya sebagai nilai hexa. Contoh penulisan yang benar: 0A12H, 2A02H.
4. KARAKTER
Penulisan karakter atau string diapit oleh tanda petik dua (") atau tanda petik satu('), Contoh: ' Ini adalah karakter '.
5.6. LABEL
Label bisa anda definisikan dengan ketentuan akhir dari nama label tersebut harus berupa tanda titik dua (:). Pemberian nama label bisa digunakan:
- Huruf : A..Z (Huruf besar dan kecil tidak dibedakan)
- Angka : 0..9
- Karakter khusus : @ . _ $
Nama pada label tidak boleh terdapat spasi dan didahului oleh angka, Contoh dari penulisan label yang benar: mulai: MOV CX,7. Nama label terpanjang yang dapat dikenali oleh assembler adalah 31 karakter.
5.7. KOMENTAR
Untuk memberikan komentar pada source file digunakan tanda ';'. Apapun yang dtuliskan dibelakang tanda ';' akan dianggap sebagai komentar, Contoh : mulai: MOV BX,7 ; berikan nilai 7 pada BX
5.8. PERINTAH MOV
Perintah MOV digunakan untuk mengcopy nilai atau angka menuju suatu register,variabel atau memory. Adapun syntax untuk perintah MOV ini adalah :
MOV Tujuan,Asal
Sebagai contohnya : MOV AL,9 ; masukkan nilai 9 pada AL.
MOV AH,AL ; nilai AL=9 dan AH=9
MOV AX,9 ; AX=AH+AL hingga AH=0 dan AL:=9
Pada baris pertama(MOV AL,9), kita memberikan nilai 9 pada register AL. Kemudian pada baris kedua(MOV AH,AL) kita mengcopykan nilai register AL untuk AH. Jadi setelah operasi ini register AL akan tetap bernilai 9, dan register
22
AH akan sama nilainya dengan AL atau 9. Pada baris ketiga(MOV AX,9), kita memberikan register AX nilai 9. Karena AX terdiri atas AH dan AL, maka register AH akan bernilai 0, sedangkan AL akan bernilai 9.
Perintah MOV akan mengcopykan nilai pada sumber untuk dimasukan ke Tujuan, nilai sumber tidaklah berubah. Inilah sebabnya MOV(E) akan kita terjemahkan disini dengan mengcopy, dan bukannya memindahkan.
5.9. PERINTAH INT
Didalam pemrograman assambler, kita akan banyak sekali menggunakan interupsi untuk membantu kita dalam mengerjakan suatu pekerjaan. Untuk menghasilkan suatu interupsi digunakan perintah INT dengan syntax:
INT NoInt
Dengan NoInt adalah nomor interupsi yang ingin dihasilkan. Sebagai contohnya bila kita ingin menghasilkan interupsi 21h, bisa dituliskan dengan: INT 21h, maka interupsi 21h akan segera terjadi.

BAB III


BAB II

M E M O R I

Memori dengan komputer memiliki hubungan yang tak dapat dipisahkan, karena setiap komputer memerlukan memori sebagai tempat kerjanya. Memori ini dapat berfungsi untuk memuat program dan juga sebagai tempat untuk menampung hasil proses.
Yang perlu kita perhatikan bahwa memori untuk menyimpan program maupun hasil dari pekerjaan bersifat volatile yang berarti bahwa data yang disimpan cuma sebatas adanya aliran listrik. Jadi bila listrik mati maka hilang pulalah semua data yang ada di dalamnya. Hal ini mengakibatkan diperlukannya media penyimpan kedua yang biasanya berupa disket maupun hard disk.
2.1. Microprocessor
Pada IBM-PC terdapat suatu bagian penting yang disebut microprocessor atau yang sering disebut processor saja. Processor ini berfungsi untuk menangani keseluruhan dari kerja komputer kita. Pada processor inilah segala hal yang berhubungan dengan kerja komputer diatur dan dibagi prioritasnya dengan baik agar tidak terjadi kesalahan yang kemudian akan menyebabkan kacaunya informasi yang diperoleh.
Lama kelamaan tugas komputer tentu saja makin bertambah baik dari segi kuantitas maupun kerumitannya. Sejalan dengan itu processor juga makin dikembangkan. Processor yang baru sebenarnya hanyalah perbaikan dan pengembangan dari yang versi lama sehingga semua instruksi yang berlaku di processor lama dapat pula dikerjakan oleh yang baru dengan tentu saja beberapa keunggulan.
Adapun processor yang kini banyak beredar di pasaran :
- 8088 & 8086 :
Ini merupakan processor IBM-PC yang pertama sekali atau yang sering disebut XT. Processor 8088 menggunakan jalur bus data 8 bit sedangkan 8086 menggunakan 16 bit. Perbedaan jalur bus ini menyebabkan perbedaan jumlah data yang dikirim pada satu saat dan secara langsung mengakibatkan speed 8086 berada di atas 8088. Baik 8088 maupun 8086 mampu mengalamatkan memori hingga 1 MB.
- 80286 :
Versi pengembangan dari 8086. Pada 80286 ini beberapa instruksi baru ditambahkan. Selain itu dengan jalur bus yang sama dengan 8086, 80286 dirancang mempunyai speed di atas 8086. Selain itu 80286 dapat bekerja pada 2
8
mode yaitu mode real dan protected.
Mode real pada 80286 dapat beroperasi sama seperti 8088 dan 8086 hanya terdapat perbedaan dalam hal speed. Mode real ini dimaksudkan agar semua software yang dapat dioperasikan pada 8088/8086 dapat pula dioperasikan dengan baik di 80286. Pada mode protected 80286 mampu mengalamatkan sampai 16 MB memori.
- 80386 :
Processor 80386 merupakan sesuatu yang sangat baru dibanding 80286 sebab bus data yang digunakan di sini sudah 32 bit sehingga speednya juga jauh di atas 80286. Selain itu pada 80386 ditambahkan pula sebuah mode pemrograman baru yaitu mode virtual. Pada mode virtual ini 80386 mampu mengalamatkan sampai 4 GB memori. Sama seperti 80286, mode real dimaksudkan untuk kompatibilitas
dengan 8088/8086 dan mode protected untuk menjaga kompatibilitas dengan 80286.
2.2. Organisasi Memori Pada PC
Memori yang ada pada komputer perlu diatur sedemikian rupa sehingga mudah dalam pengaksesannya. Oleh sebab itu dikembangkanlah suatu metode yang efektif dalam pengorganisasiannya. Pada bagian ini akan dibahas mengenai pengorganisasian memori ini.
2.3. Pembagian Memori
Memori komputer terbagi atas 16 blok dengan fungsi-fungsi khusus yang sebagian besar adalah sebagai RAM (Random Access Memory) yang berfungsi sebagai penyimpan bagi hasil pengolahan pada komputer itu sendiri. Untuk lebih jelasnya diberikan pembagian fungsi pada blok memori ini secara kasar pada gambar 2.1.
---------------------------------------------------
block fungsi