LAPORAN PRAKTIKUM ORGANISASI KOMPUTER & BAHASA ASSEMBLY MANIPULASI BIT DAN LOGIKA
Kelas
:
INF 2B Praktikum 1
Nama
:
Michael Julyus C. M.
NIM
:
J3C113038
PROGRAM KEAHLIAN MANAJEMEN INFORMATIKA DIREKTORAT PROGRAM DIPLOMA INSTITUT PERTANIAN BOGOR BOGOR 2014
KATA 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 “Pointer “Pointer ”. ”. 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. mat erinya. Kritik konstruktif dari pembacan sangat penulis harapkan untuk penyempurnaan makalah selanjutnya. Akhir kata semoga laporan ini dapat memberikan manfaat kepada kita sekalian.
Bogor, 20 November 2014
Penulis
Michael Julyus C. M. | J3C113038
2
DAFTAR ISI KATA PENGANTAR........................................................................................................... 2 DAFTAR ISI ......................................................................................................................... 3 I.
TUJUAN PRAKTIKUM ........................................................................................... 4
II.
TEORI PENUNJANG ............................................................................................... 5
III.
TUGAS PENDAHULUAN .....................................................................................10
IV.
LISTING PROGRAM ............................................................................................. 11
V.
ANALISA PROGRAM ........................................................................................... 13
VI.
KESIMPULAN........................................................................................................ 19
VII.
DAFTAR PUSTAKA .............................................................................................. 20
Michael Julyus C. M. | J3C113038
3
I.
TUJUAN PRAKTIKUM
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.
Michael Julyus C. M. | J3C113038
4
II.
1.
TEORI PENUNJANG
Gerbang NOT
Operator NOT akan menginvers suatu nilai seperti yang terlihat pada Gambar 1. A
0
1
1
0
Gambar 1. Tabel Kebenaran Operator NOT
Operator Not di dalam assembler, digunakan dengan syntax: NOT Tujuan, Sumber Hasil dari operasi not ini akan disimpan pada Tujuan, sebagai contoh, instruksi NOT AL, 3Fh akan menghasilkan nilai C0h bagi AL, untuk lebih jelasnya kita lihat operasi di atas secara per bit.
2.
Bilangan
:
Not
:
Gerbang AND
Operator AND akan menghasilkan nilai nol bila salah satu operandnya bernilai nol, dan hanya akan bernilai satu bila kedua operandnya bernilai satu. A
B
A AND B
0
0
0
0
1
0
1
0
0
1
1
1
Gambar 2. Tabel Operator AND
Michael Julyus C. M. | J3C113038
5
Operasi AND di dalam assembler, digunakan dengan syntax: AND Tujuan, Sumber Hasil dari operasi AND ini akan disimpan pada Tujuan, sebagai contoh, instruksi: MOV AL, 3Fh MOV BL, 1Ah AND AL, BL Perintah diatas akan menghasilkan nilai 1A bagi register AL. Ingat : Setiap bit yang di AND dengan 0 pasti menghasilkan bit 0 juga, sedangkan setiap bit yang di AND dengan 1 akan menghasilkan bit itu sendiri.
3.
Gerbang OR
Operator logika OR akan menghasilkan nilai nol bila kedua operannya bernilai nol dan satu bila salah satunya bernilai satu. A
B
A OR B
0
0
0
0
1
1
1
0
1
1
1
1
Gambar 3. Tabel Operator OR
Operasi OR di dalam assembler, digunakan dengan syntax: OR Tujuan,Sumber Hasil dari operasi OR ini akan disimpan pada Tujuan, sebagai contoh, instruksi: MOV AL, 3Fh MOV BL, 1Ah OR AL, BL Michael Julyus C. M. | J3C113038
6
Hasil operasi OR di atas akan menghasilkan nilai 3F bagi register AL. Ingatlah : Setiap bit yang di OR dengan 0 pasti menghasilkan bit itu sendiri, sedangkan setiap bit yang di OR dengan 1 pasti menghasilkan bit 1.
4.
Gerbang XOR
Operator XOR akan menghasilkan nol untuk dua nilai yang sama nilainya dan satu untuk yang berbeda. A
B
A XOR B
0
0
0
0
1
1
1
0
1
1
1
0
Gambar 4. Tabel Operator XOR
Operasi XOR di dalam assembler, digunakan dengan syntax: XOR Tujuan, Sumber Hasil dari operasi XOR ini akan disimpan pada Tujuan, sebagai contoh, instruksi: MOV AX, 0A12h XOR AX, AX Hasil operasi XOR di atas pasti akan menghasilkan nilai 0 bagi register AX. Ingatlah: Setiap bilangan yang di XOR dengan bilangan yang sama pasti menghasilkan bilangan 0.
Michael Julyus C. M. | J3C113038
7
5.
TEST
Perintah Test digunakan untuk mengetahui nilai pada suatu bit, dengan syntax: TEST Operand1, Operand2 Perintah test akan mengAND kedua nilai operand, tetapi hasil yang didapatkan tidak akan berpengaruh terhadap nilai kedua operand tersebut. Setelah perintah Test dilaksanakan yang akan terpengaruh adalah Flags, sehingga perintah ini sering diikuti dengan perintah yang berhubungan dengan kondisi flags. Adapun flags yang terpengaruh adalah CF, OF, PF, ZF, SF dan AF. TEST AX, 0Fh JNZ Proses
; Lompat jika Zerro flag 0
Pada perintah di atas komputer akan menuju ke label Proses bila ada satu bit atau lebih dari AX yang sama dengan 0Fh. Bila diikuti dengan perintah
JCProses , maka
komputer akan menuju ke label bila keempat byte pada AL rendah semuanya1(?F).
6.
SHL (Shift Left)
Operator SHL akan menggeser operand1 ke kiri sebanyak operand2 secara per bit. Kemudian bit kosong yang telah tergeser di sebelah kanannya akan diberi nilai nol. Operator SHL digunakan dengan syntax: SHL Operand1, Operand2 Supaya lebih jelas bisa anda lihat pada gambar 5. Operand2 harus digunakan register CL bila pergeseran yang dilakukan lebih dari satu kali.
CL, 3
AL=F8h
AL=3F
Gambar 5. Operasi SHL
Instruksi :
MOV AX, 3Fh MOV CL, 3 SHL AX, CL ; Geser 3 bit ke kiri
Michael Julyus C. M. | J3C113038
8
Akan menghasilkan nilai F8h pada register AX. Operasi detailnya dapat dilihat di bawah ini. 3Fh
: 0011 1111
SHL 1 : 0111 1110 (=7Eh) SHL 2 : 1111 1100 (=FCh) SHL 3 : 1111 1000 (=F8h)
7.
SHR (Shift Right)
Operator SHR akan menggeser operand1 ke kanan sebanyak operand2 secara per bit dan menambahkan nilai nol pada bit yang tergeser seperti halnya pada operator SHL. Operator SHR digunakan dengan syntax: SHR Operand1,Operand2 Supaya lebih jelas anda bisa lihat gambar 6. Operand2 harus digunakan register CL bila pergeseran yang dilakukan lebih dari satu kali. CL, 3
AL=3F
AL=07
Gambar 6. Operasi SHR
Instruksi :
MOV AX, 3Fh MOV CL, 3 SHR AX, CL ; Geser 3 bit ke kanan
Akan menghasilkan nilai 07h pada register AX. Operasi detailnya dapat dilihat di bawah ini. 3Fh
: 0011 1111
SHL 1 : 0001 1111 (=1Fh) SHL 2 : 0000 1111 (=0Fh) SHL 3 : 0000 1111 (=07h) Michael Julyus C. M. | J3C113038
9
III.
TUGAS PENDAHULUAN
1. Buatlah dalam assembly untuk menggeser 3 bit kekanan dan kekiri, sehingga dihasilkan nilai yang tetap setelah program selesai. 2. Jika AX = FFFFh dan digeser kekiri 3bit, maka berapa nilai AX? 3. Jika AX, BX, CX, dan DX digeser kekanan 8 bit, sedangkan semua nilai register AX, BX, CX, dan DX adalah FEDCh, berapa nilai akhir semua register tersebut? 4. Buatlah fungsi logika dari rangkaian dibawah ini menggunakan assembly!
Michael Julyus C. M. | J3C113038
10
IV.
LISTING PROGRAM
1. Buatlah dalam assembly untuk menggeser 3 bit kekanan dan kekiri, sehingga dihasilkan nilai yang tetap setelah program selesai.
2. Jika AX = FFFFh dan digeser kekiri 3bit, maka berapa nilai AX?
3. Jika AX, BX, CX, dan DX digeser kekanan 8 bit, sedangkan semua nilai register AX, BX, CX, dan DX adalah FEDCh, berapa nilai akhir semua register tersebut?
Michael Julyus C. M. | J3C113038
11
4. Buatlah fungsi logika dari rangkaian dibawah ini menggunakan assembly!
Michael Julyus C. M. | J3C113038
12
V.
ANALISA PROGRAM
1. MODEL SMALL Tanda directive ini digunakan untuk memberitahukan kepada assembler bentuk memory yang digunakan oleh program kita. Supaya lebih jelas model-model yang biasa digunakan adalah: - SMALL Jika data dan code yang digunakan oleh program kurang dari ukuran 1 segment atau 64 KB (kilobyte).
2. .CODE Tanda 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.
3. . ORG 100h Pada 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.
4. JMP Perintah JMP (JUMP) digunakan untuk melompat menuju tempat yang ditunjukkan oleh perintah JUMP, adapun syntaxnya adalah: JUMP Tujuan Dimana tujuannya dapat berupa label seperti yang digunakan pada bagan diatas. Perintah JUMP dimaksudkan agar melewati tempat data program, karena jika tidak ada perintah JUMP ini maka data program akan ikut dieksekusi sehingga kemungkinan besar akan menyebabkan program menjadi hang.
5. INT 20h Perintah INT adalah suatu perintah untuk menghasilkan suatu interupsi dengan syntax: INT NoInt yang berfungsi untuk mengakhiri program dan menyerahkan kendali sepenuhnya kepada DOS.
Michael Julyus C. M. | J3C113038
13
1. Buatlah dalam assembly untuk menggeser 3 bit kekanan dan kekiri, sehingga dihasilkan nilai yang tetap setelah program selesai.
Analisanya :
Pada listing diatas nilai AX-nya 0A0h, mengapa demikian karena jika tidak nilai akhirnya nanti akan berbeda. Agar nilai akhir nanti hasilnya sama dengan nilai awal maka nilai AX-nya maka nilai akhirnya harus bernilai 0h atau 8h. agar lebih jelasnya dapat digambarkan demikian 1 0 1 0 0 0 0 0 (Sebelum di SHR = A0h) dan 3 bit dari kanan akan di delete 0 0 0 1 0 1 0 0 (Sesudah di SHR 3 = 14h) ditambah 3 bit dengan nilai nol (bold)
1 0 1 0 0 0 0 0 (Sesudah di SHL 3 = A0h) ditambah 3 bit dengan nilai nol (bold) Jadi, setelah di SHR atau di SHL maka akan ditambah dengan nilai 0. Sehingga untuk mendapatkan nilai yang di SHR dan di SHL 3bit, nilai akhirnya harus bernilai 0h atau 8h.
Michael Julyus C. M. | J3C113038
14
2. Jika AX = FFFFh dan digeser kekiri 3bit, maka berapa nilai AX?
Analisa :
Nilai akhir program akan bernilai FFF8h. Karena nilai awal berupa FFFFh digeser ke kiri. Dapat digambarkan seperti ini : 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 (Nilai awal = FFFFh) 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 (SHL 3bit) 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 (nilai Akhir = FFF8h)
Michael Julyus C. M. | J3C113038
15
3. Jika AX, BX, CX, dan DX digeser kekanan 8 bit, sedangkan semua nilai register AX, BX, CX, dan DX adalah FEDCh, berapa nilai akhir semua register tersebut ?
Analisa :
Ini merupakan listing program SHR sebesar 8 bit. Pada listing diatas menggunakan 1 pointer, yaitu A. Dimana A akan menyimpan nilai 0FEDCh, yang nilai tersebut akan mengisi register AX, BX, CX, DX. Karena semua register telah dipakai, maka digunakan syntax SHR AX,8”, yang artinya register AX akan digeser kekanan sebanyak 8bit. “
1 1 1 1 1 1 1 0 1 1 0 1 1 1 0 0 (nilai awal = FEDCh) 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 (SHR 8bit) 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 (nilai akhir = 00FEh) Jadi nilai yang digeser sebanyak 8bit itu, akan diisi dengan nilai 0 sebanyak 8bit.
Michael Julyus C. M. | J3C113038
16
4. Buatlah fungsi logika dari rangkaian dibawah ini menggunakan assembly!
Analisa :
Listing ini merupakan bagaimana membuat fungsi logika dari rangkaian. Dalam listing ini menggunakan 4 buah pointer. Pointer A, B, C, D, meruapakan inputan dari fungsi logika tersebut. A = 1Fh
C = 3Fh
B = 0Ch
D = 7h
Langkah 1 : “MOV AX, A” = Memindahkan nilai A ke AX. “OR AX, B” = Nilai pada AX di OR kan dengan B. 0 0 0 1 1 1 1 1 <1Fh> 0 0 0 0 1 1 0 0 <0Ch> 0 0 0 1 1 1 1 1 <1Fh> (Setelah di OR kan) Langkah 2 : “MOV BX, C” = Memindahkan nilai C ke BX. “OR BX, D” = Nilai pada BX di OR kan dengan D.
Michael Julyus C. M. | J3C113038
17
0 0 1 1 1 1 1 1 <3Fh> 0 0 0 0 0 1 1 1 <2Ah> 0 0 1 1 1 1 1 1 <3Fh> (Setelah di OR kan) Langkah 3 : “XOR AX, BX” = nilai pada AX di XOR kan dengan BX. 0 0 0 1 1 1 1 1 <1Fh> 0 0 1 1 1 1 1 1 <3Fh> 0 0 1 0 0 0 0 0 <20h> (Setelah di XOR kan) Langkah 4: “NOT AL” = nilai pada AL yang merupakan hasil dari XOR antara AX dengan BX, di NOT kan. 0 0 1 0 0 0 0 0 <20h> 1 1 0 1 1 1 1 1 (Setelah di NOT kan)
A OR B
C OR D
AX XOR BX
NOT AL
Michael Julyus C. M. | J3C113038
18
You're Reading a Preview Unlock full access with a free trial.
Download With Free Trial
VII.
DAFTAR PUSTAKA
Suheri, Asep, ST, MT. Modul Praktikum Organisasi Komputer & Bahasa Assembly. 2012. Bogor: Program Diploma Institut Pertanian Bogor.
Michael Julyus C. M. | J3C113038
20