LAPORAN PRAKTIKUM ORGANISASI KOMPUTER MANIPULASI BIT DAN LOGIKA
Nama
: Muh Aziz Iqbal
NIM
: J3D214126
Kelas
: TEK B1
PROGRAM KEAHLIAN TEKNIK KOMPUTER DIREKTORAT PROGRAM DIPLOMA DI PLOMA INSTITUT PERT P ERTANIAN ANIAN BOGOR 2015 A. Tujuan perc!aan
Setelah menyelesaikan praktek ini mahasiswa dapat : 1. 2. 3. 4.
Memahami serta mengetahui berbagai macam tipe data di dalam bahasa assembly, Mengetahui bagaimana komputer menyimpan suatu nilai di dalam memori, Mengetahui bagaimana cara untuk menggunakan pointer, Mengetahui bagaimana cara memanipulasi data dengan menggunakan berbagai macam
gerbang logika. B. Ter" Penunjan#
1. Ger!an# NOT Operator O! akan mengin"ers suatu nilai seperti yang terlihat pada #ambar
Gambar Tabel Kebeara !"era#$r N!T
Operasi ot di dalam assembler, digunakan dengan synta$: NOT Tujuan$Su%!er
%asil dari operasi not ini akan disimpan pada Tujuan, sebagai contoh, instruksi NOT AL$&'( akan menghasilkan nilai &'h bagi (). Mungkin masih ada pembaca yang bingung
dengan operasi ini. *aiklah untuk lebih +elasnya kita lihat operasi di atas secara per bit.
2.
Ger!an# AND
Operator ( akan menghasilkan nilai nol bila salah satu operandnya bernilai nol, dan hanya akan bernilai satu bila kedua operandnya bernilai satu.
Gambar Tabel !"era#$r AND
Operasi ( di dalam assembler, digunakan dengan synta$: AND Tujuan$Su%!er
%asil dari operasi ( ini akan disimpan pada Tujuan, sebagai contoh, instruksi: MO) AL$&'( MO) BL$1A( AND AL$BL
-erintah diatas akan menghasilkan nilai 1( bagi register (). In#a*+a( , Setiap bit yang di AND dengan ' pasti menghasilkan bit ' +uga, sedangkan setiap bit
yang di AND dengan 1 akan menghasilkan bit itu sendiri. &. Ger!an# OR
Operator logika O akan menghasilkan nilai nol bila kedua operannya bernilai nol dan satu bila salah satunya bernilai satu.
Gambar 1%.3. Tabel !"era#$r !&
Operasi O di dalam assembler, digunakan dengan synta$: OR Tujuan$Su%!er
%asil dari operasi O ini akan disimpan pada Tujuan, sebagai contoh, instruksi: MO) AL$&'( MO) BL$1A( OR AL$BL
%asil operasi O diatas akan menghasilkan nilai 3/ bagi register (). In#a*+a( ,
Setiap bit yang di OR dengan ' pasti menghasilkan bit itu sendiri, sedangkan setiap bit yang di OR dengan 1 pasti menghasilkan bit 1. -. Ger!an# OR
Operator 0O akan menghasilkan nol untuk dua nilai yang sama nilainya dan satu untuk yang berbeda.
Gambar Tabel !"era#$r '!&
Operasi 0O di dalam assembler, digunakan dengan synta$: OR Tujuan$Su%!er
%asil dari operasi 0O ini akan disimpan pada Tujuan, sebagai, contoh instruksi: MO) A$0A12( OR A$A
%asil operasi 0O diatas pasti akan menghasilkan nilai ' bagi register (0. In#a*+a(, Setiap bilangan yang di OR dengan bilangan yang sama pasti menghasilkan bilangan
'. 5. TEST
-erintah !est digunakan untuk mengetahui nilai pada suatu bit, dengan synta$ : TEST Operan/1$Operan/2
-erintah test akan meng AND kedua nilai operand, tetapi hasil yang didapatkan tidak akan berpengaruh terhadap nilai kedua operand tersebut. Setelah perintah !est dilaksanakan yang akan terpengaruh adalah /lags, sehingga perintah ini sering diikuti dengan perintah yang berhubungan dengan kondisi lags. (dapun lags yang terpengaruh adalah &/,O/,-/,/,S/ dan (/. TEST A$0'( N Pre
3 L%pa* j"4a err +a# 0
-ada perintah diatas komputer akan menu+u ke label -roses bila ada satu bit atau lebih dari (0 yang sama dengan '/h. *ila diikuti dengan perintah 6 Pre, maka komputer akan menu+u ke label proses bila keempat byte rendah pada () semuanya 1/5. 7. SHL 8S("* Le*9
Operator S%) akan menggeser operand1 ke kiri sebanyak operand2 secara per bit. 6emudian bit kosong yang telah tergeser di sebelah kanannya akan diberi nilai nol. Operator S%) digunakan dengan synta$ : SHL Operan/1$Operan/2
Supaya lebih +elas bisa anda lihat pada gambar 1'.7. Operand2 harus digunakan register &) bila pergeseran yang dilakukan lebih dari satu kali.
Gambar !"erasi ()*
8nstruksi : MO) A$&'( MO) 6L$& SHL A$6L 3 Geer & !"* 4e 4"r"
(kan menghasilkan nilai /9h pada register (0. Operasi detilnya dapat dilihat di bawah ini. 3/h
: ''11 1111
S%) 1 : '111 111' ;
Operator S% akan menggeser operand 1 ke kanan sebanyak operand 2 secara per bit dan menambahkan nilai nol pada bit yang tergeser seperti halnya pada operator S%). Operator S% digunakan dengan synta$: SHR Operan/1$Operan/2
Supaya lebih +elas anda bisa lihat pada gambar 1'.=. Operand 2 harus digunakan register &) bila pergeseran yang dilakukan lebih dari satu kali.
Ga%!ar Opera" SHR
8nstruksi :
MO) A$&'( MO) 6L$& SHR A$6L
3 Geer & !"* 4e 4anan
(kan menghasilkan nilai ';h pada register (0. Operasi detilnya dapat dilihat di bawah ini. 3/h
: ''11 1111
S% 1 : '''1 1111 1/h5 S% 2 : '''' 1111 '/h5 S% 3 : '''' '111 ';h5
6. L"*"n# Pr#ra% Tu#a 1
Tu#a 2
D. Ana+"a Pr#ra% TUGAS 1 .MODELL SMALL !anda ini digunakan untuk memberitahukan kepada assembler bentuk
memory yang digunakan oleh program adalah SM()) dimana +ika data dan kode yang digunakan oleh program kurang dari ukuran 1 segment array =46* . 6ODE !anda ini digunakan untuk memberitahukan kepada assembler bahwa kita akan mulai menggunakan &ode Segment nya disini. &ode segment ini digunakan untuk menyimpan program yang nantinya akan di+alankan. ORG 100( -ada program &OM perintah ini akan selalu digunakan. -erintah ini digunakan untuk memberitahukan assembler supaya program pada saat di+alankan di load ke memory5 ditaruh mulai pada oset ke 1''h. MO) A$ -1( adalah perintah untuk memasukan bilangan he$adecimal 41h ke register A lalu MO) 6L$ & berguna untuk nilai yang memindahkan ke kanan atau ke kiri dari register A di atas disini
register &) sebesar 3 kemudian SHR A$6L artinya register A digeser ke kanan sebesar dari isi register &) dan disimpan pada register A, lalu SHL A$6L artinya register A digeser ke kiri sebesar dari isi register &) dan akan disimpan pada register A. MO) B$ 1 yaitu mengisi 1 ke register *0, ADD A$B menambahkan register A dari *0 dan akan disimpan pada register A 6alau di ilustrasikan
men+adi seperti ini D"#eer 4e 4anan & !"* -1( < 0000 0000 0100 0001
D"#eer 4e 4"r" & !"* /an *a%!a( 1 !"*
=( < 0000 0000 0000 1000
-0( < 0000 0000 0000 1000
MO) B$ &;( adalah perintah untuk memasukan bilangan he$adecimal
-0( > 1 < 0000 0000 0000 1001
&;( ke register B lalu MO) 6L$ & berguna untuk nilai yang memindahkan ke kanan atau ke kiri dari
register B di atas, disini register 6L sebesar 3 kemudian SHR B$6L artinya register B digeser ke kanan sebesar dari isi register 6L dan disimpan pada register B, lalu SHL B$6L artinya register A digeser ke kiri sebesar dari isi register 6L dan akan disimpan pada register B. MO) 6$ 1 yaitu mengisi 1 ke register 6, ADD B$6 menambahkan register B dari 6 dan akan disimpan pada register A 6alau di ilustrasikan men+adi seperti ini
D"#eer 4e 4anan & !"*
D"#eer 4e 4"r" & !"* /an *a%!a( 1 !"*
&;( < 0000 0000 0011 :( < 0000 0000 0000 0111 &=(1001 < 0000 0000 0011 MO) D$ -0( adalah perintah untuk memasukan bilangan he$adecimal
&;( > 1 < 0000 0000 0011 1001
-0( ke register D lalu MO) 6L$ & berguna untuk nilai yang memindahkan ke kanan atau ke kiri dari
register D di atas, disini register 6L sebesar 3 kemudian SHR D$6L artinya register D digeser ke kanan sebesar dari isi register 6L dan disimpan pada register D, lalu SHL D$6L artinya register D digeser ke kiri sebesar dari isi register 6L dan akan disimpan pada register D. 6alau di ilustrasikan men+adi seperti ini D"#eer 4e 4anan & !"* -0( < 0000 0000 0100 0000
D"#eer 4e 4"r" & !"*
=( < 0000 0000 0000 1000
-0( < 0000 0000 0100 0000
TUGAS 2 .MODELL SMALL !anda ini digunakan untuk memberitahukan kepada assembler bentuk
memory yang digunakan oleh program adalah SM()) dimana +ika data dan kode yang digunakan oleh program kurang dari ukuran 1 segment array =46* . 6ODE !anda ini digunakan untuk memberitahukan kepada assembler bahwa kita akan mulai menggunakan &ode Segment nya disini. &ode segment ini digunakan untuk menyimpan program yang nantinya akan di+alankan. ORG 100( -ada program &OM perintah ini akan selalu digunakan. -erintah ini digunakan untuk memberitahukan assembler supaya program pada saat di+alankan di load ke memory5 ditaruh mulai pada oset ke 1''h. MO) AH$ -1( adalah perintah untuk memasukan bilangan he$adecimal -1( ke register AH lalu MO) AL$ -2( perintah untuk memasukan bilangan he$adecimal -2( ke register AL. 6emudian OR AH$AL yaitu operator logika O akan menghasilkan nilai nol bila kedua operannya bernilai nol dan satu
bila salah satunya bernilai satu di sini berarti register AH dengan AL akan di perintahkan menggunakan operator logika OR dan akan disimpan pada register AH sendiri. 6alau di ilustrasikan men+adi seperti ini -1(
OR
-1( < 0000 0000 0100 0000
-2(
<
-2( < 0000 0000 0100 0010
AH <
-&(
-&( < 0000 0000 0100 0011
MO) BH$ -&( adalah perintah untuk memasukan bilangan he$adecimal -&( ke register BH lalu MO) BL$ --( perintah untuk memasukan bilangan he$adecimal --( ke register BL. 6emudian OR BH$BL yaitu operator logika O akan menghasilkan nilai nol bila kedua operannya bernilai nol dan satu
bila salah satunya bernilai satu di sini berarti register BH dengan BL akan di perintahkan menggunakan operator logika OR dan akan disimpan pada register BH sendiri. 6alau di ilustrasikan men+adi seperti ini -&( -&( < 0000 0000 0100 0011
OR
--( --( < 0000 0000 0100 0100
<
BH < -:( -:( < 0000 0000 0100 0111
OR AH$BH yaitu operator OR akan menghasilkan nol untuk dua nilai yang sama nilainya dan
satu untuk yang berbeda pada masalah ini operator OR pada register AH dengan BH dan akan disimpan pada register AH sendiri lalu NOT AH yang artinya mengin"ers atau kebalikan dari isi register AH.
6alau di ilustrasikan men+adi seperti ini -&(
OR
-&( < 0000 0000 0100 0011
-:(
<
-:( < 0000 0000 0100 0111
-( -&( < 0000 0000 0000 0100
AH < NOT -(
NOT -( < 1111 1111 1111 1011 MO) BH$ -1( adalah perintah untuk memasukan bilangan he$adecimal -1( ke register BH lalu MO) BL$ -2( perintah untuk memasukan bilangan he$adecimal -2( ke register BL. 6emudian AND BH$BL
yaitu operator logika ( akan menghasilkan nilai nol bila salah satu operand nya bernilai nol, dan hanya akan bernilai satu bila kedua operandnya bernilai satu. di sini berarti register BH dengan BL akan di perintahkan menggunakan operator logika AND dan akan disimpan pada register BH sendiri. 6alau di ilustrasikan men+adi seperti ini -1(
AND
-1( < 0000 0000 0100 0000
-2(
<
-2( < 0000 0000 0100 0010
BH < -0( -0( < 0000 0000 0100 0000
OR AH$BH yaitu operator logika O akan menghasilkan nilai nol bila kedua operannya bernilai
nol dan satu bila salah satunya bernilai satu di sini berarti register AH dengan BH akan di perintahkan menggunakan operator logika OR dan akan disimpan pada register AH sendiri. 6alau di ilustrasikan men+adi seperti ini ''''B( 'B( < 1111 1111 1111 1011
E. Tu#a /an Per*an?aan
OR
-0( -0( < 0000 0000 0100 0000
<
AH < ''''B( 'B( < 1111 1111 1111 1011
.MODELL SMALL !anda ini digunakan untuk memberitahukan kepada assembler bentuk
memory yang digunakan oleh program adalah SM()) dimana +ika data dan kode yang digunakan oleh program kurang dari ukuran 1 segment array =46* . 6ODE !anda ini digunakan untuk memberitahukan kepada assembler bahwa kita akan mulai menggunakan &ode Segment nya disini. &ode segment ini digunakan untuk menyimpan program yang nantinya akan di+alankan. ORG 100( -ada program &OM perintah ini akan selalu digunakan. -erintah ini digunakan untuk memberitahukan assembler supaya program pada saat di+alankan di load ke memory5 ditaruh mulai pada oset ke 1''h. MO) A$ 0'''5( adalah perintah untuk memasukan bilangan he$adecimal 0'''5( ke register A lalu MO) 6L$2 berguna untuk nilai yang memindahkan ke kanan atau ke kiri dari register A di
atas disini register 6L sebesar 2 kemudian SHL A$6L artinya register A digeser ke kiri sebesar dari isi register 6L dan disimpan pada register A, lalu ada MO) 6L$ 5 mengisi register 6L dengan 7 dan SHR A$6L artinya register A digeser ke kanan sebesar dari isi register 6L dan akan disimpan pada
register A. 6alau di ilustrasikan men+adi seperti ini A
D"#eer 4e 4"r" 2 !"*
'''5( < 1111 1111 1111 0101
A
D"#eer 4e 4anan 5 !"*
'''5( < 1111 1111 1101 0100
0:'E( < 0000 0111 1111 1110 MO) B$ 0'''5( adalah perintah untuk memasukan bilangan he$adecimal 0'''5( ke register B lalu MO) 6L$2 berguna untuk nilai yang memindahkan ke kanan atau ke kiri dari register B di atas
disini register 6L sebesar 2 kemudian SHR B$6L artinya register B digeser ke kanan sebesar dari isi register 6L dan disimpan pada register B, lalu ada MO) 6L$5 mengisi register 6L dengan 7 dan SHL B$6L artinya register B digeser ke kanan sebesar dari isi register 6L dan akan disimpan pada register B. 6alau di ilustrasikan men+adi seperti ini
B
D"#eer 4e 4anan 2 !"*
'''5( < 1111 1111 1111 0101
B
D"#eer 4e 4"r" 5 !"*
&''D( < 0011 1111 1111 1101
''A0( < 1111 1111 1010 0000 OR A$B yaitu operator OR akan menghasilkan nol untuk dua nilai yang sama nilainya dan
satu untuk yang berbeda pada masalah ini operator OR pada register A dengan B dan akan disimpan pada register A. 6alau di ilustrasikan men+adi seperti ini A 0:'E( < 0000 0111 1111 1110
OR
B
<
A<'=5E ''A0( < 1111 1111 1010 0000
'=5E( < 1111 1000 0101 1110
'. Ke"%pu+an
6esimpulan dari bab ini adalah bagaimana kita menggunakan synta$ seperti O! untuk mengin"ers suatu nilai, ( akan menghasilkan nilai nol bila salah satu operand nya bernilai nol, dan hanya akan bernilai satu bila kedua operandnya bernilai satu, O akan menghasilkan nilai nol bila kedua operannya bernilai nol dan satu bila salah satunya bernilai satu. 0O akan menghasilkan nol untuk dua nilai yang sama nilainya dan satu untuk yang berbeda, S% dan S%). -ada penggunaan S% dan S%)> nilai yang digeser akan diisi dengan nilai baru, dan nilai tersebut akan selalu bernilai nol '5 dan +uga pada praktikum ini saya tidak memakai register yang beda bit dalam satu pengoperasian.