Bahasa Rakitan Pengeretian Register dan jenis-jenis interrupt 12090673_Herwin prasetya
PENGERTIAN REGISTER Dalam pemrograman dengan bahasa Assembly, mau tidak mau anda harus berhubungan dengan apa yang dinamakan sebagai register. Lalu apakah yang dimaksud dengan register itu sebenarnya? Register merupakan sebagin memori dari mikroprosesor yang dapat diakses dengan kecepatan yang sangat tinggi. Dalam melakukan pekerjaanya mikroprosesor selalu menggunakan registerregister sebagai perantaranya, jadi register dapat di ibaratkan sebagai kaki dan tanganya mikroprosesor. JENIS-JENIS REGISTER Register yang digunakan mikroprosesor berbeda-beda pula, yaitu:
dibagi menjadi
5 bagian dengan tugasnya yang
Segmen Register Register yang termasuk dalam kelompok ini terdiri atas register CS,DS,ES,dan SS yang masingmasing nya merupakan register 16 bit. Register –register dalam kelompok ini secara umum digunakan untuk menunjukan alamat dari suatu segmen. Register CS (Code Segment) digunakan untuk menunjukan tempat dari segmen yang sedang aktif, sedangkan register SS (Stack Segment) menunjukan letak dari segmen yang digunakan oleh stack. Kedua register ini sebaiknya tidak sembarangan diubah karena akan menyebabkan kekacauan pada program anda nantinya. Register DS(Data Segment) biasanya digunakan untuk menunjukan tempat segment dimana data-data pada program disimpan. Umunya 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 tugs khusus. Register es ini biasanya digunakan untuk menunjukan suatu alamat di memory, misalkan alamat memori video. Pada prosesor 80386 terdapat tambahan register segment 16 bit,yaitu: FS<extra Segment> dan GS<Extra Segment>. Pointer dan index register Register yang termasuk dalam kelompok ini adalah register SP,BP,SI, dan DI yang masingmasing terdiri atas 16 bit. Register –register dalam kelompok 16 ini secara umum digunakan sebagai penunjuk atau pointer terhadap suatu lokasi di memori. Jenis-jenis register dan Interrupt | Bahasa Rakitan
1
Bahasa Rakitan Pengeretian Register dan jenis-jenis interrupt 12090673_Herwin prasetya
Register SP(Stack Pointer) yang berpasangan dengan register segment SS (SS:SP) digunakan untuk menunjukan alamat dari stack,sedangkan register BP (Base Pointer) yang berpasangan dengan register SS (SS:BP) mencatat suatu alamat di memori tempat data. Register SI (source index) dan register DI(destination index) biasanya digunakan pada operasi string dengan mengkases secara langsung pada alamat memory yang ditunjukan oleh kedua register ini. Pada prosesor 80386 terdapat tambahan register 32 bit, yaitu ESP,EBP,ESI dan EDI. General Purpose Register. Register yang termasuk dalam kelompok ini adalah register AX,BX,CX, dan DX yang masingmasing 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 menunjukan high sedangkan akhiran L menunjukan Low. +AX+
+BX+
+CX+
+DX+
+-+--+--+-+ +-+--+--+-+ +-+--+--+-+ +-+--+--+-+ | AH | AL | | BH | BL | | CH | CL | | DH | DL | +----+----+ +----+----+ +----+----+ +----+----+ 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 menunjukan suatu alamat offset dari suatu segment. 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. Index pointer register Register IP berpasangan dengan CS (CS:IP) menunjukan alamat di memory tempat dari intruksi (perintah) selanjutnya yang akan di eksekusi. Register IP juga merupakan register 16 bit. Pada prosesor 80386 digunakan register EIP yang merupakan register 32 bit. Flags register Jenis-jenis register dan Interrupt | Bahasa Rakitan
2
Bahasa Rakitan Pengeretian Register dan jenis-jenis interrupt 12090673_Herwin prasetya
Sesuai dengan namanya flags(bendera) register ini menunjukan kondisi dari suatu keadaan
. Karena setiap keadaan dapat digunakan 1 bit saja, maka sesuai jumlah bitnya, flags register ini mampu mencatat 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<Sign Flag> Jika digunakan bilangan bertanda 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. PF<Parity Flag>. Digunakan untuk menunjukan paritas bilangan. Bit ini akan bernilai 1 bila bilangan yang dihasilkan merupakan bilangan genap. DF . Digunakan pada operasi string untuk menunjukan arah proses. IF. CPU akan mengabaikan interupsi yang terjadi jika bit ini 0. TF digunakan terutama untuk debugging , dengan operasi step by step. AF. Digunakan oleh operasi BCD, seperti pada perintah AAA. NT. Digunakan pada prosesor 80286 dan 80386 untuk menjaga jalanya interupsi yang terjadi secara beruntun. IOPL . flag ini terdiri atas 2 bit dan digunakan pada prosesor 80286 dan 80386 untuk mode proteksi. PE. Digunakan untuk mengaktifkan mode proteksi. Flag ini akan bernilai 1 pada mode mode proteksi dan bernilai 0 pada mode real. MP<Monitir Coprosesor>. Digunakan bersama Flag TS untuk menangani terjadinya intruksi WAIT. EM<Emulate Coprosesor> Flag ini digunakan untuk mensimulasikan Coprosesor 80287 atau 80387. TS Flag ini tersedia pada 80286 keatas. ET<Extension Type> 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 pda saat mode proteksi, mikroprosesor akan memungkinkan dijalankanya aplikasi mode real pada mode proteksi. Register ini hanya terdapat pada 80386 keatas. 2. JENIS-JENIS LAYANAN INTERRUPT DAN NOMER SERVICE NYA DISERTAI DENGAN KEGUNAANYA MASING-MASING. PENGERTIAN INTERRUPT Jenis-jenis register dan Interrupt | Bahasa Rakitan
3
Bahasa Rakitan Pengeretian Register dan jenis-jenis interrupt 12090673_Herwin prasetya
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 masingmasing 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
Interup
Interupt
Interupt
| |
+---------------------------------------------------------------------------------------------------------------+ | *00h
Divide By Zero
10h
Video Service
|
Jenis-jenis register dan Interrupt | Bahasa Rakitan
4
Bahasa Rakitan Pengeretian Register dan jenis-jenis interrupt 12090673_Herwin prasetya
| *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
|
|
+--------------------------------------------------------------------------------------------------------------+ * 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.
Jenis-jenis register dan Interrupt | Bahasa Rakitan
5
Bahasa Rakitan Pengeretian Register dan jenis-jenis interrupt 12090673_Herwin prasetya
+---------------------------------------------------------------+ | 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 |
| |
+---------------------------------------------------------------+
6
Jenis-jenis register dan Interrupt | Bahasa Rakitan