laporan orkom pointer

18
LAPORAN PRAKTIKUM ORGANISASI KOMPUTER & BAHASA ASSEMBLY “POINTER” Kelas : INF 2B Praktikum 1 Nama : Binar Rahma Fauqi NIM : J3C112081

Upload: binar-rahma-fauqi

Post on 01-Jan-2016

196 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Laporan Orkom Pointer

LAPORAN PRAKTIKUMORGANISASI KOMPUTER & BAHASA ASSEMBLY

“POINTER”

Kelas : INF 2B Praktikum 1Nama : Binar Rahma FauqiNIM : J3C112081

PROGRAM KEAHLIAN MANAJEMEN INFORMATIKADIREKTORAT PROGRAM DIPLOMA

INSTITUT PERTANIAN BOGORBOGOR

2013

Page 2: Laporan Orkom Pointer

I. TUJUAN PERCOBAAN Tujuan dari percobaan ini adalah agar mahasiswa dapat memahami dan mengetahui

berbagai macam tipe data didalam bahasa assembly, mengetahui bagaimana komputer menyimpan suatu nilai didalam memori, dan bagaimana cara untuk menggunakan pointer.

II. TEORI PENUNJANG

Pada program-program sebelumnya (pengurangan,perkalian dan pembagian)

dapat anda lihat bahwa hasil dari operasi aritmatika disimpan dalam 2 variabel dimana 1

variabel untuk menampung hasil dari word tingginya dan 1 word untuk menampung

word rendahnya. Hal tersebut tidak normal, karena bila kita ingin melihat nilai tersebut

maka nilai tersebut harus disatukan barulah dapat dibaca. Apakah ada cara lain supaya

hasilnya dapat disimpan pada satu 1 variabel saja ? YA!!, tetapi untuk itu anda harus

menggunakan pointer untuk mengaksesnya.

Bila anda tidak menggunakan pointer maka tipe data penampung harus sesuai dengan

registernya. Tanpa pointer untuk memindahkan data dari suatu variabel ke register 8 bit,

maka variabel tersebut haruslah 8 bit juga yang dapat didefinisikan dengan DB,

demikian juga untuk register 16 bit dengan variabel yang didefinisikan dengan DW.

Contoh:

A DB 17 ; DB=8 bit jadi A=8 bit

B DW 35 ; DW=16 bit jadi B=16 bit

MOV AL,A ; 8 bit dengan 8 bit

MOV AX,B ; 16 bit dengan 16 bit

Seperti pada contoh diatas anda tidak bisa menggunakan perintah MOV AX,A

karena kedua operand tidak mempunyai daya tampung yang sama (16 dan 8 bit). Bila

anda melakukan pemindahan data dari operand yang berbeda tipe data penampungnya

maka akan ditampikan "**Error** BAGI.ASM(20) Operand types do not match".

Dengan menggunakan pointer hal ini bukanlah masalah. Sebelum itu marilah kita lihat

dahulu berbagai tipe data yang terdapat pada assembler. TIPE DATA

Didalam assembler kita bisa menyimpan data dengan berbagai tipe data yang

berbeda-beda. Kita dapat memberikan nama pada data tersebut, untuk memudahkan

dalam pengaksesan data tersebut. Adapun tipe data yang terdapat pada assembler

diperlihatkan pada Tabel 10.1.

Nama Ukuran

Page 3: Laporan Orkom Pointer

DB (Define Byte) 1 Byte

DW (Define Word) 2 Byte

DD (Define DoubleWord) 4 Byte

DF (Define FarWords) 6 Byte

DQ (Define QuadWord) 8 Byte

DT (Define TenBytes) 10 Byte

III. LISTING PROGRAM Program 10.1. Program Yang Mengeksekusi Daerah Data

Program 10.1. Program Yang Mengeksekusi Daerah Data

Page 4: Laporan Orkom Pointer

Hasil Program 10.1

Page 5: Laporan Orkom Pointer

Program 10.2 Mendefinisikan data

Program 10.2 Mendefinisikan data

Hasil Program 10.2

Page 6: Laporan Orkom Pointer

Program 10.3 Menggunakan Pointer

Program 10.3 Menggunakan Pointer

Hasil Program 10.3

Page 7: Laporan Orkom Pointer

Program 10.4 Menampung 2 nilai dalam 1 register

Program 10.4 Menampung 2 nilai dalam 1 register

Hasil Program 10.4

Page 8: Laporan Orkom Pointer

IV. ANALISA PROGRAM1. MODEL SMALLTanda directive ini digunakan untuk memberitahukan kepada assembler bentuk

memory yang digunakan oleh program kita. Supaya lebih jelas model-model yang biasdigunakan adalah :- SMALLJika data dan code yang digunakan oleh program kurang dari ukuran 1 segmentatau 64 KB.

2. .CODETanda directive ini digunakan untuk memberitahukan kepada assembler bahwa

kita akan mulai menggunakan Code Segment-nya disini. Code segment inidigunakan untuk menyimpan program yang nantinya akan dijalankan.

3. . ORG 100hPada program COM perintah ini akan selalu digunakan. Perintah ini digunakan

untuk memberitahukan assembler supaya program pada saat dijalankan(diload kememory) ditaruh mulai pada offset ke 100h(256) byte. Dapat dikatakan juga bahwakita menyediakan 100h byte kosong pada saat program dijalankan. 100h bytekosong ini nantinya akan ditempati oleh PSP(Program Segment Prefix) dariprogram tersebut. PSP ini digunakan oleh DOS untuk mengontrol jalannya program tersebut.

4. INT 20hPerintah INT adalah suatu perintah untuk menghasilkan suatu interupsi

- Program 10.1

dapat kita lihat bahwa kita selalu melompati daerah data("TData:JMP Proses"),

mengapa demikian ? Bila kita tidak melompati daerah data ini maka proses akan

melalui daerah data ini. Data-data program akan dianggap oleh komputer sebagai suatu

intruksi yang akan dijalankan sehingga apapun mungkin bisa terjadi disana. Sebagai

contohnya akan kita buat sebuah program yang tidak melompati daerah data, sehingga

data akan dieksekusi sebagai intruksi. Program ini telah diatur sedemikian rupa untuk

membunyikan speaker anda, pada akhir data diberi nilai CD20 yang merupakan bahasa

mesin dari intruksi INT 20h.

- Program 10.2

Ketiga byte pertama pada Gambar hasil program 9.2. adalah bahasa mesin dari

Page 9: Laporan Orkom Pointer

perintah "JUMP PROSES" dan "NOP". Pada byte ke 4 dan ke 5 ini adalah data dari

variabel "A", dapat kita lihat bahwa data dari variabel "A" (1234) yang didefinisikan

dengan "DB" disimpan didalam memori komputer sesuai dengan yang didefinisikan.

Dua byte selanjutnya (byte ke 6 dan 7), merupakan data dari variabel C yang telah kita

definisikan dengan "DW(2 byte)". Ternyata kedua byte dari variabel "C" (ABCD)

disimpan didalam memori dalam urutan yang terbalik (CDAB), mengapa demikian ?,

hal ini dikarenakan penyimpanan pada memori yang menyimpan nilai tingginya pada

alamat tinggi. Anda dapat lihat pada ke 4 byte selanjutnya, yaitu data dari variabel "D"

juga disimpan dengan susunan yang terbalik (56789018 menjadi 18907856).

- Program 10.3 dan program 10.4

Pada awalnya kita mendefinisikan variabel "A" dan "B" dengan tipe data word (16

bit) yang mempunyai nilai awal 01EF dan 02FE, serta variabel "C" dengan tipe data

DoubleWord (32 bit) yang tidak diinialisasi.

MOV AL,BYTE PTR A

MOV AH,BYTE PTR A+1

Pada kedua perintah tersebut, kita memindahkan data dari variabel "A" ke register

AX dengan byte per byte. Perhatikanlah bahwa kita harus menyesuaikan pemindahan

data yang dilakukan dengan kemampuan daya tampungnya. Oleh sebab itu digunakan

"BYTE" PTR untuk memindahkan data 1 byte menuju register 8 bit, dengan demikian

untuk memindahkan data 16 bit harus digunakan "WORD" PTR. Pada baris pertama

kita memindahkan byte rendah dari variabel "A" (EF) menuju register AL, kemudian

pada baris kedua kita memindahkan byte tingginya (01) menuju register AH. Lihatlah

kita menggunakan "BYTE PTR A" untuk nilai byte rendah dan "BYTE PTR+1"

untuk byte tinggi dari variabel "A" dikarenakan penyimpanan data dalam memori

komputer yang menyimpan byte tinggi terlebih dahulu (Lihat bagian 9.3.).

MOV BX,B

MOV WORD PTR D,AX

MOV WORD PTR D+2,BX

Pada bagian ini akan kita coba untuk memindahkan data dari 2 register 16 bit

menuju 1 variabel 32 bit. Pada baris pertama "MOV BX,B" tentunya tidak ada

masalah karena kedua operand mempunyai daya tampung yang sama. Pada baris kedua

"MOV WORD PTR D,AX" kita memindahkan nilai pada register AX untuk disimpan

pada variabel "D" sebagai word rendahnya. Kemudian pada baris ketiga "MOV

Page 10: Laporan Orkom Pointer

WORD PTR D+2,BX" kita masukkan nilai dari register BX pada variabel "D" untuk

word tingginya sehingga nilainya sekarang adalah BX:AX=02FE01EF. Perhatikanlah

pada baris ketiga kita melompati 2 byte (WORD PTR+2) dari variabel "D" untuk

menyimpan word tingginya. Kini dengan menggunakan pointer ini kita bisa menyimpan

hasil perkalian 16 bit didalam 1 variabel 32 bit.

V. KESIMPULANDari program-program diatas, dapat disimpulkan bahwa dalam bahasa Assembly kita dapat

menyimpan data dengan berbagai tipe data yang berbeda-beda, berikut adalah tipe data yang ada dalam suatu bahasa assembly yaitu DB, DW, DD, DF, DQ dan DT dengan berbagai kapasitas yang bisa kita gunakan sesuai dengan yang kita butuhkan. Pointer juga dapat berfungsi untuk memindahkan data dari operan yang berbeda dan di tampung oleh satu variabel sehingga kita bisa menghemat kapasitas memori yang ada.

VI. TUGAS DAN PERTANYAANSoal :

1. ((FEh*BCh)+7Dh)/2 2. ((AFEh*ABCh)+67Dh)/4

Jawab :

Page 11: Laporan Orkom Pointer

1.

Page 12: Laporan Orkom Pointer

Lalu klik ‘emulate’ , setelah itu lakukan ‘single step’ maka akan ditampilkan hasil seperti dibawah ini:

Page 13: Laporan Orkom Pointer

2.Lalu klik ‘emulate’ , setelah itu lakukan ‘single step’ maka akan ditampilkan hasil seperti

dibawah ini:

Page 14: Laporan Orkom Pointer
Page 15: Laporan Orkom Pointer

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

Page 16: Laporan Orkom Pointer

VIII. LAMPIRAN