Kamis, 07 Januari 2010

Register dan Intterupt




MENGENAL REGISTER DAN ADDRESSING MODES


IV.1. REGISTER
            Register adalah merupakan sebagian memori dari mikro prosessor yang dapat diakses dengan kecepatan tinggi. Register adalah internal memori yang membantu diakses dengan kecepatan tinggi. Register adalah internal memori yang membantu Arithmatic Logic Unit dalam membantu dalam proses data dalam central prosessing Unit. Jadi dalam melakukan pekerjaannya mikroprosessor selalu menggunakan register-register sebagai perantaranya, jadi register dapat juga disebut sebagai kaki tangannya mikroprosessor. Boleh dianggap sebagai wakil variabel.
            Register merupakan sebagian kecil memori komputer yang dipakai untuk tempat penampungan data dengan ketentuan bahwa data yang terdapat dalam register dapat diproses dalam berbagai operasi dengan melihat berapa besar kemampuan menampung register tersebut. Sebagian besar register yang dapat pada mikroprosessor 8088 adalah 16 bit kecuali register high dan low maupun register tambahan yang dapat menampung data sampai 32 bit contohnya eax,ebx dan lain-lain. Ada 14 macam regiseter berukuran 16 bit (2 byte). Register bermacam-macam jenisnya maupun tugasnya dengan perincian sebagai berikut :
  1. general purpose register yang terbagi atas empat register dan dalam register general purpose terbagi atas high dan low yang masing-masing menangani register 8 bit. Dengan penjelasannya sebagai berikut :
1)      register ax (accumulator register)
register ax adalah biasanya berfungsi sebagai register yang menangani proses aritmatik atau proses pertambahan, pengurangan, perkalian, dan pembagian. Tapi bisa menyimpan data sementara maupun sebagai tempat transit data. Register ax terbagi atas high dan low yaitu :
·         register ah (8bit) sebagai register high sering dipakai sebagai service number pada interrupt
·         register al (8bit) sebagai register low merupakan tempat transit data.
2)      register bx (base register)
register bx biasanya berfungsi sebagai register basis untuk mereferensikan lokasi memori atau lebih tepatnya menunjukan lokasi memori. Yang dapat pula mengambil atau menulis langsung dari atau ke memori. Register bx terbagi atas high dan low yaitu :
·         register bh (8bit) sebagai register high
·         register bl (8bit) sebagai register low
3)      register cx (counter register)
register cx biasanya berfungsi sebagai counter atau digunakan jika nanti ada melakukan berapa banyak kita melakukan looping atau pengulangan. Atau lebih tepatnya menentukan banyaknya looping atau pengulangan. Cx terbagi atas high dan low yaitu :
·         register ch (8bit) sebagai register high
·         register cl (8bit) sebagai register low
4)      register dx (data register)
register dx biasanya berfungsi sebagai penampung isi hasil pembagian 16 bit. Merupakan pula register offset dari ds. Register dx juga menunjukkan nomor port pada operasi port. Register ini juga merupakan register offset atau menyimpan alamat data. Register dx juga terbagi atas high dan low yaitu :
·         register dh (8bit) sebagai register high
·         register dl (8bit) sebagai register low
  1. segment register adalah suatu register yang menunjukan alamat segment-segment yang mempunyai kekhususan, yang terbagi atas empat register juga yaitu :
1)      register cs (code segment register)
register cs fungsinya untuk menunjukkan segment suatu program berada. Pasangan dari register cs adalah register ip
2)      register ds (data segment register)
register ds fungsinya menunjukkan segment data dimana data-data program disimpan. Sedangkan pasangan dari register ds adalah register dx.
3)      register ss (stack segment register)
register ss fungsinya adalah menunjukkan segment stack dimana letak dari address stack. Yang berpasangan dengan register sp.
4)      register es (extra segment register)
register es tidak mempunyai tugas khusus, tapi register ini berguna untuk pemrograman untuk melakukan operasi ke segment lain yang tak terletak diregister cs, ss dan ds.
  1. pointer register adalah rergister yang mempunyai tugas khusus untuk menunjukan alamat offset, yang terbagi atas tiga register yaitu :
1)      register ip (instruction pointer)
register ip fungsinya menunjukkan offset dari alamat program. Yang berpasangan dengan register cs
2)      register sp (stack pointer)
register sp fungsinya mencatat alamat stack dan menunjukkan offset dari alamat stack, yang berpasangan dengan register ss
3)      register bp (base pointer)
fungsi dari register bp adalah untuk membaca dan menulis dengan segment ss (stack pointer)
  1. index register yang terbagi atas dua register yaitu :
1)      register si (source index register)
register si merupakan register yang mencatat alamat memori yang isi memorinya akan digunakan. Register si sebagai sumber pembacaan memori.
2)      register di (destination index register)
register di seperti si juga membaca alamat memori untuk tempat tujuan penulisan data di memori.
  1. flag register
flag register merupakan suatu pemberi tanda setiap operasi contohnya jika kita sedang menjalankan interupt maka if akan hidup atau jika sedang menjalankan debugger maka if akan hidup. Macam-macam dari flag register adalah of (oferflow flag), df (direction flag), if (intterupt flag), tf (trap flag), sf (sign flag), zf (zero flag), dan cf (carry flag).

IV. 2. ADDRESSING MODES
            Model-model pengalamatan atau addressing mide adalah bentuk pengalamatan yang berbeda-beda yang akan banyak kita gunakan dengan bentuk atai modenya sebagai berikut :

Addressing mode
format
Segment register
Immediate
data
Tidak ada
register
register
Tidak ada
direct
displacement
DS

Label
DS
Register Indirect
[BX]
DS

[BP]
SS

[SI]
DS

[DI]
DS
Base relative
[BX]+Displacement
DS

[BP]+Displacement
SS
Direct Indexed
[DI]+Displacement
DS

[SI]+Displacement
DS
Base Indexed
[BX][SI]+ Displacement
DS

[BX][DI]+ Displacement
DS

[BP][SI]+ Displacement
SS

[BP][DI]+ Displacement
SS
PENGENALAN INTERRUPT


IV. 1. INTERRUPT
Interrupt adalah suatu rutin atau procedure yang telah disediakan untuk melakukan proses tertentu. Setiap interrupt mempunyai alamat tercatat dalam memori yang bentuk array besar elemennya masing-masing 4 byte. Ke empat byte terbagi atas 2 byte pertama berisi kode offset dan berikutnya segment. Interupt jumlahnya semua ada 256 buah yang masing-masing penomorannya mulai dari interrupt 0(0h) sampai dengan 255 (ffh). Di dalam komputer terdapat beberapa buah interrupt. Tapi tidak semuanya digunakan. Interrupt sendiri terbagi atas dua jenis yaitu:

  1. Interrupt bios int (Basic Input Output System)
Interrupt bios adalah interrupt yang telah disediakan oleh komputer rom bios. Interrupt dari 0(0h) samapai dengan 31 (1fh) jumlahnya ada 32 buah.

Contoh int bios:
Int 05 = print screen
Int 08 = int timer
Int 09 = penangganan keyboard
Int 10H = penanganan monitor
Int 13H = penanganan disk
Int 16H = penanganan keyboard
Int 17H =- pencetakan ke printer
Int1CH = int timer

  1. Interrupt dos Int (Disk Opersting System)
Interrupt dos adalah interrupt yang telah disediakan oleh dos. Dan interrupt dos dari 32 (20h) sampai dengan 255 (ffh) jumlahnya sebanyak 224 buah
Contoh int int dos:
Int 20H = akhir program (.COM)
Int 21H = penangana DOS (file directory
Int 27H = membuat jadi resident

Di bawah ini akan dibahas mengenai pemakaian interrupt dan fungsi interrupt dengan disertai beberapa contoh penggunaannya.

V.2. Int 21H Dengan Service 02h
Fungsinya untuk mencetak 1 karakter ke layar

Input
AH = 2h
PL = kkode ascii dari karakter yang akan dicetak

Contoh
MOV AH,2
MOV DL,65
INT 21H : akan mencetak huruf  A

MOV AH,2
MOV DL,66
INT 21H  :akan mencetak huruf B

V.3. Int 21H Dengan Service 01h
Fungsinya untuk input 1 karakter dari keyboard
INPUT
AH=1

OUTPUT
AL=akan berisi kode ascii dari karakter yang ditekan.
Contoh
MOV AH, 1
INT 21H : komputer akan berhent; menunggu tombol ditekan. Misalnya tombol huruf A maka register AL akan berisi angka 65 adalah kode ascii dari karakter A

V.3. Int 21H Dengan Service 09h
Fungsinya untuk mencetak suatu kalimat ke layar
AH = 9
DX = diisi alamat offset dari variabel kalimat yang akan dicetak.

Contoh
Kal DB “saya belajar bahasa rakitan $”
MOV AH,9
MOV DX, OFFSET KAL
INT 21H

Untuk penyimpanan data banyak tampungannya adalah
DW = define word = numerc (2 Byte) = 0 s/d 65535
DO = define double word = numeric (4 byte) = 0 s/d 232

Contoh
Hitung db 20 ; hitung awalnya diber harga 20
Jumlah dw 50 ; var. jumlah awalnya diberi harga 50
Simpan dd 0

Int 10h
Merubah posisi kursor
Basic         : locate y, x
Pascal        : goto xy

V.4. Int 10h Dengan Service 02h
Fungsinya untuk menentukan posisi kursor
Input
AH = 2
BH = nomor halaman (0)
DH = posisi baris kursor
DL = posisi kolom kursor

Contoh
Memindahkan kursor ke baris 10 kolom 28
MOV AH,2
MOV BH,0
MOV DH,10
MOV DL,28
INT 10H

V.5. Int 10h Dengan Service 03h
Fungsinya mengetahui posisi kursor
INPUT
AH=3
BH=nomor halaman (0)

OUTPUT
DH=berisi posisi baris kursor
DL=berisi kolom kursor

Bila kursor ada pada posisi baris 10 kolom 40

MOV AH,3
MOV BH,0
INT 10H
(DH akan berisi angka 10 DL akan berisi angka 40)

Tidak ada komentar:

Poskan Komentar