UJIAN AKHIR SEMESTER TEORI
PEMROGRAMAN BAHASA RAKITAN
Dosen : Nahar Mardiyantoro,M.Kom
1. Pemahaman atau analogi tentang No.Service dan No Interupsi :
No Interupsi
Interrupt atau Interupsi secara harfiah dalam bahasa Indonesia diartikan menyela, selaan atau menjegal , istilah kerennya interupsi. Dalam kegiatan kehidupan sehari - hari bisa diibaratkan sebagai suatu proses berjalan , namun belum selesai proses tersebut melakukan tugasnya sudah dilaksanakan proses yang lain lagi. Intrupsi atau perintah pada mikrokomputer 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 yang disusun berbentuk singkatan kata yang disebut Mnemonic . Interupsi pada DOS merupakan interupsi dari software sistem operasi yang terdiri dari Int 20h untuk kembali ke DOS dan int 21h = interupsi/interap merupakan perintah untuk mengeksekusi /memunculkan hasil untuk operasi input/output .
No Service
Pada DOS (Disk Operating System) untuk mengerjakan beberapa intruksi maka digunakan pasangan, sedangkan DOS memiliki banyak fungction service sehingga dibutuhkan No servis untuk menampilkan perintah No service merupakan nomor layanan pasangan dari nomor interupsi sehingga menghasilkan action tertentu. Apabila salah satu pasangan diubah atau tidak sesuai atau bukan pasangannya antara interupsi dan no service maka hasil action akan berbeda bahkan mungkin terjadi eror.
2. Beberapa no service dan pembedanya yang biasa kita gunakan dalam pembuatan program asembly :
int 21h , ah 01h
NO. INTERRUPT = 21h
NO. SERVICE = 01h
FUNCTION = Input 1 Karakter (Keyboard Input)
Mengamil Input Dari Keyboard (Standard Input Device), lalu menampilkan karakter ke layar (Standard Output Device) dan menyimpan karakter tersebut di AL. Penekanan tombol Ctrl-Break akan dicek. Jika tombol tersebut ditekan, interupt 23h akan dieksekusi.
INPUT :
AH = 01H
OUTPUT :
AL = Kode ASCII Hasil Input Tercetak di layar
int 21 h , ah 02h
NO.INTERRUPT = 21h
NO SERVICE = 02h
Fungsi = Output 1 Karakter (Character Output On Screen)
Menampilkan karakter dalam register DL ke standard output device.. Jika karakter dalam register DL adalah backspace (ASCII 8) kursor akan digerakkan ke kiri satu posisi (nondestruktif). Jika Ctrl-Break terdeteksi setelah output, INT 23h dieksekusi.
INPUT :
AH = 02H
DL = Kode ASCII
OUTPUT :
Karakter Tertulis Di Layar
int 21h, ah 03h
NO. INTERRUPT = 21h
NO. SERVICE = 03h
FUNCTION = Auxiliary Input (Standard Auxiliary Device Input)
Menunggu sebuah karakter dari standard auxiliary device, lalu menyimpan karakter itu ke register AL (Mengambil Masukan Dari Auxiliary Device Yang Aktif)
INPUT :
AH = 03H
OUTPUT :
AL = Kode ASCII (Karakter dari auxiliary device)
Int 21 h, ah 07h
NO. INTERRUPT = 21h
NO. SERVICE = 07h
FUNCTION = Input 1 Karakter Tanpa Echo Tidak Mengecek Ctrl-C (Direct Console Input Without Echo). Menunggu hingga sebuah karakter diketikkan dari standard input device dan menyimpannya ke register AL. Service ini sangat mirip dengan service 01h, hanya saja pada service ini karakter tak ditampilkan ke layar. Service ini tidak mengecek Ctrl-C atau Ctrl-Break. Service ini sering dipakai untuk pemasukan password karena tak menampilkan karakter yang diketikkan.
INPUT :
AH = 07H
OUTPUT :
AL = Kode ASCII Yang Ditekan
Int 21 h , ah 09h
NO. INTERRUPT = 21h
NO. SERVICE = 09h
FUNCTION = Mencetak Satu Baris String (Print String).
Menampilkan karakter-karakter dalam string ke standard output device.
DS:DX merupakan Alamat Data yang dicetak yang diakhiri dengan tanda '$'.
INPUT :
AH = 09H
DS = Segment Variabel Yang Akan Dicetak
DX = Offset Variabel Yang Akan Dicetak
OUTPUT :
Kalimat Tercetak Di Layar
3. Berikut coding program untuk menampilkan satu karakter yang diinputkan melalui keyboard :
.model small
.code
org 100h
mulai:
mov ah, 07h
int 21h
mov ah, 02h
mov dl, al
int 21h
int 20h
end mulai
dari coding diatas bisa kita lihat hasilnya bila dimasukan dalam program asmbley yang dijalankan melalui DOS prompt
4.
Anti Detection routines akan menjadi payung dari search dan copy,menghindari deteksi, baik oleh pengguna komputer maupun software, pendeteksi virus membatasi scope pencarian dan penduplikatan, menjalankan routine pada saat komputer sedang mengalami idle (stand by). Virus akan mencari, setelah ketmu dikunci dan dicopy , bagaimana mempersempit ruang lingkup pencarian kemudian pengcopyan dilakukan bila pc dalam keadaan idle/ diam.
Search : bagian ini berfungsi untuk menemukan file atau lokasi baru yang akan dijadikan target berikutnya untuk diserang. Bagian ini juga menentukan bagaimana cara virus bereproduksi, apakah secara cepat atau lambat, apakah dapat menyerang sebagian atau seluruh bagian dari target
Copy : bagian ini berfungsi untuk meng-copy dirinya sendiri pada area yang telah ditentukan oleh search routine. Ukuran dari bagian ini bergantung pada kompleksitas dari virus yang di-copy. Sebagai contoh, virus yang menyerang file berekstensi COM umumnya berukuran lebih kecil daripada virus yang menyerang file EXE, karena file EXE memiliki struktur yang lebih kompleks, sehingga virus lebih sukar untuk melekatkan diri pada file EXE.
Sebagai contoh, bagian ini akan mengaktifkan virus jika selama lima menit tidak ada tombol keyboard yang ditekan,dengan asumsi pengguna tidak sedang menggunakan komputer. Kadang kala virus masih digabungkan dengan bagian lain seperti routine untuk merusak sistem yang diserang atau routine yang berfungsi hanya untuk lelucon....
"Ha! Gotcha ".....
5. Performance pembuatan virus menggunakan bahasa assembly dibandingkan dengan bahasa pemrograman level tinggi :
Bahasa rakitan memungkinkan programmer untuk mengontrol serta memanfaatkan secara penuh kapabilitas yang terdapat atas suatu perangkat keras, berbeda halnya dengan bahasa pemrograman tingkat tinggi yang memiliki banyak keterbatasan dalam pemanfaatan secara penuh suatu perangkat keras. Bahasa rakitan menjanjikan tingkat unjuk kerja yang maksimum karena sifatnya yang menerjemahkan secara langsung instruksi rakitan menjadi instruksi mesin, berbeda halnya dengan bahasa pemrograman tingkat tinggi yang biasanya menerjemahkan sebuah instruksi menjadi sejumlah kode mesin.
Pembuatan virus dengan bahasa pemrograman level tinggi memiliki tingkat kompleksitas yang dimiliki oleh berbagai jenis virus dan worms ini dapat menyebabkan bertambahnya waktu yang diperlukan para peniliti virus untuk melakukan proses disassembly (pengubahan kembali kode mesin menjadi kode assembly) dan analisa.