laporan orkom pointer
Embed Size (px)
TRANSCRIPT

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

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

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

Hasil Program 10.1

Program 10.2 Mendefinisikan data
Program 10.2 Mendefinisikan data
Hasil Program 10.2

Program 10.3 Menggunakan Pointer
Program 10.3 Menggunakan Pointer
Hasil Program 10.3

Program 10.4 Menampung 2 nilai dalam 1 register
Program 10.4 Menampung 2 nilai dalam 1 register
Hasil Program 10.4

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

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

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 :

1.

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

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


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

VIII. LAMPIRAN