laporan orkom - addressing modes (pertemuan 13)

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

Upload: michaeljulyuschristophermanullang

Post on 08-Oct-2015

404 views

Category:

Documents


43 download

DESCRIPTION

Laporan praktikum Organisasi Komputer & Bahasa Assembly - Addressing Modes

TRANSCRIPT

LAPORAN PRAKTIKUMORGANISASI KOMPUTER & BAHASA ASSEMBLYADDRESSING MODES

Kelas: INF 2B Praktikum 1Nama: Michael Julyus C. M.NIM : J3C113038

PROGRAM KEAHLIAN MANAJEMEN INFORMATIKADIREKTORAT PROGRAM DIPLOMAINSTITUT PERTANIAN BOGORBOGOR2014KATA 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

DAFTAR ISI

KATA PENGANTAR2I.TUJUAN PERCOBAAN4II.TEORI PENUNJANG5III.TUGAS PENDAHULUAN11IV.LISTING PROGRAM12V.ANALISA PROGRAM13VI.PENUTUP15KESIMPULAN15SARAN15DAFTAR PUSTAKA16

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.

TEORI PENUNJANG

PendahuluanPada 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 ModeFormatSegment Register

1ImmediateDataTidak Ada

2RegisterRegisterTidak Ada

3DirectDisplacementLabelDSDS

4Register Indirect[BX][BP][SI][DI]DSSSDSDS

5Base Relative[BX] + Displacement[BP] + DisplacementDSSS

6Direct Indexed[DI] + Displacement[SI] + DisplacementDSDS

7Base Indexed[BX] [SI] + Displacement[BX] [DI] + Displacement[BP] [SI] + Displacement[BP] [DI] + DisplacementDSDSSSSS

Perlu diperhatikan bahwa ada juga pengcopyan data yang terlarang, yaitu:1. Pengcopyan data antar segment register, seperti: MOV DS,ESUntuk memecahkan hal ini, anda bisa menggunakan register general purpose sebagai perantara, seperti:MOV AX,ESMOV DS,AXSelain dengan cara diatas, anda bisa juga menggunakan stack sebagai perantara, seperti:PUSH ESPOP DS2. Pemberian nilai untuk segment register (DS, ES, CS, SS) secara langsung, seperti: MOV ES,0B800hUntuk memecahkan hal ini, anda bisa menggunakan register general purpose sebagai perantara, seperti: MOV AX,0B800h MOV ES,AX3. Pengcopyan data langsung antar memori, seperti: MOV MemB,MemAUntuk memecahkan hal ini, anda bisa menggunakan register general purpose sebagai perantara, seperti:MOV AX,MemAMOV MemB,AX4. 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 ADDRESSINGPengcopyan 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,50hMOV AX,11223344h Immediate Addressing dapat juga mendapatkan nilainya melalui suatu konstanta yang telah didefinisikan dengan perintah EQU, seperti:A EQU 67h ..... ; ..... ;MOV AX,APerintah diatas akan mengcopykan nilai 67h untuk register AX.

REGISTER ADDRESSINGRegister 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,CXRegister 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 ADDRESSINGSecara umum Direct Addressing ialah suatu pengcopyan data pada suatu register dan simbol. Contoh:TData : JMP ProsesA DB 12hB DB 59hProses : MOV AL,A ; Direct AddressingMOV AH,B ; Direct AddressingPerintah diatas akan mengcopykan data variabel A dan B pada register AL dan AH.

REGISTER INDIRECT ADDRESSINGRegister 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,DataUntuk 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 AddressingBila 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 :

Alamat Offset: 102 103 104 105 106 107Pada perintah LEA BX,Kal, maka register BX akan menunjuk pada alamat efektive dari variabel Kal, sebagai berikut : BX=102

Alamat Offset: 102 103 104 105 106 107Pada 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

Alamat Offset: 102 103 104 105 106 107Kini BX telah menunjuk pada alamat tempat data 'C' berada, sehingga pada pencetakan karakter selanjutnya, yang tercetak adalah karakter 'C'.Ingatlah: Satu karakter menggunakan satu byte memori.

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.

LISTING PROGRAM

1.

ANALISA PROGRAM

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

.CODETanda 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 100hPada 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.

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

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

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

DAFTAR PUSTAKA

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

Michael Julyus C. M. | J3C1130382A

B

C

D

E

F

A

B

C

D

E

F

A

B

C

D

E

F