LAPORAN PRAKTIKUM
LAPORAN PRAKTIKUM
ORGANISASI KOMPUTER & BAHASA ASSEMBLY
ORGANISASI KOMPUTER & BAHASA ASSEMBLY
BANDINGKAN
BANDINGKAN DAN LOMPA
DAN LOMPAT
T
K
Keellaass : : IINNF F 22B B PPrraakkttiikk! ! "" N
Naa!!aa : : MMii##$$aaeel l %%lls s ''( ( MM(( NIM
NIM : : %)'"")*)+%)'"")*)+
PROGRAM KEAHLIAN MANA%EMEN INFORMATIKA
PROGRAM KEAHLIAN MANA%EMEN INFORMATIKA
DIREKTORAT
DIREKTORAT PROGRAM DI
PROGRAM DIPLOMA
PLOMA
INSTITUT P
INSTITUT PERT
ERTANIAN BOGOR
ANIAN BOGOR
BOGOR
BOGOR
2*",
2*",
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 aktunya! "aporan ini membahas mengenai #Pointer$!
%alam penyusunan laporan ini& penulis banyak mendapat tantangan dan hambatan akan tetapi dengan bantuan dari berbagai pihak tantangan itu bisa teratasi! 'lehnya itu& penulis mengu(apkan 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 baha laporan ini masih jauh dari kesempurnaan baik dari bentuk penyusunan maupun materinya! Kritik konstrukti) dari pemba(a sangat penulis harapkan untuk penyempurnaan makalah selanjutnya!
*khir kata semoga laporan ini dapat memberikan man)aat kepada kita sekalian!
+ogor& , %esember .,/
Penulis
DAFRAR ISI
KATA PENGANTAR2
DAFRAR II 3
I.
T!J!AN PERC"#AAN
$
II.
TE"RI PEN!NJANG
%
&"MPAT TANPA 'ARAT %
MEM#ANDINGKAN DENGAN CMP
%
&"MPAT 'ANG MENGIK!TI CMP
(
&"MPAT #ER'ARAT
)
III.
T!GA PENDA*!&!AN 11
I+.
&ITING PR"GRAM
12
+.
ANA&IA PR"GRAM
13
+I.
PEN!T!P
1%
KEIMP!&AN
1%
ARAN
1%
+II.
DAFTAR P!TAKA 1(
I(
TU%UAN PER'OBAAN
Tujuan dari praktikum ini adalah agar mahasisa dapat0
"( Memahami serta mengetahui berbagai ma(am tipe data di dalam bahasa assembly&
2( Mengetahui bagaimana komputer menyimpan suatu nilai di dalam memori&
)( Mengetahui bagaimana (ara untuk menggunakan pointer&
,( Mengetahui bagaimana (ara memanipulasi data dengan menggunakan berbagai ma(am gerbang logika!
-( Mengetahui bagaimana (ara menggunakan addressing modes sesuai dengan kebutuhan!
II(
TEORI PENUN%ANG
o LOMPAT TANPA SYARAT
Perintah 1MP 21ump3& sudah pernah kita gunakan& dimana perintah ini digunakan untuk melompati daerah data program! Perintah 1MP digunakan dengan synta40
1MP Tujuan
Perintah 1MP ini dikategorikan sebagai 5n(onditional 1ump& karena perintah ini tidak menyeleksi keadaan apapun untuk melakukan suatu lompatan! Setiap ditemui perintah ini maka lompatan pasti dilakukan!
Selain dari perintah jump tanpa syarat& masih banyak perintah 1ump yang menyeleksi suatu keadaan tertentu sebelum dilakukan lompatan! Perintah jump dengan penyeleksian kondisi terlebih dahulu biasanya diikuti dengan perintah untuk melihat kondisi& seperti membandingkan dengan perintah 67MP627ompare3!
o MEMBANDINGKAN DENGAN 'MP
Perintah 7MP 27ompare3 digunakan untuk membandingkan . buah operand& dengan synta40
7MP 'perand/&'perand.
7MP akan membandingkan operand/ dengan operand. dengan (ara mengurangkan operand/ dengan operand.! 7MP tidak mempengaruhi nilai 'perand/ dan 'perand.& perintah 7MP hanya akan mempengaruhi )lags register sebagai hasil perbandingan! *dapun )lag-)lag yang terpengaruh oleh perintah 7MP ini adalah0
- '8 akan /& jika operand/ lebih ke(il dari operand. pada operasi bilangan bertanda
- S8 akan /& bila operand/ lebih ke(il dari operand.& pada operasi bilangan bertanda
- 98 akan /& jika operand/ nilainya sama dengan operand.
- 78 akan /& jika operand/ lebih ke(il dari operand. pada operasi bilangan tidak bertanda
Perlu anda ingat baha 7MP tidak dapat membandingkan antar . lokasi memori!
o LOMPAT YANG MENGIKUTI 'MP
Perintah 7MP yang hanya mempengaruhi )lag register& umumnya diikuti dengan perintah lompat yang melihat keadaan pada )lags register ini! 1enis perintah lompat yang biasanya mengikuti perintah 7MP& terdapat /. buah seperti pada Tabel /:!/!
Pada Tabel /:!/! terlihat baha terdapat dua operasi yang berbeda& yaitu operasi bilangan bertanda dan tidak bertanda! +ilangan bertanda adalah bilangan yang akan membedakan bilangan negati) dan positi)2Mis! :; dan -:;3! Sedangkan bilangan tidak bertanda adalah bilangan yang tidak akan membedakan positi) dan negati)& jadi angka -/ untuk operasi bilangan bertanda akan dianggap 88h pada bilangan tidak bertanda! "ebih jauh mengenai bilangan bertanda dan tidak ini bisa anda lihat pada +*+ <!
Ta.el ")("( Peri/ta$ %!0 a/1 !e/1ikti 'MP
NO
( PERINTAH LOMPAT KONDISI
/ %A=1ump <) *bo>e? "ompat& jika 'perand/ ? 'perand. untuk bilangan tidak bertanda
. %G=1ump <) @reater? "ompat& jika 'perand/ ? 'perand. untuk bilangan bertanda
: %E=1ump <) EAual? "ompat& jika 'perand/ B 'perand.
%NE=1ump <) Not EAual? "ompat& jika 'perand/ tidak sama dengan 'perand.
C %B=1ump <) +elo? "ompat& jika 'perand/ = 'perand. untuk bilangan tidak bertanda
D %L=1ump <) "ess? "ompat& jika 'perand/ = 'perand. untuk bilangan bertanda
; %BE =1ump <) +elo or EAual?
"ompat& jika operand/ =B 'perand. untuk bilangan tidak bertanda
%LE =1ump <) "ess or EAual? "ompat& jika 'perand/ =B 'perand. untuk bilangan bertanda
F %AE =1ump <) *bo>e or "ompat& jika 'perand/ ?B 'perand. untuk bilangan tidak Michael Julyus C. M. | J3C113038 (
EAual? bertanda
/, %GE =1ump <) @reater or EAual?
"ompat& jika 'perand/ ?B 'perand. untuk bilangan bertanda
Me/11/aka/ Peri/ta$ L!0at Bersarat
+ila program /:!/! dijalankan& maka akan tampak pada layar0
+ilangan * lebih besar dari bilangan +
*nda bisa mengganti nilai pada >ariabel Bil A dan Bil B untuk melihat hasil yang akan ditampilkan pada layar!
o LOMPAT BERSYARAT
Pada gambar /:!/! anda telah melihat sebagian dari perintah lompat bersyarat! Kini akan
kita lihat lompat bersyarat lainnya yang tersedia& seperti pada gambar /:!.! Tidak seperti lompat tanpa syarat& "ompat bersyarat hanya dapat melompat menuju label yang berjarak -/. sampai G/.; byte dari tempat lompatan!
Ta.el ")(2( Da3tar Peri/ta$ %!0
NO
( PERINTAH LOMPAT KONDISI
/ %A=1ump <) *bo>e? "ompat& jika 'perand/ ? 'perand.& untuk bilangan tidak bertanda
. %G=1ump <) @reater? "ompat& jika 'perand/ ? 'perand.& untuk bilangan bertanda
: %E=1ump <) EAual? "ompat& jika 'perand/ B 'perand.
%NE=1ump <) Not EAual? "ompat& jika 'perand/ tidak sama dengan 'perand.
C %B=1ump <) +elo? "ompat& jika 'perand/ = 'perand.& untuk bilangan tidak bertanda
D %L=1ump <) "ess? "ompat& jika 'perand/ = 'perand.& untuk bilangan bertanda
; %BE =1ump <) +elo or EAual? "ompat& jika operand/ =B 'perand.& untuk bilangan tidak bertanda
%LE =1ump <) "ess or EAual? "ompat& jika 'perand/ =B 'perand.& untuk bilangan bertanda
F %AE=1ump <) *bo>e or EAual? "ompat& jika 'perand/ ?B 'perand.& untuk bilangan tidak bertanda
/, %GE=1ump <) @reater or EAual? "ompat& jika 'perand/ ?B 'perand.& untuk bilangan bertanda
// %' =1ump 7arry? "ompat& jika 7arry )lagB/
/. %'45 =1ump <) 7 is 9ero? "ompat& jika 7B,
/: %NA =1ump <) Not *bo>e? "ompat& j ika 'perand/ = 'perand. d engan 7 8B/ a tau 98B/
/ %NAE =1ump <) Not *bo>e nor EAual?
"ompat& jika 'perand/ = 'perand. dengan 7B/
/C %NB =1ump <) Not +elo? "ompat& jika 'perand/ ? 'perand. dengan 78B, /D %NBE =1ump <) Not +elo nor
EAual?
"ompat& jika 'perand/ ? 'perand. dengan 78B, dan 98B,
/; %N' =1ump <) No 7arry? "ompat& jika 78B,
/ %NG =1ump <) Not @reater? "ompat& jika 'perand/ =B 'perand. dengan 98B/ atau S8 tidak sama '8
/F %NGE =1ump <) Not @reater Nor EAual?
"ompat& jika 'perand/ =B 'perand. dengan S8 tidak sama '8
., %NL =1ump <) Not "ess? "ompat& jika 'perand/ ?B 'perand. dengan S8B'8 ./ %NLE =1ump <) Not "ess Nor EAual? "ompat& jika 'perand/ ? 'perand. dengan 98B, dan
S8B'8
.. %NO =1ump <) No '>er)lo? "ompat& jika tidak terjadi tidak terjadi '>er)lo .: %NP =1ump <) Not Parity? "ompat& jika @anjil
. %NS =1ump <) No Sign? "ompat& jika S8B, .C %N5 =1ump <) Not 9ero? "ompat& jika tidak , .D %O =1ump 'n '>er)lo? "ompat& jika '8B/ .; %P =1ump 'n Parity? "ompat& jika @enap . %PE =1ump <) Parity E>en? "ompat& jika P8B/ .F %PO =1ump <) Parity 'dd? "ompat& jika P8B, :, %S =1ump 'n Sign? "ompat& jika S8B/
:/ %5 =1ump <s Iero? "ompat& jika ,
+ila dilihat pada Tabel /:!.!& perintah untuk lompat sebenarnya sangat mudah untuk digunakan karena setiap huru) melambangkan suatu kata! %engan demikian kita tidak perlu untuk mengingat-ingat semua perintah diatas& kita hanya harus ingat baha huru) 1B1ump& EBEAual& NBNot& SBSign& 9B9ero& PBParity& 'B'>er)lo& 7B7arry& @B@reater Than& *B*bo>e& "B"ess dan +B+elo!
7atatan0
Huru) @ dan " yang artinya Greater Than dan Less digunakan khusus untuk operasi bilangan bertanda! Sedangkan Huru) * dan + yang artinya *bo>e dan +elo digunakan khusus
untuk operasi bilangan tidak bertanda!
Pr1ra! ")(2( Per.a/6i/1a/ karakter
+ila program /:!.! dijalankan& maka pada layar akan ditampilkan0
Teknik Komputer <P+
The +est %iplome in <P+ !!!!JJ
*ngka ; pada akhir kalimat digunakan untuk menghasilkan suara beep! +ila anda masih ingat pada addressing mode yang telah kita pelajari& maka program /:!.! tentunya tidak ada masalah!
III(
TUGAS PENDAHULUAN
/! +uatlah program asssembly yang dapat men(etak kalimat #M*N*1EMEN <N8'RM*T<K*$ jika menekan tombol spasi pada keyboard
1aab0
I7(
LISTING PROGRAM
/!
7(
ANALISA PROGRAM
M6el SMALL
Tanda directive ini digunakan untuk memberitahukan kepada assembler bentuk memory yang digunakan oleh program kita!
('ODE
Tanda directive ini digunakan untuk memberitahukan kepada assembler baha kita akan mulai menggunakan 7ode Segment-nya disini! 7ode segment ini digunakan untuk menyimpan program yang nantinya akan dijalankan!
ORG "**$
Pada program 7'M perintah ini akan selalu digunakan! Perintah ini digunakan untuk memberitahukan assembler supaya program pada saat dijalankan 2diload ke memory3 ditaruh mulai pada o))set ke /,,h 2.CD3 byte! %apat dikatakan juga baha kita menyediakan /,,h byte kosong pada saat program dijalankan! /,,h byte kosong ini nantinya akan ditempati oleh PSP 2 Program Segment Prefix3 dari program tersebut! PSP ini digunakan oleh %'S untuk mengontrol jalannya program tersebut!
INT 2*$
Perintah <NT adalah suatu perintah untuk menghasilkan suatu interupsi dengan synta40
<NT No<nt
<nterupsi .,h ber)ungsi untuk mengakhiri program dan menyerahkan kendali sepenuhnya kepada %os! Pada program 7'M (ara ini bukanlah satu-satunya tetapi (ara inilah yang paling e)ekti) untuk digunakan! +ila anda lupa untuk mengakhiri sebuah program maka program anda tidak akan tahu kapan harus selesai& hal ini akan menyebabkan komputer menjadi hang!
/!
A/alisa:
Pada listing di atas& Kal bernilai #M*N*1EMEN <N8'RM*T<K*$& kemudian agar dapat menginputkan karakter& digunakan interupsi <NT /Dh! <nterupsi ini digunakan agar dapat memba(a karakter yang diinputkan oleh user! Kemudian setelah mendapatkan inputan dari user& selanjutnya akan menghasilkan nilai he4adesimal di register * atas karakter yang telah diinputkan oleh user! Kemudian bandingkan nilai yang ada di register * dengan nilai :F.,h dengan menggunakan synta4 7MP *& :F.,h! Nilai :F.,h digunakan sebagai nilai perbandingan karena karakter spasi akan menghasilkan nilai :F.,h di register *! Selanjutnya digunakan synta4 1E yaitu proses yang akan melompat jika nilai di register * juga bernilai :F.,h dan digunakan synta4 1NE yaitu proses yang akan melompat jika nilai di register *
tidak bernilai :F.,h! 1adi& jika ketika program dijalankan dan user menginputkan karakter selain spasi& maka proses selanjutnya adalah lompat ke E4it& yaitu mengakhiri program dan menyerahkan kendali sepenuhnya kepada %os dengan menggunakan interupsi <NT .,h lalu akhiri program dengan perintah EN% Proses! Tetapi jika user menginputkan spasi 2menekan tombol spasi3& maka proses berikutnya akan langsung lompat ke "akukan& yaitu mendapatkan nilai K*" yang bernilai #M*N*1EMEN <N8'RM*T<K*$ dengan menggunakan synta4 "E* %& K*"! "alu gunakan nilai ser>is untuk men(etak kalimat dengan menggunakan synta4 M' *H& ,Fh! Kemudian selanjutnya adalah mengakhiri program dan menyerahkan kendali sepenuhnya kepada %os dengan menggunakan interupsi <NT .,h lalu akhiri program dengan perintah EN% Proses!
7I(
PENUTUP
o KESIMPULAN
%ari program-program di atas& dapat disimpulkan baha dalam bahasa *ssembly& kita dapat meleati beberapa synta4 dengan (ara melompat langsung ke proses yang dituju dengan (ara menggunakan perintah 15MP! Perintah lompat yang kita gunakan di sini adalah perintah lompat bersyarat! 7ontohnya yaitu perintah lompat yang mengiktuti 7MP! Selain itu juga terdapat perintah lompat bersyarat lainnya yang dapat kita gunakan& yaitu 1*& 1@& 1E& 1NE& 1+& 1"& 1+E& 1"E& 1*E& 1@E& 17& 179& 1N*& 1N*E& 1N+& 1N+E& 1N7& 1N@& 1N@E& 1N"& 1N"E& 1N'& 1NP& 1NS& 1N9& 1'& 1P& 1PE& 1S& dan 19 dengan berbagai kondisi yang kita perlukan dan gunakan sesuai dengan yang kita butuhkan!
o SARAN
Sebelum menggunakan perintah lompat& sebaiknya dianalisa telebih dahulu perintah lompat yang mana yang merupakan perintah lompat yang benar yang kita butuhkan sehingga proses lompat tersebut dapat berjalan dengan baik tanpa terjadi kesalahan!
7II(
DAFTAR PUSTAKA
Suheri& *sep& ST& MT! Modul Praktikum Organisasi Komuter ! Bahasa Assembl"! .,/.! +ogor0 Program %iploma <nstitut Pertanian +ogor!