Anda di halaman 1dari 11

Pengantar Pemrograman Bahasa Assembler

(Laporan Praktikum Bahasa Assembler)


Oleh:
Catur A. Novriadi 0!"0#!0$
LABO%A&O%'() *'+',A ,O)P(&A+'
*A,(L&A+ )A&-)A&',A .AN 'L)( P-N/-&A0(AN ALA)
(N'1-%+'&A+ LA)P(N/
$002
'. P-N.A0(L(AN
A. Latar Belakang
Setiap baris program bahasa assembler umumnya terdiri atas kode operasi
(op code) dan operan. Op code adalah perintah yang akan dilaksanakan,
sedangkan operan adalah sasaran op code. Operan dapat terdiri dari dua bagian
yaitu sumber (source) dan tujuan (destination) atau hanya terdapat satu bagian saja
(biasanya hanya tujuan).
Program assembly lengkap, sama seperti program bahasa tingkat tinggi
lainnya (Pascal, C, C
++
dan lain lain), yaitu terdiri atas kumpulan kumpulan
baris instruksi assembler. Sebenarnya program assembly lengkap, tidak hanya
terdiri dari op code dan operan saja, tetapi juga terdapat apa yang dinamakan
pseudo operation (pseudo ops). Pseudo ops adalah suatu perintah kepada
assembler untuk memberitahukan apa yang harus dilakukan terhadap data,
percabangan bersyarat, perintah macro dan listing. Pseudo ops memiliki bentuk
serupa dengan mnemonic pada instruksi assembler, tetapi tidak menghasilkan
kode bahasa mesin ketika decompile (diterjemahkan oleh compiler).
B. &u3uan
ujuan dari dilakukannya percobaan Pengantar Pemrograman !ahasa
assembler ini adalah "
#. $engetahui %ungsi program program sederhana dari bahasa assembler
&. 'apat membuat program program sederhana dari bahasa assembler
(. $engetahui hasil compiler dari program program yang telah di buat
''. &'N4A(AN P(+&A,A
!ahasa )ssembler adalah bahasa komputer yang kedudukannya di antara
bahasa mesin dan bahasa le*el tinggi misalnya bahasa C atau Pascal. Program
yang ditulis dengan bahasa assembler terdiri dari label, kode mnemonic dan lain
sebagainya, pada umumnya dinamakan sebagai program sumber (source code)
yang belum bisa diterima oleh prosessor untuk dijalankan sebagai program, tapi
harus diterjemahkan dulu menjadi bahasa mesin dalam bentuk kode biner.
Program sumber dibuat dengan program editor biasa, misalnya note pad pada
+indo+s atau side kick pada 'OS, selanjutnya program sumber diterjemahkan ke
bahasa mesin dengan menggunakan program assembler. ,asil kerja program
assembler adalh -program objek. dan juga -assembler listing..
Program objek berisikan kode kode bahasa mesin, kode kode bahasa
mesin inilah yang diumpankan ke memori program prosessor. 'alam dunia
mikrokontroller biasanya program objek ini diisikan ke /0 1P2O$, dan khusus
untuk microkontroller buatan )$13, program ini diisikan ke dalam %lash
P1P2O$ yang ada di dalam chip )45C6# atau )45C&76#.
/ambar !. Bagan ,er3a Proses Assembler
()ndri 8ristanto, &77()
Contoh baris program sederhana bahasa assembler adalah "
$O0 )9, !9
8eterangan "
$O0 " kode operasi, mengkopi
)9 " operan, sebagai tujuan
!9 " operan, sebagai sumber
Contoh pseudo ops yang sering dijumpai adalah"
#. )ssume, digunakan untuk menetapkan register register yang akan
ber%ungsi sebagai register segment dalam program
&. Comment, digunakan untuk menyisipkan suatu komentar di dalam
program
(. '! dan ':, digunakan untuk mende%inisikan suatu *ariabel atau untuk
inisialisasi tempat penyimpanan
;. '/P, digunakan untuk membuat duplikasi suatu data
6. 1</, untuk menyatakan suatu nilai mutlak
=. O2>, untuk meletakkan o%%set a+al data atau program
?. P2OC@1A'P, menyatakan identi%ikasi dari suatu blok perintah yang
umumnya merupakan subrutin
4. S1>$1A@1A'S, untuk menyatakan a+al dan akhir suatu program
segment
5. 3)!13, untuk menandai rujukan tempat melompat atau looping
#7. 'sb.
()ri% Surtono, &77?)
'''. 0A+'L .AN P-)BA0A+AN
A. 0asil Program
#. Program penambahan untuk melihat debugnya
.$O'13 S$)33
.CO'1
O2> #77h
Proses "
$O0 ),, #6h
$O0 )3, ;
)'' ),, )3
$O0 )9, #&(;h
$O0 !9, 7B&&#h
)'' )9, !9
$O0 )9, #&(;h
$O0 !9, 5)!Ch
$O0 C9, 6=?4h
$O0 '9, 7'1B7h
)'' C9, '9
)'C )9, !9
CAC )3
CA &7h
1A' Proses
0asiln5a
C"D)S$Edebug %ilet.com
F2
)9G7777 !9G7777 C9G77&& '9G7777 SPGBBB1 !PG7777 SCG7777
'CG7777
'SG7!(7 1SG7!(7 SSG7!(7 CSG7!(7 CPG7#77 A0 /P 1C P3 AH A) PO
AC
7!(7"7#77 !;#6 $O0 ),,#6
F/
7!(7"7#77 !;#6 $O0 ),,#6
7!(7"7#7& !77; $O0 )3,7;
7!(7"7#7; 7&17 )'' ),,)3
7!(7"7#7= !4(;#& $O0 )9,#&(;
7!(7"7#75 !!&#B& $O0 !9,B&&#
7!(7"7#7C 7(C( )'' )9,!9
7!(7"7#71 !4(;#& $O0 )9,#&(;
7!(7"7### !!!C5) $O0 !9,5)!C
7!(7"7##; !5?46= $O0 C9,6=?4
7!(7"7##? !)B7'1 $O0 '9,'1B7
7!(7"7##) 7(C) )'' C9,'9
7!(7"7##C #(C( )'C )9,!9
7!(7"7##1 B1C7 CAC )3
F
)9G#677 !9G7777 C9G77&& '9G7777 SPGBBB1 !PG7777 SCG7777
'CG7777
'SG7!(7 1SG7!(7 SSG7!(7 CSG7!(7 CPG7#7& A0 /P 1C P3 AH A) PO
AC
7!(7"7#7& !77; $O0 )3,7;
F
)9G#67; !9G7777 C9G77&& '9G7777 SPGBBB1 !PG7777 SCG7777
'CG7777
'SG7!(7 1SG7!(7 SSG7!(7 CSG7!(7 CPG7#7; A0 /P 1C P3 AH A) PO
AC
7!(7"7#7; 7&17 )'' ),,)3
F
)9G#57; !9G7777 C9G77&& '9G7777 SPGBBB1 !PG7777 SCG7777
'CG7777
'SG7!(7 1SG7!(7 SSG7!(7 CSG7!(7 CPG7#7= A0 /P 1C P3 AH A) PO
AC
7!(7"7#7= !4(;#& $O0 )9,#&(;
F
)9G#&(; !9G7777 C9G77&& '9G7777 SPGBBB1 !PG7777 SCG7777
'CG7777
'SG7!(7 1SG7!(7 SSG7!(7 CSG7!(7 CPG7#75 A0 /P 1C P3 AH A) PO
AC
7!(7"7#75 !!&#B& $O0 !9,B&&#
F
)9G#&(; !9GB&&# C9G77&& '9G7777 SPGBBB1 !PG7777 SCG7777
'CG7777
'SG7!(7 1SG7!(7 SSG7!(7 CSG7!(7 CPG7#7C A0 /P 1C P3 AH A) PO
AC
7!(7"7#7C 7(C( )'' )9,!9
F
)9G7;66 !9GB&&# C9G77&& '9G7777 SPGBBB1 !PG7777 SCG7777
'CG7777
'SG7!(7 1SG7!(7 SSG7!(7 CSG7!(7 CPG7#71 A0 /P 1C P3 AH A) P1
CI
7!(7"7#71 !4(;#& $O0 )9,#&(;
F
)9G#&(; !9GB&&# C9G77&& '9G7777 SPGBBB1 !PG7777 SCG7777
'CG7777
'SG7!(7 1SG7!(7 SSG7!(7 CSG7!(7 CPG7### A0 /P 1C P3 AH A) P1
CI
7!(7"7### !!!C5) $O0 !9,5)!C
F
)9G#&(; !9G5)!C C9G77&& '9G7777 SPGBBB1 !PG7777 SCG7777
'CG7777
'SG7!(7 1SG7!(7 SSG7!(7 CSG7!(7 CPG7##; A0 /P 1C P3 AH A) P1
CI
7!(7"7##; !5?46= $O0 C9,6=?4
F
)9G#&(; !9G5)!C C9G6=?4 '9G7777 SPGBBB1 !PG7777 SCG7777
'CG7777
'SG7!(7 1SG7!(7 SSG7!(7 CSG7!(7 CPG7##? A0 /P 1C P3 AH A) P1
CI
7!(7"7##? !)B7'1 $O0 '9,'1B7
F
)9G#&(; !9G5)!C C9G6=?4 '9G'1B7 SPGBBB1 !PG7777 SCG7777
'CG7777
'SG7!(7 1SG7!(7 SSG7!(7 CSG7!(7 CPG7##) A0 /P 1C P3 AH A) P1
CI
7!(7"7##) 7(C) )'' C9,'9
F
)9G#&(; !9G5)!C C9G(6=4 '9G'1B7 SPGBBB1 !PG7777 SCG7777
'CG7777
'SG7!(7 1SG7!(7 SSG7!(7 CSG7!(7 CPG7##C A0 /P 1C P3 AH A) PO
CI
7!(7"7##C #(C( )'C )9,!9
F
)9G)CB# !9G5)!C C9G(6=4 '9G'1B7 SPGBBB1 !PG7777 SCG7777
'CG7777
'SG7!(7 1SG7!(7 SSG7!(7 CSG7!(7 CPG7##1 A0 /P 1C A> AH )C PO
AC
7!(7"7##1 B1C7 CAC )3
F
)9G)CB& !9G5)!C C9G(6=4 '9G'1B7 SPGBBB1 !PG7777 SCG7777
'CG7777
'SG7!(7 1SG7!(7 SSG7!(7 CSG7!(7 CPG7#&7 A0 /P 1C A> AH A) PO
AC
7!(7"7#&7 C'&7 CA &7
F<
&. Program mencetak karakter dari H sampai )
JGGGGGGGGGGGGGGGGGGGGGGGGGGGGJ
J P2O>2)$ " C!)7.)S$ J
J B/A>SC " $1AC1)8 8)2)812 J
J KHK..K)K '1A>)A J
J CA &#h S120CS 7& J
JGGGGGGGGGGGGGGGGGGGGGGGGGGGGJ
.$O'13 S$)33
.CO'1
O2> #77h
Proses "
$O0 ),,7&h J Ailai ser*is
$O0 '3,LHL J '3G6)h
$O0 C9,&= J !anyaknya pengulangan yang akan dilakukan
/lang "
CA &#h J Cetak karakterMM
'1C '3 J 8urang '3 dengan #
3OOP /lang J 3ompat ke /lang
CA &7h
1A' Proses
0asiln5a
C"D)S$Etasm cba7.asm
urbo )ssembler 0ersion &.7 Copyright (c) #544, #557 !orland Cnternational
)ssembling %ile" cba7.asm
1rror messages" Aone
:arning messages" Aone
Passes" #
2emaining memory" ;??k
C"D)S$EtlinkNt cba7
urbo 3ink 0ersion (.7 Copyright (c) #54?, #557 !orland Cnternational
C"D)S$Ecba7
HI9:0/S2<POA$38OC,>B1'C!)
(. Program membuat kalimat
'OSS1>
.$O'13 S$)33
.S)C8 #77h
.'))
,ello$essage '! L,alo 'uniaML,#(,#7,LPL
.CO'1
mo* aQ,Rdata
mo* ds,aQ J set 'S agar menunjuk ke segmen '))
mo* ah,5 J %ungsi cetak string 'OS
mo* dQ,OBBS1 ,ello$essage J alamat K,alo duniaMK
int &#h J tampilkan K,alo duniaMK
mo* ah,;Ch J %ungsi terminasi program 'OS
int &#h J selesaiM
1A'
0asiln5a
C"D)S$Etasm hello.asm
urbo )ssembler 0ersion &.7 Copyright (c) #544, #557 !orland Cnternational
)ssembling %ile" hello.asm
1rror messages" Aone
:arning messages" Aone
Passes" #
2emaining memory" ;??k
C"D)S$Etlink hello.obj
urbo 3ink 0ersion (.7 Copyright (c) #54?, #557 !orland Cnternational
C"D)S$Ehello
,alo 'uniaM
B. Pembahasan Program
'ari praktikum yang dilakukan yaitu pengantar pemrograman bahasa
assembler 8ita membuat ( buah program a+al atau sederhana menggunakan
bahasa assembler kemudian 8ita dapat amati hasil dari compilernya apakah
berhasil atau gagal karena kesalahan dari program tersebut (kesalahan syntaQ)
ataukah salah pada saat mengcompile program tersebut (kesalahan logika).
Pada program pertama disini yang kita buat adalah program penjumlahan
atau operasi penambahan yang dapat 8ita lihat hasilnya melalui debug. Penekanan
-2. pada saat pertama kali digunakan untuk melihat nilai pada semua register.
Pada baris pertama dapat 8ita lihat register yang dinamakan sebagai general
purpose ()9, !9, C9 dan '9). 2egister SP yang digunakan pada operasi stack
menunjukkan nilai BBB1 (akhir dari Segment), jadi operasi stack nantinya akan
ditaruh pada posisi tersebut. Pada baris kedua dapat 8ita lihat keempat register
segmen, yaitu 'S, 1S, SS, CS. 8eempat register segment menunjukkan nilai yang
sama yaitu 7!(7. ,al ini dikarenakan program 8ita adalah program com dan
hanya menggunakan # segment. Pada baris kedua dapat juga 8ita lihat register CP
bernilai #77h. 2egister CP menunjukkan bah+a 8ita sekarang sedang berada pada
o%%set ke #77h dari segment akti% (CS"CP atau 7!(7 " #77). Pada baris ketiga dapat
8ita lihat 7!(7 " 7#77, nilai ini menunjukkan pasangan dari CS"CP setelah itu
dapat 8ita lihat nilai !;#6 yang menunjukkan isi dari alamat 7!(7 " 7#77 adalah
!; sedangkan isi dari alamat 7!(7 " #77# adalah #6. nilai !;#6 ini sebenarnya
merupakan suatu bahasa mesin untuk perintah $O0 ),, #6. Oadi bahasa mesin
untuk perintah -$O0 ),, nilai. adalah !; disertai nilai tersebut. 'ari nilai !;#6
ini dapat diketahui bah+a perintah $O0 akan menggunakan & byte di memory.
Setelah itu penekanan / bertujuan untuk melihat kode bahasa assembler pada
program yang telah dituliskan, setelah itu tekanlah ST untuk mengeksekusi
instruksi yang terdapat pada alamat yang ditunjukkan CS"CP ($O0 ),, #6).
Setelah 8ita menekan ST maka akan ditampilkan hasil setelah instruksi -$O0
),, #6. dieksekusi.
Pada program kedua 8ita mencoba mencetak karakter dari suatu huru%
yang dimulai dari huru% H berturut turut hingga huru% ) disini yang 8ita
gunakan adalah -CA &#h S120CS 7&. dengan menggunakan C9,&= berarti ada
&= karakter yang akan 8ita cetak atau ditampilkan disini yang kemudian 8ita
gunakan 3oop /lang.
Pada program ketiga ini 8ita coba untuk mencetak kalimat yang
menggunakan perintah Stack. Stack artinya ialah StumpukanT dalam arti lain stack
adalah bagian memory yang digunakan untuk menyimpan nilai dari suatu register
untuk sementara. Operasi operasi pada assembler yang langsung menggunakan
stack misalnya pada perintah P/S,, POP, P/SB dan POPB. 8arena menggunaka
Stack dan 'osseg pada saat kita merunning program ini atau mengcompilenya
8ita gunakan -.O!O. dibelakangnya, ini dimaksudkan karena program yang 8ita
buat bersi%at Objection.

Anda mungkin juga menyukai