Laporan Parktikum Assembly: Addressing Mode

July 11, 2017 | Autor: Fernalia Halim | Categoria: 8086 Assembly Language Programming, Laporan Praktikum, Arsitektur Dan Organisasi Komputer
Share Embed


Descrição do Produto

LAPORAN PRAKTIKUM ORGANISASI KOMPUTER & BAHASA ASSEMBLY “ADDRESSING MODES”

Kelas : INF 2B Praktikum 1 Nama : Fernalia NIM : J3C212210

PROGRAM KEAHLIAN MANAJEMEN INFORMATIKA DIREKTORAT PROGRAM DIPLOMA INSTITUT PERTANIAN BOGOR 2013

DAFTAR ISI DAFTAR ISI ......................................................................................................................... i DAFTAR GAMBAR ............................................................................................................ ii LAPORAN PRAKTIKUM ................................................................................................... 1 1.

Tujuan Percobaan ....................................................................................................... 1

2.

Teori Penunjang ......................................................................................................... 1 2.1.

Interrupt dan Register .......................................................................................... 1

2.2.

Tanda Directive ................................................................................................... 3

2.3.

Addressing Modes ............................................................................................... 4

3.

Tugas Pendahuluan..................................................................................................... 6

4.

Listing Program .......................................................................................................... 6

5.

4.1.

Program Cetak Nama dengan Indirect Addressing 1 ............................................ 6

4.2.

Program Cetak Nama dengan Indirect Addressing 1 ............................................ 7

Analisis Program ........................................................................................................ 7 5.1.

Analisa Program Cetak Nama dengan Indirect Addressing 1 ............................... 8

5.2.

Analisa Program Cetak Nama dengan Indirect Addressing 2 ............................... 9

6.

Kesimpulan .............................................................................................................. 11

7.

Daftar Pustaka .......................................................................................................... 11

i

DAFTAR GAMBAR Gambar 1 Output Program Cetak Nama Indirect Addressing ................................................. 6 Gambar 2 Kode Program Cetak Nama dengan Indirect Addressing 1 .................................... 6 Gambar 3 Kode Program Cetak Nama dengan Indirect Addressing 2 .................................... 7 Gambar 4 Analisa Program Part 1 ......................................................................................... 7 Gambar 5 Analisa Program Indirect Addressingbagian 1 ....................................................... 8 Gambar 6 Analisa Program Indirect Addressing Bagian 2.1 .................................................. 9 Gambar 7 Analisa Program Indirect Addressing Bagian 2.2 ................................................ 10 Gambar 8 Analisa Program Part 2 ....................................................................................... 10

ii

LAPORAN PRAKTIKUM 1. Tujuan Percobaan 1) Mengetahui dan memahami syntax yang dalam pembuatan program Addressing Modes. 2) Memahami penggunaan operasi-operasi yang digunakan dalam Addressing Modes. 3) Dapat membedakan macam-macam dari Addressing Modes.

2. Teori Penunjang 2.1. Interrupt dan Register Interrupt atau sering kali disebut dengan intruksi merupakan permintaanperminaatan yang dikirimkan kepada processor untuk memproses dan melakukan sesuatu.

Dalam

pemrograman

bahasa

assembler,

interupsi

digunakan

untuk

menyelesaikan tugas atau permintaan yang dimasukan secara khusus oleh user dalam pengeksekusian program yang diinginkan. Pada umumnya, interrupt ini diartikan sebagai perintah-perintah yang diperintahkan oleh user untuk selanjutnya dikirimkan ke microprocessor melalui register-register dan diproses sehingga menghasilkan balikan nilai yang sesuai dengan perintah-perintah yang dimasukkan oleh user. Interrupt terbagi atas 2 macam: 1) Interrupt 00h – 1Fh(0 - 31) merupakan interrupt BIOS dan standar di semua komputer baik yang menggunakan sistem operasi DOS maupun bukan yang menggunakan sistem operasi DOS. Lokasi Interrupt Vector Table-nya ada di alamat absolute 0000h-007Fh. 2) Interrupt 20h – FFh (32 - 255) merupakan interrupt DOS. Interrupt ini hanya ada pada komputer yang menggunakan sistem operasi DOS dan interrupt handler-nya dip roses ke memori oleh DOS pada saat DOS digunakan. Lokasi Interrupt Vector Table-nya ada di alamat absolute 07h-3FFh. Register merupakan sebaguan memori dari microprocessor yang dapat diakses dengan kecepatan yang sangat tinggi. Register ini merupakan perantara yang selalu digunakan oleh microprocessor untuk melakukan pekerjaannya. Register yang digunakan oleh microprocessor dibagi menjadi 5 bagian sesuai dengan tugasnya, keliama bagian tersebut adalah:

1

1) Segmen Register yang terdiri atas CS (Code Segment), DS (Data Segment), ES (Extra Segment), dan SS (Stack Segment). 2) Pointer dan Index Register yang terdiri dari SP (Stack Pointer), BP (Base Pointer), SI (Source Index), dan DI (Destination Index). 3) General Purpose Register yang terdiri atas AX, BX, CX dan DX yang masing-masingnya terdiri atas 16 bit. Pada setiap bagian register ini, terdapat 2 bagian yaitu H yang menandai High dan L yang menandai Low. High ini menandai 8 bit pada posisi akhir register dan Low menandai 8 bit pada posisi awal register. Pada register-register ini biasanya digunakan dalam berbagai keperluan, tetapi dapat digunakan pula dalam kondisi-kondisi khusus seperti: a. Register AX, biasanya digunakan dalam operasi aritmatika terutama dalam operasi pembagian dan pengurangan. b. Register BX, pada umumnya digunakan untuk menunjukkan suatu alamat offset dari suatu segmen. c. Register CX, biasanya digunakan pada operasi looping (perulangan) dimana pada register ini menunjukkan banyaknya looping yang akan terjadi pada sebuah program. d. Register DX, digunakan secara khusus untuk menampung sisa hasil pembagian 16 bit. 4) Index Pointer Register merupakan register IP yang berpasangan dengan CS (CS:IP) berufngsi untuk menunjukkan alamat pada memori tempat dari intruksi (perintah) selanjutnya yang akan diseksekusi. 5) Flags Register merupakan register yang menunjukkan kondisi dari sebuah keadaan. Kondisi keadaan ini mengembalikan nilai “ya” atau “tidak”, 0 atau 1. Pengecekan suatu kondisi dengan nilai balikan “ya” atau “tidak” disebut dengan fungsi Boolean. Setiap keadaan pada flags register ini hanya terpakai 1 bit saja, maka untuk satu flags register ini masing-maisng dapat menyimpan 16 keadaan (16 bit). Flags Register ini terdiri atas OF (OverFlow Flag), SF (Sign Flag), ZF (Zero Flag), CF (Carry Flag), PF (Parity Flag), DF (Direction Flag), IF (Interrupt Enable Flag), TF (Trap Flag), AF (Auxiliary Flag), NT (Nested Task) dan IOPL (I/O Protection Level).

2

2.2.Tanda Directive 2.2.1. .MODEL, Model-model pada program dan codenya: 1) TINY, program hanya akan menggunakan 1 segment seperti program COM, model ini disediakan untuk program COM. 2) SMALL, data dan code yang digunakan oleh program kurang dari ukuran 1 segment atau 64 KB. 3) MEDIUM, data yang digunakan oleh program kurang dari 64 KB tetapi code yang digunakan bisa lebih dari 64 KB. 4) COMPACT, data yang digunakan bisa lebih besar dari 64 KB tetapi codenya kurang dari 64 KB. 5) LARGE, data dan code yang dipakai oleh program bisa lebih dari 64 KB. 6) HUGE, data maupun code array yang digunakan bisa lebih dari 64 KB.

2.2.2. .CODE Tanda directive yang digunakan untuk memberikan pemberitahuan mengenai code segmentnya. Code segment ini digunakan untuk menyimpan program yang akan dijalankan.

2.2.3. .ORG 100h Tanda directive ini sering digunakan pada program COM. Perintah ini digunakan untuk memberitahukan kepada assembler supaya program pada saat dijalankan ditaruh mulai pada offset ke 100h (256) byte. Dapat diartikan juga bahwa kita menyediakan 100h byte kosong pada saat program dijalankan. Program kosong ini nantinya akan ditempati oleh PSP (Program Segment Prefix).

2.2.4. .JMP Perintah JMP digunakan untuk melompat menuju tempat yang ditunjukkan oleh perintah JUMP. Syntax: JUMP Tujuan

3

2.2.5. INT 20h Perintah ini digunakan untuk megakhiri program dan menyerahkannya kembali ke DOS.

2.3. Addressing Modes Addressing Modes merupakan cara-cara dari pengnyalinan data atau nilai yang berada pada sebuah register dan variabel ke lokasi memori atau sebaliknya. Secara umum banyaknya cara penyalinan tersebut dapat dibagi menjadi 7, seperti pada tabel berikut. No. Addressing Mode 1. Immediate 2. Register 3. Direct 4. Register Indirect

5. Base Relative 6. Direct Indexed 7. Base Indexed

Format Data Register Displacement Label [BX] [BP] [SI] [DI] [BX] + Displacement [BP] + Displacement [DI] + Displacement [SI] + Displacement [BX] [SI] + Displacement [BX] [DI] + Displacement [BP] [SI] + Displacement [BP] [DI] + Displacement

Segment Register Tidak Ada Tidak Ada DS DS DS SS DS DS DS SS DS DS DS DS SS SS

Tabel 1 Addressing Modes

Pada addressing modes ini juga diperkenalkan dengan penyalinan data yang terlarang, diantaranya: 1) Penyalinan data antar segment register: 𝑴𝑶𝑽 𝑫𝑺, 𝑬𝑺 2) Pemberian nilai untuk segment register (DS, ES, CS, SS) secara langsung: 𝑴𝑶𝑽 𝑬𝑺, 𝟎𝑩𝟖𝟎𝟎𝒉 3) Penyalinan data langsung antar memori: 𝑴𝑶𝑽 𝑴𝒆𝒎𝒐𝒓𝒊𝑩, 𝑴𝒆𝒎𝒐𝒓𝒊𝑨 4) Penyalinan data antar register yang berbeda tipe tanpa menggunakan pointer: 𝑴𝑶𝑽 𝑨𝑳, 𝑩𝑿

Pada permasalahan 1 sampai dengan 3 dapat diselesaikan dengan penggunaan register general purpose (AX, BX, CX, DX) dengan memasukkan nilai dari segment

4

register; nilai untuk segment register; nilai dari memori ke register general purpose lalu menyalinkan nilai yang ada pada register general purpose tersebut ke tujuan.

2.3.1. Immediate Addressing Immediate addressing atau register addressing merupakan penyalinan nilai atau konstanta yang telah didefinisikan langsung ke sebuah register: 𝑴𝑶𝑽, 𝑭𝑭𝒉

atau

𝑴𝑶𝑽, 𝑨

2.3.2. Register Addressing Register addressing merupakan suatu penyalinan data antar register yang ukurannya sama: 𝑴𝑶𝑽 𝑨𝑿, 𝑪𝑿

atau

𝑴𝑶𝑽 𝑩𝑳, 𝑪𝑯

2.3.3. Direct Addressing Direct addressing merupakan penyalinan data pada suatu register dan simbol: 𝑻𝑫𝑨𝑻𝑨: 𝑱𝑴𝑷 𝑷𝒓𝒐𝒔𝒆𝒔 𝑨 𝑫𝑩 𝟏𝟐𝒉 𝑩 𝑫𝑩 𝟓𝟗𝒉 𝑷𝒓𝒐𝒔𝒆𝒔: 𝑴𝑶𝑽 𝑨𝑳, 𝑨 𝑴𝑶𝑽 𝑨𝒉, 𝑩

2.3.4. Register Indirect Addressing Register indirect addressing adalah penyalinan suatu data yang banyak dengan mengambil alamat efektifnya dan diakses nilainya dengan menggunakan tanda kurung siku ([]). Register-register yang dapat digunakan adalah BX, BP, SI dan DI. Cara untuk mendapatkan alamat efektif dari suatu data digunakan perintah LEA (Load Effective Address) dengan syntax: 𝑳𝑬𝑨 𝑹𝒆𝒈𝒊𝒔𝒕𝒆𝒓, 𝑫𝒂𝒕𝒂

5

3. Tugas Pendahuluan Output:

Gambar 1 Output Program Cetak Nama Indirect Addressing

4. Listing Program 4.1. Program Cetak Nama dengan Indirect Addressing 1

Gambar 2 Kode Program Cetak Nama dengan Indirect Addressing 1

6

4.2. Program Cetak Nama dengan Indirect Addressing 1

Gambar 3 Kode Program Cetak Nama dengan Indirect Addressing 2

5. Analisis Program

Gambar 4 Analisa Program Part 1

Pada potongan program Operasi Aritmatika diatas, baris 1 sampai bari ke 3 merupakan tanda directive yang memiliki fungsi yang berbeda-beda. .MODEL SMALL merupakan tanda directive yang menunjukan model dari program. .MODEL SMALL ini menunjukkan bahwa program yang dibuat memilih model program SMALL yang berarti code dan program yang dibuat tidak lebih dari 1 segment. .CODE merupakan tanda

7

directive yang memberikan pemberitahuan kepada code segment, artinya program akan disimpan di code segment tersebut. ORG 100h berarti bahwa kita merelokasikan memori kosong sebesar 100h untuk selanjutnya akan dipakai oleh PSP.

5.1. Analisa Program Cetak Nama dengan Indirect Addressing 1

Gambar 5 Analisa Program Indirect Addressingbagian 1

Pada source code diatas terdapat 3 label: label TDATA yang berisi argumen JMP dan pendefinisan variabel dengan karakter „FERNALIA‟. Pada perintah JMP digunakan untuk melompati argumen yang ada dibawahnya, sehingga pada program diatas, baris ke-7 tidak akan dieksekusi melainkan langsung mengeksekusi isi argumen yang ada pada label Proses. Label Proses terdapat perintah LEA. Perintah LEA ini digunakan untuk mengambil alamat efektif dari sebuah nilai sehingga impelemntasi dari register indirect addressing terdapat pada perintah tersebut. LEA BX,Kal berarti bahwa register BX berisikan nilai-nilai yang terdapat pada variabel Kal („FERNALIA‟). Baris ke-10 merupakan register yang digunakan untuk mendeklarasikan jumlah karakter yang akan dieksekusi oleh program dengan proses iterasi pengulangan. Label yang ke-3 adalah label ulang yang digunakan untuk mengiterasi eksekusi karakter yang ada pada variabel Kal ke layar. Pada baris ke-13 terdapat perintah untuk memindahkan nilai yang ada pada register BX (berisi alamat efektif dari nilai-nilai karakter pada variabel Kal). Baris ke-14, register AH digunakan oleh service 02h sebagai service dari interrupt 21h yang ada pada baris selanjutnya. Baris ke-14 dan baris ke-15 merupakan pasangan interrupt dan service yang digunakan untuk mencetak karakter ke layar. Pada baris ke-16 merupakan baris yang menginisialisasikan nilai pengiterasian dari proses pengulangan, karena BX dideklarasikan dengan 1 maka setiap pengiterasian pada BX akan ditampah 1

8

sebanyak 8 kali. Baris selanjutnya berisi perintah LOOP yang digunakan untuk operasi pengulangan pada program. 5.2. Analisa Program Cetak Nama dengan Indirect Addressing 2

Gambar 6 Analisa Program Indirect Addressing Bagian 2.1

Pada analisa program diatas, terlihat bahwa TDATA merupakan label yang berisi argumen dasar untuk menginisialisasikan variabel Kal dengan nilai karakter „ABCDEFGHIJKLMNOPQRSTUVWXYZ‟.

Selain

argumen

yang

tersebut,

terdapat perintah JMP Proses yang berarti melompati argumen yang ada dibawah baris perintah tersebut untuk langsung mengeksekusi baris-baris program yang berada pada label Proses. Pada label Proses terdapat argumen yang merupakan service dan interrupt yang digunakan untuk mencetak karakter ke layar yaitu service 02h yang dimasukkan ke dalam register AH dan interrupt 21h. Dalam label Proses terdapat pula perintah LEA yang digunakan secara berulang untuk mengambil alamat efektif yang ada pada variabel Kal dan perintah MOV DL,[BX] secara berulang untuk

9

memasukkan alamat efektif tesebut ke register DL untuk selanjutnya akan dicetak ke layar secara berurutan. Sebagai rincian dari source code diatas, adalah sebagai berikut: pada baris ke-10 terdapat perintah LEA BX,Kal+5; artinya register BX akan berisikan alamat efektif dari variabel Kal yang indeks aksesnya 5. Karena variabel Kal tersebut berisi karakter A-Z maka karakter A merupakan indeks ke-0, sedangkan Z merupakan indeks ke-25. Oleh karena itu Kal+5 berarti mengambil alamat efektif indeks ke-5 dari variabel Kal yaitu karakter F.

Gambar 7 Analisa Program Indirect Addressing Bagian 2.2

Gambar 8 Analisa Program Part 2

Pada baris program diatas, int 20h digunakan untuk megakhiri program dan mengembalikan kerja kepada DOS. Pada program ke 20 END TDATA adalah untuk mengakhiri kerja program.

10

6. Kesimpulan Program implementasi indirect addressing merupakan program yang digunakan untuk mengambil alamat efektif dari sebuah nilai. Pengambilan alamat efektif ini menggunakan perintah LEA yang berarti load effective address yang berfungsi untuk mengambil alamat efektif dari sebuah nilai dan akan dimasukkan ke dalam register. Alamat efektif yang ditampung pada sebuah register yang akan diakses harus menggunakan tanda kurung siku ([]). Pada program diatas, diimplementasikan dengan 2 cara: diimplementasikan dengan cara pengiterasian pengulangan mengunakan perintah LOOP dan pengimplementasian secara langsung dengan mengambil alamat efektif dari variabel Kal dengan melihat nomor indeks pada setiap isi variabel.

7. Daftar Pustaka 1) Suheri, Asep. 2012. MODUL PRAKTIKUM ORGANISASI KOMPUTER & BAHASA ASSEMBLY. [Bogor]: Program Diploma Institut Pertanian Bogor [IPB]. 2) Susanto.

1995.

Pemrograman

dengan

Bahasa

Assembly.

Elex Media

Komputindo.

11

Lihat lebih banyak...

Comentários

Copyright © 2017 DADOSPDF Inc.