Anda di halaman 1dari 17

LAPORAN PRAKTIKUM

ORGANISASI KOMPUTER & BAHASA ASSEMBLY


ADDRESSING MODES

Kelas

INF 2B Praktikum 1

Nama

Michael Julyus C. M.

NIM

J3C113038

PROGRAM KEAHLIAN MANAJEMEN INFORMATIKA


DIREKTORAT PROGRAM DIPLOMA
INSTITUT PERTANIAN BOGOR
BOGOR
2014

KATA PENGANTAR

Puji dan Syukur Penulis Panjatkan ke Hadirat Tuhan Yang Maha Esa karena berkat limpahan
Rahmat dan Karunia-Nya sehingga penulis dapat menyusun laporan ini tepat pada waktunya.
Laporan ini membahas mengenai Addressing Modes.
Dalam penyusunan laporan ini, penulis banyak mendapat tantangan dan hambatan akan tetapi
dengan bantuan dari berbagai pihak tantangan itu bisa teratasi. Olehnya itu, penulis
mengucapkan terima kasih yang sebesar-besarnya kepada semua pihak yang telah membantu
dalam penyusunan makalah ini, semoga bantuannya mendapat balasan yang setimpal dari Tuhan
Yang Maha Esa.
Penulis menyadari bahwa laporan ini masih jauh dari kesempurnaan baik dari bentuk
penyusunan maupun materinya. Kritik konstruktif dari pembaca sangat penulis harapkan untuk
penyempurnaan makalah selanjutnya.
Akhir kata semoga laporan ini dapat memberikan manfaat kepada kita sekalian.

Bogor, 11 Desember 2014

Penulis

Michael Julyus C. M. | J3C113038

DAFTAR ISI

KATA PENGANTAR........................................................................................................................... 2
I.

TUJUAN PERCOBAAN .......................................................................................................... 4

II.

TEORI PENUNJANG.............................................................................................................. 5

III.

TUGAS PENDAHULUAN ..................................................................................................... 11

IV.

LISTING PROGRAM ............................................................................................................ 12

V.

ANALISA PROGRAM .......................................................................................................... 13

VI.

PENUTUP ........................................................................................................................... 16
KESIMPULAN ...................................................................................................................... 16
SARAN ................................................................................................................................ 16

DAFTAR PUSTAKA ......................................................................................................................... 17

Michael Julyus C. M. | J3C113038

I.

TUJUAN PERCOBAAN

Tujuan dari praktikum ini adalah agar mahasiswa dapat:


1. Memahami serta mengetahui berbagai macam tipe data di dalam bahasa assembly,
2. Mengetahui bagaimana komputer menyimpan suatu nilai di dalam memori,
3. Mengetahui bagaimana cara untuk menggunakan pointer,
4. Mengetahui bagaimana cara memanipulasi data dengan menggunakan berbagai macam
gerbang logika.
5. Mengetahui bagaimana cara menggunakan addressing modes sesuai dengan kebutuhan.

Michael Julyus C. M. | J3C113038

II.

TEORI PENUNJANG

Pendahuluan
Pada bab-bab sebelumnya kita telah lihat, bagaimana perintah "MOV" mengcopykan
suatu nilai kepada suatu register atau variabel. Kita dapat mengcopykan nilai pada suatu register,
variabel ataupun lokasi memori dengan berbagai cara. Secara umum banyaknya cara yang dapat
digunakan dapat dibagi menjadi 7, seperti pada Tabel 11.1.
Tabel 11.1. Adressing Modes
No.

Addressing Mode

Format

Segment Register

Immediate

Data

Tidak Ada

Register

Register

Tidak Ada

Direct

Displacement

DS

Label

DS

[BX]

DS

[BP]

SS

[SI]

DS

[DI]

DS

[BX] + Displacement

DS

[BP] + Displacement

SS

[DI] + Displacement

DS

[SI] + Displacement

DS

[BX] [SI] + Displacement

DS

Register Indirect

Base Relative

Direct Indexed

Base Indexed

Michael Julyus C. M. | J3C113038

[BX] [DI] + Displacement

DS

[BP] [SI] + Displacement

SS

[BP] [DI] + Displacement

SS

Perlu diperhatikan bahwa ada juga pengcopyan data yang terlarang, yaitu:
1. Pengcopyan data antar segment register, seperti:
MOV DS,ES
Untuk memecahkan hal ini, anda bisa menggunakan register general purpose
sebagai perantara, seperti:
MOV AX,ES
MOV DS,AX
Selain dengan cara diatas, anda bisa juga menggunakan stack sebagai perantara, seperti:
PUSH ES
POP DS
2. Pemberian nilai untuk segment register (DS, ES, CS, SS) secara langsung, seperti:
MOV ES,0B800h
Untuk memecahkan hal ini, anda bisa menggunakan register general purpose
sebagai perantara, seperti:
MOV AX,0B800h
MOV ES,AX
3. Pengcopyan data langsung antar memori, seperti:
MOV MemB,MemA
Untuk memecahkan hal ini, anda bisa menggunakan register general purpose
sebagai perantara, seperti:
MOV AX,MemA

Michael Julyus C. M. | J3C113038

MOV MemB,AX
4. Pengcopyan data antar register yang berbeda tipenya (8 bit dengan 16 bit) tanpa
menggunakan pointer, seperti:
MOV AL,BX

Pelajarilah bagian ini dengan baik, karena addressing modes merupakan dasar bagi
programmer bahasa assembly yang harus dikuasai.

IMMEDIATE ADDRESSING
Pengcopyan data yang tercepat ialah yang dinamakan dengan Immediate Addressing dan
Register Addressing. Immediate Addressing adalah suatu pengcopyan data untuk suatu register
8,16 atau 32 (80386) bit langsung dari suatu angka. Contohnya:
MOV AX,50h
MOV AX,11223344h <80386>
Immediate Addressing dapat juga mendapatkan nilainya melalui suatu konstanta yang
telah didefinisikan dengan perintah EQU, seperti:
A EQU 67h
..... ;
..... ;
MOV AX,A
Perintah diatas akan mengcopykan nilai 67h untuk register AX.

REGISTER ADDRESSING
Register Addressing adalah suatu proses pengcopyan data antar register. Pengcopyan
antar register ini harus digunakan register yang berukuran sama, seperti AL dan BH, CX dan
AX. Contoh perintahnya:
MOV AX,CX
Michael Julyus C. M. | J3C113038

Register Addressing dapat juga hanya terdiri atas sebuah register seperti pada perintah
INC CX.

Proses perkalian mengunakan metode pengcopyan

Aturan perkalian ini sama dengan perkalian yang telah dibahas pada sub-bab sebelumnya.
Pada prosesor (Intel 80386) digunakan register-register 32 bit, seperti EAX ,EBX dan EDX.
Untuk menggunakan kelebihan pada prosesor Intel 80386 ini kita harus menambahkan directive
.386.

DIRECT ADDRESSING
Secara umum Direct Addressing ialah suatu pengcopyan data pada suatu register dan
simbol.
Contoh:
TData : JMP Proses
A DB 12h
B DB 59h
Proses : MOV AL,A
MOV AH,B

; Direct Addressing
; Direct Addressing

Perintah diatas akan mengcopykan data variabel A dan B pada register AL dan AH.

Michael Julyus C. M. | J3C113038

REGISTER INDIRECT ADDRESSING


Register Indirect Addressing biasanya digunakan untuk mengakses suatu data yang
banyak dengan mengambil alamat efektif dari data tersebut. Register-register yang bisa
digunakan pada addressing ini adalah BX,BP,SI dan DI. Tetapi bila anda memprogram pada
prosesor 80386 (dengan menambahkan directive .386) maka semua register general purpose bisa
dipakai.
Untuk mendapatkan alamat efektif dari suatu data bisa digunakan perintah LEA (Load
Effective Address) dengan syntax :
LEA Reg,Data
Untuk mengakses data yang ditunjukkan oleh register Reg, setelah didapatkannya alamat
efektif harus digunakan tanda kurung siku ('[]').
Jika pada perintah pengaksesannya tidak disebutkan segmennya, maka yang digunakan
adalah segment default. Seperti bila digunakan register BX sebagai penunjuk offset, maka
segment DS yang digunakan. Sebalikkan bila digunakan register BP sebagai penunjuk offset,
maka segment SS yang digunakan.

Proses Register Indirect Addressing

Michael Julyus C. M. | J3C113038

Bila program 11.2. dijalankan maka dilayar anda akan tercetak :


AC

Pertama-tama kita mendefinisikan data untuk variabel 'Kal', dimana data ini nantinya
akan disimpan pada memori, seperti berikut :
A

Alamat Offset: 102 103 104 105 106 107


Pada perintah LEA BX,Kal, maka register BX akan menunjuk pada alamat efektive dari
variabel Kal, sebagai berikut :
BX=102
A

Alamat Offset: 102 103 104 105 106 107


Pada perintah MOV CX,2, kita memberikan nilai 2 kepada register CX untuk digunakan
sebagai counter pada saat LOOP. Kini perhatikanlah bahwa kita mengambil nilai yang
ditunjukkan oleh register BX yaitu 'A' dengan perintah MOV DL,[BX]. Tanda kurung siku
menyatakan bahwa kita bukannya mengambil nilai BX tetapi nilai yang ditunjukkan oleh register
BX. Setelah itu kita mencetak karakter tersebut dengan interupsi 21h servis 02 dimana kode
ASCII dari karakter yang ingin dicetak telah kita masukkan pada register DL.
Pada perintah ADD BX,2 kita menambahkan nilai 2 pada BX sehingga kini BX akan
berjalan sebanyak 2 byte dan menunjuk pada data 'C' sebagai berikut :
BX=104
A

Alamat Offset: 102 103 104 105 106 107


Kini BX telah menunjuk pada alamat tempat data 'C' berada, sehingga pada pencetakan
karakter selanjutnya, yang tercetak adalah karakter 'C'.
Michael Julyus C. M. | J3C113038

10

Ingatlah: Satu karakter menggunakan satu byte memori.

III.

TUGAS PENDAHULUAN

1. Buatlah dalam assembly untuk menghasilkan data berupa nama, NIM, Nilai UTS anda
untuk ketiga mata kuliah :
NAMA

: .(DW)

NIM

: .(DB)

NILAI 1

: .(DB)

NILAI 2

: .(DB)

NILAI 3

: .(DB)

Pergunakan teknik addressing modes yang anda telah pelajari :

Jawab:
1.

Michael Julyus C. M. | J3C113038

11

IV.

LISTING PROGRAM

1.

Michael Julyus C. M. | J3C113038

12

V.

ANALISA PROGRAM

Model SMALL
Michael Julyus C. M. | J3C113038

13

Tanda directive ini digunakan untuk memberitahukan kepada assembler bentuk memory
yang digunakan oleh program kita.

.CODE
Tanda directive ini digunakan untuk memberitahukan kepada assembler bahwa kita akan
mulai menggunakan Code Segment-nya disini. Code segment ini digunakan untuk menyimpan
program yang nantinya akan dijalankan.

ORG 100h
Pada program COM perintah ini akan selalu digunakan. Perintah ini digunakan untuk
memberitahukan assembler supaya program pada saat dijalankan (diload ke memory) ditaruh
mulai pada offset ke 100h (256) byte. Dapat dikatakan juga bahwa kita menyediakan 100h byte
kosong pada saat program dijalankan. 100h byte kosong ini nantinya akan ditempati oleh PSP
(Program Segment Prefix) dari program tersebut. PSP ini digunakan oleh DOS untuk
mengontrol jalannya program tersebut.

1.

Michael Julyus C. M. | J3C113038

14

Output:

Analisa:
Pada listing di atas, Nama bernilai Nama: Michael Julyus C. M., NIM bernilai NIM:
J3C113038, Nilai1 bernilai Nilai 1: 95, Nilai2 bernilai Nilai 2: 93, Nilai3 bernilai Nilai3:
98. Pada syntax tersebut diberikan karakter kontrol 13 yang berfungsi untuk memindahkan
kursor menuju awal baris, dan karakter kontrol 10 yang berfungsi untuk memindahkan kursor 1
baris ke bawah. Lalu untuk mendapatkan alamat efektif dari Nama, maka digunakan syntax
LEA DX, Nama. Kemudian gunakan nilai servis untuk mencetak kalimat yaitu dengan
menggunakan syntax MOV AH, 09h. Lalu setelah itu cetak nilai Nama yang merupakan
kalimat dengan menggunakan syntax INT 21h. Demikian juga untuk proses selanjutnya yaitu
NIM, Nilai1, Nilai2, dan Nilai3. Setelah semua proses pencetekan selesai, serahkan kendali
sepenuhnya kepada DOS dengan menggunakan interupsi INT 20h dan akhiri program dengan
perintah END TData.

Michael Julyus C. M. | J3C113038

15

VI.

PENUTUP

KESIMPULAN
Dari program di atas, dapat disimpulkan bahwa dalam bahasa Assembly, kita dapat
mengambil alamat efektif dari satu data yaitu dengan menggunakan fungsi addressing modes.

SARAN
Sebelum menggunakan fungsi addessing modes, sebaiknya dianalisa telebih dahulu
fungsi addressing modes yang mana yang merupakan perintah fungsi addressing modes yang
benar yang kita butuhkan sehingga proses berjalannya program tersebut dapat berjalan dengan
baik tanpa terjadi kesalahan.

Michael Julyus C. M. | J3C113038

16

DAFTAR PUSTAKA

Suheri, Asep, ST, MT. Modul Praktikum Organisasi Komputer & Bahasa Assembly. 2012.
Bogor: Program Diploma Institut Pertanian Bogor.

Michael Julyus C. M. | J3C113038

17