Anda di halaman 1dari 12

LAPORAN

ASSAMBLE,SEGMEN DAN OFFSET


MATA KULIAH PEMEROGRAMAN ASAMBLLE

OLEH
NAMA :SILVESTER KELENG
NIM :65518052

UNIVERSITAS TEKNOLOGI INDONESIA


DENPASAR
2020
KATA PENGANTAR

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.2 KELEBIHAN BAHASA RAKITAN(ASSAMBLER)


Kelebihan bahasa assambler adalah:
1. Memiliki fasilitas fungsi dan makro(ciri khas bahasa program yang menyebabkan
program menjadi lebih mudah).
2. Program dapat dibuat secara modular(dipecah dalam modul-modul kecil dan dapat
diintegrasikan kembali)
3. Ukuran program lebih kecil sehingga menghemat media penyimpanan
4. Lebih dekat dengan handware sehingga seluruh kemampuan komputer dapat
dimanfaatkan secara maksimal.

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.

2..5 PERINTAH-PERINTAH DEBUG

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

Hal-hal penting dalam Debug :


*Hanya mengenal dan selalu bekerja dengan bilangan-bilangan heksadesimal
*Bekerja dengan penunjukan ke alamat-alamat memori memakai format segment : offset.
*Kemampuan mengakses daerah "very low level access" (software / hardware). Setiap jenis komputer
(mainframe, minicomputer, microcomputer) memiliki sarana debugging berbeda)
PERINTAH DEBUG
1. R (Register)
Untuk menampilkan informasi komposisi register-register di dalam mikroprosesor, alamat memori,
serta isi dari alamat memori tersebut yang mungkin berupa instruksi yang akan dilaksanakan oleh
komputer, atau data.
Contoh :
A:\>DEBUG (enter)
r (enter)
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=29E7 ES=29E7 SS=29E7 CS=29E7 IP=0100 NV UP EI PL NZ NA PO NC
29E7:0100 0114 ADD[SI],DX DS:0000=20CD
AX, BX, CX, DX, SP, BP, SI, DI, DS, ES, SS, CS, dan IP adalah register internal mikroprosesor yang
dipakai dalam CPU.
NV, UP, EI, PL, NZ, NA, PO, dan NC adalah output dari sebuah register yang disebut register status
atau register flag.
Angka 29E7:0100 adalah alamat lokasi memori dengan format segment:offset.

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)

Hasil : import dari sidekick ke text !

Beberapa bentuk perintah 'U' :


• U F000:E05B (enter)
4. E (enter)
Berfungsi untuk mengisi atau mengubah data dalam memori.
Contoh :
A:\>Debug (enter)
-E 0100 (enter)
Hasil :
-E 0100
29E7:0100 01.
Setelah angka 01, dapat dimasukkan nilai untuk mengganti angkat tersebut langsung di belakangnya
yang diakhir dengan menekan ENTER atau menekan SPACE BAR untuk berpindah ke alamat
berikutnya atau menekan tanda '-' (Hyphen) untuk mundur ke lokasi sebelumnya.
5. F (Fill)
Berfungsi untuk mengisi lokasi memori. Perbedaan dengan perintah 'E (Enter)', yang menawarkan
modifikasi memori secara satu alamt demi satu alamat, sedang 'F (Fill" untuk mengubah isi alamat
memori dalam jumlah besar, sesuai dengan rentang (range) yang dikehendaki.
Contoh :
A:\>Debug (enter)
-F 0100 017F 58 (enter)
Berarti isilah mulai alamat offset 0100 sampai offset 017F dengan nilai heksa 58 (karakter ASCII 'x').
atau
- F F 0100 017F 'x' (enter)6
Beberapa bentuk perintah 'F' :
• F 0100 L 1 41 (enter)
Arti : mulai offset 0100 sebanyak 1 byte diisi dengan nilai heksa 41 (karakter ASCII 'A').

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 '-'.

Format perintah : S alamat awal panjang alamat akhir

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

Anda mungkin juga menyukai