Anda di halaman 1dari 19

BAB POINTER

TIPE DATA
Didalam assembler kita bisa menyimpan data dengan berbagai tipe data yang berbeda-beda dapat memberikan nama pada data memudahkan dalam pengaksesan data

TIPE
Adapun tipe data yang terdapat pada assembler

ANALISA PROGRAM

ANALISA PROGRAM
Pada baris pertama("A DB 4") kita mendefinisikan sebanyak satu byte untuk variabel dengan nama "A", variabel ini diberi nilai "4 Pada baris kedua("B DB 4,4,4,2,?") kita mendefinisikan sebanyak 5 byte yang berpasangan untuk variabel dengan nama "B Pada baris ketiga("C DB 4 DUP(5)") kita mendefinisikan sebanyak 4 byte data yang diberi nilai awal "5" semuanya (DUP=Duplikasi). Jadi dengan perintah DUP kita dapat mendefinisikan suatu Array. Pada baris keempat("D DB 'HAI !! '") kita mendefinisikan suatu string

ANALISA PROGRAM
Pada baris kelima("E DW ?") kita mendefinisikan suatu tipe data Word yang tidak diberi nilai awal. Nilai yang terdapat pada variabel "E" ini bisa berupa apa saja Pada baris keduabelas("L EQU 666") kita mendefinisikan suatu konstanta untuk variabel "L", jadi nilai pada "L" ini tidak dapat dirubah isinya Pada variabel M, N, O kita mendefinisikan suatu string "123" dalam bentuk yang berbeda. Ketiganya akan disimpan oleh assembler dalam bentuk yang sama, berupa angka 49, 50 dan 51

PENYIMPANAN DATA DALAM MEMORY


Sebelum melangkah lebih jauh, marilah kita lihat dahulu bagaimana komputer menyimpan suatu nilai didalam memory

Program. Mendefinisikan Data

PENYIMPANAN DATA DALAM MEMORY


Setelah program 9.2. diketikkan dan dijadikan COM dengan TASM.EXE dan TLINK.EXE, pakailah debug untuk melihat bagaimana data tersebut disimpan didalam memory komputer

Gambar 9.2. Data program 9.2

ANALISA HASIL
Ketiga byte pertama pada gambar 9.1. 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 memory komputer sesuai dengan yang didefinisikan

ANALISA HASIL
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 memory dalam urutan yang terbalik(CDAB) !.

ANALISA HASIL
Mengapa demikian ?. Hal ini dikarenakan penyimpanan dimemory yang menyimpan nilai tingginya pada alamat tinggi

MENGGUNAKAN POINTER
Untuk itu digunakan perintah PTR dengan format penulisan : TipeData PTR operand

ANALISA PROGRAM

Program Menggunakan Pointer

ANALISA HASIL
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.

ANALISA HASIL
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. 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

ANALISA HASIL
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 memory komputer yang menyimpan byte tinggi terlebih dahulu(Lihat bagian 9.3.)

Program Pendukung
Kini dengan menggunakan pointer ini kita bisa menyimpan hasil perkalian 16 bit didalam 1 varibel 32 bit. Untuk itu lihatlah program

Anda mungkin juga menyukai