OLEH
NAMA :SILVESTER KELENG
NIM :65518052
Pertama-tama saya pamjakan puji dan syukur kepada Tuhan Yang Maha Esa,karena atas berkat dan
bimbinganya saya dapat menyelesaikan penulisan laporan ini tanpa kendala apapun.Semoga penulisan
laporan ini dapat dijadikan bahan pelajaran.
Terima kasih kepada ibu Wiwin Setya S.pd,M,Kom sebagai dosen mata kuliah Pemerograman
Assamble.
Penulisan ini disajikan berdasarkan konsep tugas mata kuliah Pemerograman Assamble,sehingga
tidak mengontroversi kepada pihak manapun.
Akhir kata saya ucapkan terima kasih
Nusa Dua.22-11-2020
Penulias
DAFTAR ISI
COVER...................................................................................................................................................I
KATA PENGANTAR..........................................................................................................................II
DAFTAR ISI....................................................................................’..................................................III
BAB I
1.1 PENGERTIAN ASSAMBLE.........................................................................................................1
1.2 KELEBIHAN BAHASA ASSAMBLLE.......................................................................................2
BAB II
2.1 SEGMEN.........................................................................................................................................3
2.2 OFFSET..........................................................................................................................................4
2.3 INTERRUPT...................................................................................................................................5
2.4 REGISTER.......................................................................................................................................6
2.5 PERINTAH-PERINTAH DEBUG.............../.................................................................................6
SUMBER REFRESNSI.........................................................................................................................8
BAB 1
BAHASA RAKITAN(ASSAMBLER)
1.1 PENGERTIAN BAHASA RAKITAN(ASSAMBLER)
Assambler termasuk dalam bahasa tingkat rendah dan merupakan bahasa dasar komputer.Bahasa
ini memerlukan logika yang cukup rumit,disamping intruksinya yang jauh berbeda dengan bahasa
perogram yang lainya.Program yang dihasilkan memiliki kecepatan yang paling baik .
1
BAB II
SEGMEN DAN OFFSET
2.1 SEGMEN
Segmen atau segmentasi merupakan skema manajemen memori yang mendukung cara pandang
seorang programmer terhadap memori. Ruang alamat lojik merupakan sekumpulan dari segmen-
segmen. Masing-masing segmen mempunyai panjang dan nama. Alamat diartikan sebagai nama
segmen dan offset dalam suatu segmen. Jadi jika seorang pengguna ingin menunjuk sebuah alamat dapat
dilakukan dengan menunjuk nama segmen dan offsetnya. Untuk lebih menyederhanakan implementasi,
segmen-segmen diberi nomor yang digunakan sebagai pengganti nama segmen. Sehingga, alamat lojik
terdiri dari dua tuple: [segmen-number, offset].
Meskipun seorang pengguna dapat memandang suatu objek dalam suatu program sebagai alamat
berdimensi dua, memori fisik yang sebenarnya tentu saja masih satu dimensi barisan byte. Jadi kita
harus bisa mendefinisikan pemetaan dari dua dimensi alamat yang didefinisikan oleh pengguna kesatu
dimensi alamat fisik. Pemetaan ini disebut sebagai sebuah segmen table. Masing-masing masukan
mempunyai segmen base dan segmen limit. Segmen base merupakan alamat fisik dan segmen limit
merupakan panjang dari segmen.
Sebagai contoh, kita mempunyai nomor segmen dari 0 sampai dengan 4. Segmen-segmen ini
disimpan dalam suatu memori fisik. Tabel segmen berisi data untuk masing-masing segmen, yang
memberikan informasi tentang awal alamat dari segmen di fisik memori (atau base) dan panjang dari
segmen (atau limit). Misalkan segmen 2 mempunyai panjang 400 dan dimulai pada lokasi 4300. Jadi,
referensi di byte 53 dari segmen 2 dipetakan ke lokasi 4300 + 53 = 4353. Suatu referensi ke segmen 3,
byte 852, dipetakan ke 3200 + 852 = 4052. referensi ke byte 1222 dari segmen 0 akan menghasilkan
suatu trap ke sistem operasi, karena segmen ini hanya mempunyai panjang 1000 byte. Lihat gambar 2.
Segmentasi.
Gambar 4.2. Segmentasi
2
2.2 OFFSET
Dalam teknik komputer dan pemrograman tingkat rendah (seperti bahasa assembly ), offset biasanya
menunjukkan jumlah lokasi alamat yang ditambahkan ke alamat dasar untuk mendapatkan alamat
absolut tertentu. Dalam arti offset ini, hanya unit alamat dasar, biasanya byte 8-bit, digunakan untuk
menentukan ukuran offset. Dalam konteks ini offset terkadang disebut alamat relatif .
Dalam instruksi IBM System / 360 , offset 12-bit yang tertanam dalam instruksi tertentu
menyediakan kisaran antara 0 dan 4096 byte. Misalnya, dalam instruksi cabang tanpa syarat
(X'47F0Fxxx '), offset heksadesimal xxx 12bit memberikan offset byte dari register dasar (15) ke
cabang ke. Offset ganjil akan menyebabkan pemeriksaan program (kecuali register dasar itu sendiri
juga berisi alamat ganjil) karena instruksi harus diselaraskan pada batas setengah kata untuk dieksekusi
tanpa interupsi program atau perangkat keras.
2.3 INTERRUPT
Interrupt adalah proses dalam komputer untuk meminta dilayani oleh mikroproccesor sesuai
dengan tingkat proritasnya yang telah diatur sedemikian rupa oleh sistem handware komputer.CPU
banyak melakukan routin untuk pelanyana pemrosesan ataupun kordinasi kepada IC penunjang atau
chipset dan peripheral pada saat diperlukan,sehingga CPU melakukan operasi dengan dua cara yaitu:
1.Operasi dengan polling
2.Operasi denga interupt
Operasi dengan polling berarti CPU terus menanyalkan/memantau ketiap komponen penunjang satu
persatu,meskipun sedang tidak melakukan pelayanan.Sedangkan operasi dengan interupt atau intrupsi
dilakukan oleh tiap-tiap komponen kepada CPU bilamana memrlikan pelayanan pemerosesan,sehingga
CPU tidak terus menerus menanyakan atau memantau komponen itu setiap intrupsi yang datang di
kontrol oleh interrupt.Adapun beberapa contoh interupt sebagai berikut:
1. Interrupt software(intruksi INT nH n=bilangan OOH hingga FFH)
2. Non maskabel interupt(intruksi handware dimana intrupsi ini mutlak tidak dapat di cegah
karena berasal dari sistem board atau IC)
3. Maskabel interrupt(berasal dari handware melalui pin INTR)yang dapat ditutup atau dicegah
dengan intruksi CLI berasal dari intruksi perangkat lunak.
Intruksi software terdiri darin 265 dan diberi nomor OOH hingga FFH .Alamat awal masing-masing
program pelayanan terdiri dari 4 byte ,2 byte untuk kode segment dan 2 byte untuk intruction pointer.
Dalam program assamble kita dapat melakukan interupsi secara printah INT yang dapat dilihat dari
tabel interupsi.Interrupt software dalam PC terdiri dari dua yaitu:
1. Interrup BIOS(Basic Input Output Sistem)
2. Interrupt DOS(Disk Operating Sistem)
3
2.4REGISTER
Register tidak dapat dilepas dari mikroproccessor,sebab pada mikroprocessor terdapat register yang
berfungsi menyimpan sementara atau taahapan operasi arimetika dan logika pada mikro
processor.Regitrasi dalam bahasa rakitan mengunakan Real Mode Memory yang sesuai
mikroprossesor intel generasi 8088 s/d pentium.
Registrasi yang terdapat pada mikroprocessor terdiri dari:
1. General purpose register(register serba guna)
2. Pointer register (register pointer)
3. Index register (register indeks)
4. Flag register (register status)
5. Segment register(register segment)
Semua register diatas lebarnya 32 bit kecuali register segment(CS,DS,ES,SS,FS dan GS)hanya
16 bit.Register 32 bit dapat digunakan sebagai register 16 bit kecuali general register.
Debug adalah alat bantu dalam perancangan peralatan berbasis mikro-prosesor, karena dapat
mencapai tingkat perangkat keras yang paling dalam dari suatu komputer, misal menulis informasi ke
dalam boot sector, direktori, FAT, menjalankan interupsi BIOS atau DOS
4
Kedua nilai tersebut merupakan kombinasi antara register CS (Code Segment)
dengan IP (Instruction Pointer).
0114 adalah isi alamat memori bersangkutan, byte ke-1 berisi nilai '01', dan byte ke-2 berisi nilai '14'.
Karena setiap alamat memori berisi satu byte, tentunya nilai 01 itulah yang berdiam pada alamat
offset 0100, sedangkan nilai 14 ada di alamat 0101 ADD[SI],DX adalah terjemahan intruksi dari
alamat memori bersangkutan.
Untuk mengubah nilai-nilai register internal dapat menggunakan perintah :
• RAX = mengubah nilai register AX
• RBX = mengubah nilai register BX
• RCX = mengubah nilai register CX
• RDX = mengubah nilai register DX
• RSP = mengubah nilai register SP
• RBP = mengubah nilai register BP
• RSI = mengubah nilai register SI
• RDI = mengubah nilai register DI
• RDS = mengubah nilai register DS
• RES = mengubah nilai register ES
• RSS = mengubah nilai register SS
• RCS = mengubah nilai register CS
• RIP = mengubah nilai register IP
Sebagai contoh untuk mengubah nilai register AX dari nilai '0000' ke nilai '1111' :
A:\>Debug (enter)
-RAX (enter)
AX 0000
: 1111 (diisi setelah ':' dan enter)
Contoh diatas juga berlaku untuk register internal lainnya dan untuk diperhatikan bahwa angka-angka
yang dimasukkan kedalam register harus nilai heksadesimal.
2. D (Dump)
Berfungsi untuk melihat isi blok memori.
Contoh :
A:\>Debug (enter)
-d 0100 (enter)
Hasil yang diperoleh : (import dari sidekick ke text !)
Dari tampilan tersebut, terbagi menjadi 3 bagian, yaitu :
• Bagian kiri : menampilkan alamat-alamat memori dengan format segment:offset
• Bagian tengah : menampilkan angka-angka dalam heksadesimal sebagai isi dari alamat-alamat
memori
• Bagian kanan : menampilkan kode-kode karakter ASCII sebagai terjemahan dari angka
heksadesimal tersebut
Debug hanya akan memperlihatkan 96 jenis karakter ASCII tercetak (printable character), mulai dari
nilai desimal 33 - 127. Di luar nilai itu, karakter yang ditampilkan hanyalah berupa tanda titik (dot
atau period).
5
Beberapa parameter yang dapat digunakan :
• L (length / panjang)
Memiliki arti menampilkan data sepanjang 2 byte, bila parameter 'L' tidak diberikan, maka otomatis
akan ditampilkan 128 byte data.
-D 0100 L 2 (enter)
• Alamat awal - alamat akhir
-D 0100 01FF (enter)
• Alamat segment:offset
-D FFFF:0000 (enter)
• Alamat segment:offset sampai segment:offset
-D F000:E000 F000:E000 (enter)
3. U (Unassemble)
Berfungsi untuk menampilkan listring dari suatu program bahasa mesin.
Contoh :
A:\>Debug (enter)
-U FFFF:0000 (enter)
6
6. C (Compare)
Berfungsi untuk membandingkan isi sebuah blok memori dengan isi blok memori lainnya.
Format perintah : C alamat1 panjang alamat2
Contoh :
A:\>Debug (enter)
-C 0100 L 10 0200 (enter)
Berarti mulai offset 0100 sebanyak 16 byte (10 heksa) bandingkan dengan offset 0200. Hasil yang
dimunculkan hanyalah nilai-nilai yang berbeda setiap alamat.
Apabila dilayar tidak memberikan reaksi apapun selain kembali ke prompt '-' atau hyphen, berarti
kedua blok memori persis sama.
7. S (Search)
Berfungsi untuk mencari data baik yang berupa karakter maupun untaian karakter (string) di dalam
suatu blok memori tertentu.
Apabila dalam pencarian, data yang dicari diketemukan, maka akan ditampilkan semua alamat dari
data tersebut lengkap dengan nilai segment dan offsetnya, sebaliknya bila tidak diketemukan akan
kembali ke prompt '-'.
Contoh :
A:\>Debug (enter)
-S F000:E000 L FF "IBM" (enter)
Berarti mulai alamat F000:E000 sebanyak FFh byte cari string "IBM".
-S F000:E000 L FF "A" (enter)
Berarti mulai alamat F000:E000 sebanyak FFh byte cari string "A"..
8. M (Move)
Berfungsi untuk memindahkan atau menyalin data yang ada di suatu lokasi memori ke alamat memori
lainnya.
Format perintah : M alamat asal panjang alamat tujuan
Contoh :
A:\>Debug (enter)
-M 0100 L 7F 0200 (enter)
Berarti mulai alamat offset 0100 sebanyak 7Fh byte isi memorinya pindahkan atau kopikan ke offset
0200.
Dari pembahasan perintah-perintah DEBUG dapat disimpulkan bahwa DEBUG dibuat dengan
tujuan untuk dapat mengeksplorasi program-program yang sudah dibuat berikut segala dampaknya
terhadap sistem dan aplikasi, sedangkan ASSEMBLY diadakan dengan untuk mempermudah seorang
programmer dalam menyusun instruksi-instruksi pada sebuah program yang sedang dibuat.
7
SUMBER REFRENSI
http://staff.uny.ac.id/sites/default/files/07%20Modul%20Bahan%20Ajar-04_0.pdf
https://reo-technoart.blogspot.com/2014/09/pemrograman-bahasa-assembly-assembler.html\
http://ftp.gunadarma.ac.id/linux/docs/v06/Kuliah/SistemOperasi/BUKU/SistemOperasi-4.X-
2/ch04s04.html
https://www.slideshare.net/PhiliaMagdalenaEffendie/handout-rakitan