Anda di halaman 1dari 58

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

Pertemuan Ke
Tujuan Instruksional Khusus Pokok Bahasan

1 (Satu)
Mengerti dan Memahami Assembler dan Sistem bilangan Pengenalan Bahasa Rakitan dan Sistem Bilangan Pengenalan Bahasa Rakitan Sistem bilangan biner Sistem bilangan oktal Sistem bilangan desimal Sistem bilangan he adesimal 1# Tuntunan Praktis Pemrograman Assembl$% &artono Partoharsojo '# Pemrograman dengan Bahasa Assembl$% Susanto (# Mi)ro*ro)essor Programmer+s% re"erensi Intel ,o

Sub Pokok Bahasan

!a"tar Pustaka

Apa Itu Bahasa Rakitan (Assembler) ?


Bahasa Rakitan termasuk ke dalam bahasa tingkat rendah dan meru*akan bahasa dasar kom*uter# Bahasa ini memerlukan logika $ang )uku* rumit di sam*ing instruksin$a $ang jauh berbeda dengan bahasa *emrograman lainn$a# Program $ang dihasilkan memiliki ke)e*atan $ang *aling baik# Kelebihan dari bahasa rakitan adalah 1# Memiliki "asilitas "ungsi dan makro ()iri khas bahasa *emrograman $ang men$ebabkan *emrograman menjadi lebih mudah)# '# Program da*at dibuat se)ara modular (di*e)ah dalam modul-modul ke)il dan da*at diintegrasikan kembali)# (# .kuran *rogram lebih ke)il% sehingga lebih menghemat media *en$im*an# 4. /ebih dekat ke hard0are sehingga seluruh kemam*uan kom*uter da*at diman"aatkan se)ara maksimal#

Apa saja yang diperlukan untuk belajar Bahasa Rakitan atau Assembler ?
.ntuk mem*elajarai bahasa rakitan 1 assembler di*erlukan 1# '# (# 3# 4# 5# 6# 7# 8# Sistem bilangan antara lain Biner% 2ktal% !esimal dan &e adesimal Pengenalan Mi)ro*ro)essor Sistem Memori dan Pengalamatan Memori Interu*t 1 Interu*si Register Instruksi Assembl$ atau Mnemoni) Mode *engalamatan data 2*erasi-o*erasi *ada assembler Pembuatan *rogram

Sistem Bilangan
.ntuk mem*elajari bahasa rakitan kita harus mengenal bebera*a sistem bilangan $ang sangat berguna dalam *engaksesan *ort atau*un mengha"al kode AS,II $ang *enting# Bilangan

.k$ 9udatama% S#Si% M#Kom

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)


desimal sering kita gunakan sehari-hari untuk segala ke*erluan% sedangkan bilangan lainn$a sangat dibutuhkan dalam *emrograman bahasa rakitan atau assembler% karena bahasa ini di*akai untuk menjalankan sistem mikro*rosessor# Setia* mikro*rosesor memiliki bahasa rakitan sendiri# Ada*un sistem bilangan $ang di*elajari adalah sebagai berikut 1# Bilangan Biner Bilangan ini han$a mengenal angka : dan 1 sehingga bilangan ini berdasar '# ,ara mengkon;ersi ke bilangan desimal adalah dengan mengalikan dua dengan *angkat < (suku ke-<) se*erti bilangan desimal mengalikan 1: dengan *angkat < ,ontoh1110 8 : = 1 = : = 1 = (biner) + : > :: : > :1 1 > :1 1 > 11 4 dikonversi ke desimal menjadi : + 2 + 0 = 14 (desimal)

(1 * 23) + (1 * 22) + (1 * 21) + (0 * 20) = 2*erasi tambah *ada sistem biner -

,ontoh 1110001 + 1011000 desimalnya : = 11001001 (biner)

113 + 89 = 201

'# Bilangan 2ktal Bilangan 2ktal meru*kan bilangan berdasar 7# ?adi bilangan ini han$a terdiri dari angka : hingga 6# Kon;ersi bilangan o)tal ke desimal mem*un$ai )ara $ang sama dengan bilangan biner% han$a memakai bilangan dasar 7# ,ontoh355 bilangan o !al ke desimal 355 ok!al = (3 * 82) + (5 * 81) + (5 * 80) = = (# Bilangan !esimal Bilangan ini sudah tidak asing lagi% karena digunakan dalam kehidu*an sehari-hari# Sistem bilangan ini terdiri dari angka : sam*ai 8 dengan menggunakan dasar 1:# 192 + 40 + 5 23" desimal

.k$ 9udatama% S#Si% M#Kom

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)


3# Bilangan &e adesimal Bilangan ini mutlak harus dikuasai% karena dalam bahasa rakitan kita sering menemukan bilangan ini# Kode AS,II ditulis dalam bilangan he adesimal $ang me0akili huru"% angka% tanda ba)a dan karakter unik lainn$a seban$ak '44 buah# Bilangan he adesimal meru*akan bilangan dasar 15 terdiri dari - :1'(345678AB,!@A ,ara mengkon;ersi ke bilangan desimal sama dengan biner dan o)tal ,ontoh3# $e%a = = = (3 * 1&1) + (10 * 1&0) 48 + 10 58 desimal

Bahasa Rakitan atau Assembler merupakan bahasa tingkat rendah / low level language digunakan dalam computer untuk Sistem Operasi, Compiler, penanganan file dan operasi-operasi mikroprosesor

Setiap digit bilangan biner disebut satu bit !erdiri dari " dan # Bilangan Octal merupakan bilangan dasar $ terdiri dari " s/d % Bilangan &esimal merupakan bilangan dasar #" 'ang sudah sering dipakai Bilangan (e)adesimal merupakan bilangan dasar #* terdiri dari " + ,ABC&-. dan dipakai dalam kode ASC// dank ode-kode lainn'a

T.BAS 1# ?elaskan mengenai bahasa rakitanC '# A*a saja $ang di*erlukan untuk mem*elajari bahasa rakitan1assemblerC

3. Buatlah bebera*a )ontoh bilangan dan kon;ersikan sendiri bilangan tersebut menjadi
bebera*a sistem bilangan#

.k$ 9udatama% S#Si% M#Kom

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

Pertemuan Ke
Tujuan Instruksional Khusus Pokok Bahasan Sub Pokok Bahasan !a"tar Pustaka

' (!ua)
Mengerti dan Memahami konse* memori *ada P, Memori - Pengertian Memori P, - Pembagian Memori P, - Pengalamatan Memori P, 1# Tuntunan Praktis Pemrograman Assembl$% &artono Partoharsojo '# Pemrograman dengan Bahasa Assembl$% Susanto (# Mi)ro*ro)essor Programmer+s% re"erensi Intel ,o

Memori
Pengertian Memori
Meru*akan bagian ter*enting dalam kom*uter untuk men$im*an data dan *rogram# !alam mi)ro*rosesor 7:77 terda*at 15 saluran alamat (address) dan 7 saluran data se)ara multi*le # Saluran alamat lainn$a $ang tersedia ada 3% khusus untuk menunjuk segmen memori% dimana tia* segment menjangkau memori sebesar 53 kliob$te# Sehingga dari 15 saluran alamat da*at menggara* isi memori hingga 1 megab$te dan bekerja dengan data 15 bit# .kuran memori 1 kilob$te > 1:'3 b$te% 1 megab$te > 1:'3 he adesimal dari :::::& sam*ai AAAAA&# Sebagai )ontoh - Memori di P, DT 53: kilob$te terdiri dari alamat ::5::& sam*ai alamat A::::&#RAM dan R2M meru*akan kom*onen I, $ang da*at men$im*an data dan *rogram $ang da*at dialamati terdiri dari jalur alamat (address) dan jalur data# RAM da*at menulis dan memba)a data% sedangkan R2M han$a memba)a saja# Kombinasi saluran1jalur data beru*a 7 bit atau 15 bit $ang din$atakan dalam bilangan he adesimal# Sedangkan jalur alamat (address) memiliki *ola $ang sama dengan jalur data memakai bilangan he adesimal# Sekarang telah berkembang memori dengan jumlah saluran (' bit dan 53 bit# Tem*at men$im*an data ukuran 1 b$te di RAM dan R2M harus diberi nomor urut agar mudah diidenti"ikasi beru*a alamat memori (memori address)# ?ika ada data beru*a 4A& disalurkan melalui jalur data ke memori dengan alamat memori :A'B3&% maka berarti di lokasi memori nomor :A'B3& terda*at data 4A&# Memori dengan jalur alamat $ang ban$ak akan memiliki ka*asitas sim*an $ang din$atakan dalam b$te% kilob$te% megab$te atau gigab$te# 1:'3 b$te > 1#:37#465 b$te# Maka alamat memori dari : sam*ai 1 megab$te memerlukan *enulisan dengan 4 digit angka

.k$ 9udatama% S#Si% M#Kom

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)


Memori berka*asitas 53 KB berarti memiliki kemam*uan merekam 53 b$te# Istilah dalam memori $ang sangat laEim dan sering ditemui dalam setia* *emrograman bahasa rakitan adalah Bit adalah singkatan dari binar$ digit B$te adalah 7 bit Ford adalah ' b$te 1:'3 b$te data# Suatu 1:'3 1:'3

media *en$im*an beru*a &ard disk 1: M berarti memiliki ka*asitas rekam 1:

Pembagian memori
!iantara register dalam ,P. untuk men)atat alamat memori $ang di*ergunakan terda*at segment register digabung dengan o""set register $ang mengatur *embagian memori# 2""set register da*at beru*a register lain $ang bukan segment register dengan aturan *asangan SSSS - 2222 S > digit he adesimal *ada segment register 2 2 > digit he adesimal *ada o""set register Satu segment memori berukuran 53 kilob$te terbagi atas bebera*a segment o""set $ang da*at dialamati oleh o""set register# Sedangkan memori (RAM G R2M) *ada P, da*at terdiri dari bebera*a1ban$ak segment memori tergantung ka*asitas memori *ada P, tersebut#

Pengalamatan Memori
Meru*akan suatu )ara untuk men)atat atau menunjuk alamat memori sesuai aturan *asangan SSSS - 2222 artin$a *enulisan alamat memori menuruti aturan bah0a bobot digit terendah *ada Segment Register adalah 15 *angkat 1 dan bobot tertinggi 15 *angkat 3# Sedangkan *ada 2""set Register bobot digit terendah adalah 15 *angkat : dan bobot digit tertinggi 15 *angkat (# ,ontohMisalkan- SSSS di*ilih 1'(3& 2222 di*ilih !,BA& Maka *engalamatan memori da*at din$atakan 1'(3-!,BA# Angka alamat absolutn$a da*at dihitung dari 1'(3: :!,BA = 1AAAA ,ara *enulisan alamat memori 1'(3-!,BA memberi alamat absolute 1AAAA&# Penunjukan alamat memori oleh mikro*rosesor dilakukan oleh register BD#

.k$ 9udatama% S#Si% M#Kom

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)


?ika kita ingin menaruh data dengan *en)atatan alamat memori memakai segment register BD dan o""set register !S# Pen)atatan alamat din$atakan dengan rumus !S-BD ,ontoh- :1:: - :'(3 artin$a !S men)atat :1::&% BD men)atat :'(3& Alamat memori :::: - :'(3 da*at din$atakan dengan !S-BD=!I $aitu !S berisi ::::% BD diisi :'::& dan !I diisi ::(3& Penulisan BD=!I disebut o""set address terhada* segment address# 0emori pada dasarn'a dapat men'impan data dan program 'ang bersifat sementara 0emori memiliki 1alur data dan 1alur alamat 2address3 agar dapat diidentifikasi oleh microprosessor pada saat sedang membaca data dan program 0emori memiliki kapasitas dalam satuan b'te, kilob'te, megab'te, gigab'te dll 4engalamatan memori diatur berdasarkan pembagian segment dan offset Satu b'te data dimemori memiliki satu alamat offset 4enun1ukkan alamat memori dilakukan oleh C45 dengan memanfaatkan register B6 4encatatan alamat memori dapat ditulis dengan &S7B6 atau &S7B68&/

T.BAS 1# ?elaskan *engertian memoriC '# ?elaskan *erbedaan RAM dan R2MC (# Bagaimana )ara melakukan *embagian memoriC 3# ?elaskan )ara *engalamatan memori untuk menda*atkan alamat absoluteC 4# A*a saja $ang di*erlukan untuk mem*elajari bahasa rakitan1assemblerC

6. Buatlah bebera*a )ontoh bilangan dan kon;ersikan sendiri bilangan tersebut menjadi
bebera*a sistem bilangan#

.k$ 9udatama% S#Si% M#Kom

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

Pertemuan Ke Tujuan Instruksional Khusus Pokok Bahasan

( (Tiga) Mengerti dan Memahami sistem bilangan Interru*t dan Register - Pengertian Interru*t - Pengertian Register - ?enis-jenis Register

Sub Pokok Bahasan

!a"tar Pustaka

1# Tuntunan Praktis Pemrograman Assembl$% &artono Partoharsojo '# Pemrograman dengan Bahasa Assembl$% Susanto (# Mi)ro*ro)essor Programmer+s% re"erensi Intel ,o

Interrupt dan Register


Pengertian Interru*t
Interru*t atau interu*si adalah *roses dalam kom*uter untuk meminta dila$ani oleh mikro*rosesor sesuai dengan tingkat *rioritasn$a $ang telah diatur sedemikian ru*a oleh sistem hard0are )om*uter# ,P. ban$ak melaksanakan routin untuk melakukan *ela$anan *emrosesan atau*un koordinasi ke*ada I, *enunjang atau )hi*set dan *eri*herals *ada saat di*erlukan# Sehingga ,P. da*at melakukan o*erasi dengan ' )ara $aitu 1# 2*erasi dengan *olling '# 2*reasi dengan interru*t 2*erasi dengan *olling berarti ,P. selalu terus menerus menan$akan1 memantau ke tia*-tia* kom*onen *enunjang satu *ersatu meski*un kom*onen itu sedang tidak memerlukan *ela$anan# Sedangkan o*erasi interru*t atau interu*si dilakukan oleh tia*-tia* kom*onen ke*ada ,P. bilamana memerlukan *ela$anan *emrosesan% sehingga ,P. tidak terus-menerus menan$akan 1memantau kom*onen itu# Setia* interu*si $ang datang di kontrol oleh interru*t )ontroller di luar ,P.# !alam keadaan ,P. terkena interu*si% maka ,P. untuk sesaat menghentikan kegiatan *ela$anan utama dan beralih mela$ani kom*onen $ang menginteru*sin$a# Setelah selesai dila$ani ,P. kembali melakukan *ela$anan utaman$a# ,ara interu*si sangat meningkatkan e""isiensi o*erasi ,P. dan melakukan tugasn$a dengan )e*at# Interu*si da*at dilakukan dengan )ara hard0are dan so"t0are% sehingga ,P. da*at menerima ( ma)am interu*si antara lain -

.k$ 9udatama% S#Si% M#Kom

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

1# Interu*si so"t0are (instruksi I<T n& n> bilangan ::& s1d AA&) '# <on Maskable Interru*t (Interu*si hard0are dimana interu*si ini mutlak tidak da*at di)egah karena berasal dari sistem board atau I,# (# Maskable Interru*t (berasal dari hard0are melalui *in I<TR) $ang da*at ditutu* atau di)egah dengan instruksi ,/I berasal dari interu*si *erangkat lunak# Interu*si so"t0are terdiri dari '45 dan diberi nomor ::& hingga AA&# Alamat a0al masingmasing *rogram *ela$anan terdiri dari 3 b$te% ' b$te untuk ,ode Segment dan ' b$te untuk Instru)tion Pointer# !alam *emrograman assembler kita da*at melakukan interu*si se)ara so"t0are dengan *erintah I<T $ang da*at dilihat dalam tabel interu*si# Interru*t So"t0are dalam P, terbagi dua $aitu 1# Interru*t BI2S (Basi) In*ut 2ut*ut Sistem) '# Interru*t !2S (!isk 2*erating Sistem) Interru*t BI2S di0ujudkan dalam bentuk interu*si so"t0are berjumlah (' dan akses *ela$anann$a tinggal memerintahkan dengan instruksi I<T n& asal *arametern$a di0ajibkan telah ter*enuhi dahulu# I<T n& terdiri dari ::& sam*ai 1A& $ang disusun berurutan dan diberi ser;is number (nomor *ela$anan) tersendiri# Interru*t !2S meru*akan interu*si dari so"t0are Sistem 2*erasi terdiri dari I<T ':& untuk kembali ke !2S dan I<T '1& untuk o*erasi In*ut12ut*ut#

Pengertian Register
Register tidak da*at dile*askan dari mikro*rosessor% sebab *ada mikro*rosessor terda*at register $ang ber"ungsi untuk men$im*an sementara hasil dari taha*an o*erasi arithmetika dan logika *ada mikro*rosessor# Register dalam bahasa rakitan menggunakan real mode memor$ $ang sesuai dengan mikro*rosessor Intel generasi 7:77 s1d Pentium# Register $ang terda*at *ada mikro*rosessor Intel terdiri dari 1# '# (# 3# 4# Beneral *ur*ose register (register serbaguna) Pointer register (register *ointer) Inde register (register indeks) Segment register (register segment) Alag register (register status)#

Semua register di atas lebarn$a (' bit% ke)uali register segment (,S% !S% @S% SS% AS dan BS) han$a 15 bit# Register (' bit da*at digunakan sebagai register 15 bit% ke)uali register Beneral *ur*ose register da*at dibagi menjadi 7 bit (A/%A&% B/% B&% ,/% ,&% !/ dan !&) $ang berasal dari 15 bit (AD% BD% ,D% !D)# Register (' bit diberi kode di de*an register dengan @ misaln$a@AD% @BD% @,D dan @!D#

Macam-macam Jenis dan Fungsi Register


Berikut ini jenis dan "ungsi dari masing-masing Register $aitu 1# Beneral Pur*ose Register (Register Serbaguna)

.k$ 9udatama% S#Si% M#Kom

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)


Register untuk ke*erluan umum $ang terdiri atas a# Register AD (A))umulator register) ber"ungsi sebagai tem*atSementara hasil suatu o*erasi arithmetika atau logika (A/% A&% AD dan @AD) Memasukkan nomor la$anan interu*si% untuk ke*erluan *emesanan sebuah la$anan interu*si (register A&)# Men$im*an bilangan $ang dikalikan (reg A/% AD% @AD) dan setengan bagian terke)il (/SB) dari hasil *erkalian (register !D-AD dan @!D-@AD)# Men$im*an setengah bagian terke)il(/SB) sebuah bilangan dibagi (!D-AD dan @!D-@AD) dan hasil bagi (A/% AD% @AD)# b# Register BD (Base Register) Base register adalah register untuk men$im*an alamat o""set data $ang terletak di memori (B/% B&% BD dan @BD) )# Register ,D (,ounter Register) ,ounter register adalah register serbaguna $ang ber"ungsi sebagai Pen)a)ah untuk o*erasi loo* (,D dan @,D) Pen)a)ah untuk o*erasi shi"t dan rotate (,/) Pen)a)ah ()ounter) untuk o*erasi string (,D)

d# Register !D (!ata register) !ata register adalah register serbaguna $ang ber"ungsi sebagai Pen$im*an hasil *erkalian 15 bit (!D-AD) dan (' bit (@!D-@AD)# Pen$im*an hasil *embagian (!D-AD dan @!D-@AD) Pen$im*an data he adesimal (kode AS,II) di reg !/ untuk di)etak di la$ar monitor# '# Pointer Register Register ini untuk menunjukkan alamat sebuah data di lokasi memori% di*akai saat o*erasi *er*indahan data (dari1ke memori)% o*erasi sta)k (P.S&1P2P) dan *enunjukkan alamat suatu instruksi# Berikut adalah ma)am-ma)am *ointer register- SP (Sta)k Pointer) dan @SP% BP (Base Pointer) dan IP (Instru)tion Pointer)# (# Inde Register Sama dengan *ointer register% sering digunakan untuk menunjukkan alamat sebuah data di lokasi memori *ada o*erasi string# Ma)am-ma)am register Inde adalah - SI (Sour)e Inde )% !I (!estination Inde )# 3# Segment Register Segment register membentuk alamat memori untuk data# Pada o*erasi real mode suatu segment register akan berbeda dengan segment register *ada o*erasi *rote)ted mode# 9ang termasuk ke dalam segment register antara lain ,ode segment -H untuk menunjukkan alamt instruksi berikutn$a# !ata segment -H untuk menunjukkan alamat data *ada trans"er register

.k$ 9udatama% S#Si% M#Kom

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)


4# @ tra segment -H register tambahan untuk o*erasi string Sta)k segment -H dengan SP u1 menunjukkan sta)k dan memanggil suatu *rosedur (,A//) dan mengarah ke *rogram utama (R@T)# AS dan BS register -H register tambahan u1 segmen memori $ang besar#

Alag Register Ber"ungsi untuk menunjukkan status (keadaan) sesaat dari mikro*rosessor# Bit-bit *ada "lag akan mengalami *erubahan% tergantung *roses $ang baru saja berlangsung# Ada*un kode bit $aitu sebagai berikut , ()arr$) -H 1>ada )arr$ out :> tdk ada )arr$ out P (Parit$) -H 1>*aritas gena* :> *aritas ganjil A (au iliar$ )arr$) -H 1>ada )arr$ :>tdk ada )arr$ I (Eero) -H 1>hasiln$a nol :>hasiln$a bukan nol S (sign) -H 1>hasiln$a negati" :>hasiln$a *ositi" T (tra*) -H bila diset 1 dimungkinkan melakukan debugging# I (interru*t) -H 1> *in I<TR enable :>*in I<TR disable ! (dire)tion) -H 1>)a)ahan turun :>)a)ahan naik (2;er"lo0) -H menunjukkan adan$a kelebihan ka*asitas atau tidak I2P/ (in*ut-out*ut *ri;alege le;el) -H untuk *rote)ted mode <T (nested task) -H indikasi dari *enggabungan dengan o*erasi lain# RA (resume) -H untuk debugging JA (Jirtual mode) -H untuk o*erasi ;irtual *ada *rote)ted mode A, (alignment )he)k) -H untuk data 0ord dialamati ke memori

Register merupakan tempat men'impan data sementara 'ang berada dalam C45 Register terdiri atas 9 bagian 'aitu 7 :eneral 4urpose Register, 4ointer Register, /nde) Register, Segment Register, .lag Register .ungsi setiap register bermacam-macam sesuai peruntukann'a 'ang telah diatur oleh pembuat mikroprosesor

T.BAS 1# ?elaskan *engertian Interu*tC '# ?elaskan )ara-)ara ,P. melakukan o*erasi routin terhada* kom*onen *endukungC (# Sebutkan ma)am-ma)am interru*t *ada *emrograman bahasa rakitanC 3# ?elaskan *engertian Register dan sebutkan ma)am-ma)am registerC 4# ?elaskan semua "ungsi setia* register C 5# Menga*a register di*akai dalam *emrograman bahasa rakitan1 assemblerC

.k$ 9udatama% S#Si% M#Kom

10

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

Pertemuan Ke
Tujuan Instruksional Khusus Pokok Bahasan Sub Pokok Bahasan !a"tar Pustaka

3 (@m*at)
Mengerti dan Memahami Pembuatan Program Perlengka*an Bahasa Rakitan - ,om*iler dan /inker - Perbedaan Program ,om dan @ e - /abel dan Komentar - Perintah M2J 1# Tuntunan Praktis Pemrograman Assembl$% &artono Partoharsojo '# Pemrograman dengan Bahasa Assembl$% Susanto (# Mi)ro*ro)essor Programmer+s% re"erensi Intel ,o

Perlengkapan Bahasa Rakitan


.ntuk membuat bahasa rakitan di*erlukan *erlengka*an $ang meru*akan so"t0are antara lain dari !2S beru*a !ebug#,2M atau dari Borland International beru*a Turbo Assembler atau *rogram lainn$a# Khusus untuk membuat *rogram dengan Turbo Assembler maka *erlengka*ann$a terdiri dari - ,om*iler dan /inker $ang )om*atible dengan )om*uter P, DT1AT1Pentium dan *ro)essor Intel% AM!% ,$ri #

,om*iler dan /inker


Pada *emrograman assembler dikenal istilah ,om*iler meru*akan suatu *rogram $ang da*at mengubah suatu "ile bere tensi #ASM (assembler) menjadi "ile 2bje)t berekstensi #2B?# ,om*iler ini juga da*at memberitahukan isi suatu *rogram $ang akan dikom*ilasi a*akah mengandung kesalahan (error) *er baris atau *erintah $ang tidak sesuai# ,om*iler *ada bahasa rakitan khususn$a Turbo Assembler menggunakan TASM#@D@# Sour)e *rogram $ang dikom*ile dengan )om*iler TASM dibuat dengan teks editor !2S atau Findo0s dan disim*an dengan nama "ile #ASM di dire)tori $ang berisi TASM#@D@ agar lebih mudah dalam mengkom*ilasin$a# ,ara mengkom*ilasi *rogram sumber (sour)e *rogram) menjadi *rogram objek adalah TASM (nama "ile #ASM) (nama "ile #2B?) ,ontohLATIH1.ASM dikompile dengan TASM.E E di di!e"#o!$ A men%adi & AHTASM /ATI&1#ASM /ATI&1#2B? (enter) atau

.k$ 9udatama% S#Si% M#Kom

11

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)


AHTASM /ATI&1 (enter) Maka di la$ar tam*ak-

Turbo Assembler Jersion '#: ,o*$right ()) 1877 b$ Borland International Assembling "ile/ATI&1#ASM @rror messages<one Farning messages- <one Remaining memor$- 15k

?ika kita ingin membuat "ile objek dari sour)e *rogram assembler disertai dengan nomor kesalahan $ang mungkin terjadi *ada baris *rogram ("ile #/ST)% maka kita da*at memberi *erintah sebagi berikutAHTASM 1/ namaK"ile#ASM (enter) .ntuk membuka "ile #/ST kita harus menjalankan teks editor dan membuka "ile #/ST AH@dit namaK"ile#/ST (enter) Sedangkan /inker meru*akan *rogram $ang da*at mengubah "ile 2bjek menjadi "ile ,2M atau @D@# Program /inker da*at mengkon;ersi "ile objek $ang beru*a relo)atable obje)t )ode $ang beru*a bahasa mesin $ang se)ara relati;e masih harus dite*atkan kedudukann$a dan disesuaikan dengan aturan !2S# Program *ela$anan /inker *ada Turbo Assembler adalah T/I<K#@D@ Penggunaan linker T/I<K#@D@ mernghasilkan "ile dengan nama "ile berekstensi ,2M atau @D@ $ang terdiri dari kode bahasa mesin $ang telah *asti *enem*atann$a sehingga da*at disim*an di memori (RAM) untuk melaksanakan *rogram# Semua *roses assembl$ dan semua *roses link harus tidak ada kesalahan artin$a error harus :# ?ika masih ada error *rogram harus diedit dengan membuka sour)e *rogram ("ile #ASM)# .ntuk menjalankan "ile $ang telah dilinker dengan T/I<K#@D@% maka langsung da*at dieksekusi dengan mengetik nama "ile di de*an *rom*t !2S atau di run melalui Findo0s# ,ara melakukan linker *ada sebuah objek *rogram (#2B?) menjadi *rogram ,2M atau @D@ adalah T/I<K 1T (nama "ile #2B?) T/I<K atau (nama "ile #2B?) -H untuk menjadi "ile berekstensi 2B? -H untuk menjadi "ile berekstensi #@D@

Perbedaan "ile ,2M dan @D@


Program ,2M adalah salah satu jenis e e)utable *rogram# Ada bebera*a si"at antara ,2M dengan @D@# Perbedaan si"at (kelebihan dan kekurangan) masing-masing adalah sebagai berikut' Program ,2M -

.k$ 9udatama% S#Si% M#Kom

12

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)


1# Relati" lebih ke)il dibanding @D@ '# /ebih )e*at dibanding @D@ (# &an$a menggunakan 1 segment 3# .kuran "ile maksimal 53 KB 4# Sulit mengakses data1*rosedur di segment lain 5# !a*at dibuat dengan !ebug 6# Sour)e "ile tidak boleh menggunakan re"erensi segment tertentu 7# Sour)e "ile tidak boleh memakai data segment 8# Sour)e "ile tidak boleh memakai sta)k segment 1:# &arus dia0ali dengan 2RB 1::&% artin$a *ada ,ode segment $ang di*ilih% e e)utable )ode ahrus mulai di ,S-:1:: ' Program @D@ 1# Relati" lebih besar dibanding ,2M '# /ebih lambat dibanding dengan ,2M (# Bisa menggunakan lebih dari 1 segment 3# .kuran berkas tidak terbatas (sesuai kemam*uan memori) 4# Mudah mengakses data1*rosedur di segment lain 5# Tidak da*at dibuat dengan !ebug dari !2S# 6# Sour)e "ile boleh memilih memakai segment tertentu# 7# Sour)e "ile boleh memakai data segment 8# Sour)e "ile boleh memakai sta)k segment 1:# Tidak *erlu menggunakan 2RB 1::& untuk setia* ,ode segment#

!ari *erbandingan tersebut terlihat bah0a *rogram ,2M lebih sederhana dibanding *rogram @D@# Baris-baris instruksi *rogram dikenal dengan nama Mnemonic, ditulis dan disim*an dalam "ile berekstensi #ASM misaln$a- ,oba1#ASM

/abel dan Komentar


/abel *ada *rogram meru*akan address memori $ang diberi nama unik misaln$a Pada alamat ::::-:3:: akan diberi nama label !ataKBI2S# Maka susunan *enulisan /abel dalam *ern$ataann$a adalah S@BM@<T AT ::::& 2RB :3::& !ataKBI2S /AB@/ F2R! Atau jika kita ingin memulai suatu *rogram dan diberi /abel M./AI maka *enulisann$a adalah-,ode Segment Assume ,S- ,ode 2RB 1::& M./AILLL#L LLLL# /abel $ang dibuat untuk *engarah data (dire)ti;e) sering digunakan adalah @M. singkatan dari @M.ate# Kegunaann$a untuk memberi nama *ada angka atau konstanta $ang diangga* *enting#

.k$ 9udatama% S#Si% M#Kom

13

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)


,ontohn$aA<BKA Kolom @M. :B7::& @M. 7: N :B7::& diberi nama A<BKA N angka 7: diberi nama Kolom

Sedangkan komentar *ada *rogram dibuat han$a sebagai )atatan atau remark $ang tidak berarti a*a-a*a dan tidak dieksekusi oleh ,P.# Komentar *ada *rogram diberi tanda titik koma (N) diberi kata-kata atau kalimat tentang *rogram# Misaln$a-

' (rogram ini dib)a! dengan *)rbo #ssembler ' #)!$or by : ' +a!e ,ode segmen! #ss)me ,s: ,ode -rg 100$ .)lai: (mer)/akan s)a!) 0abel) :

(komen!ar)

Perintah M2J
Perintah ini meru*akan *erintah dasar *emrograman bahasa rakitan untuk memindahkan data dari lokasi asal ke lokasi tujuan beru*a register atau lokasi memori# Instruksin$a (mnemoni)) adalah MOV dengan sintaksM2J lokasi tujuan% lokasi asal ,ontoh.-1 .-1 .-1 .-1 .-1 ,23 05 #23 005#4 523 #2 620073 52 ' angka 5 disim/an di regis!er ,2 ' angka 005#4 disim/an di #2 ' isi #2 disim/an ke 52 ' isi 52 disim/an di lokasi memori 200 /an di alama! 529

65273 62007' isi da!a di lokasi memori 200 disim8

5ntuk membuat program bahasa rakitan /assembler memerlukan perlengkapan berupa

.k$ 9udatama% S#Si% M#Kom

14

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)


software antara lain7 &OS dengan &-B5: CO0 atau !5RBO ASS-0B;-R dengan !AS0 -6- dan !;/<= -6 4erlengkapan lainn'a adalah !eks -ditor berupa -&/! CO0, S= CO0 2Side =ick3 atau <otepad pada >indows 0embuat program CO0 dapat menggunakan ? cara 'aitu dengan &ebug pada &OS atau dengan !urbo Assembler ;abel pada program merupakan nama 'ang dapat mewakili alamat memori 2memor' address3, sebagai directive 2pengarah3, start program, prosedur atau keperluan lainn'a =omentar merupakan tanda titik koma pada program 'ang tidak akan dieksekusi han'a keterangan tentang program atau baris program 4erintah 0O@ merupakan perintah dasar dalam bahasa rakitan 'ang dipakai untuk mentransfer data angka, register, alamat memori 2lokasi memori3

T.BAS ,obalah untuk mengenal bebera*a *erlengka*an bahasa rakitan ,obalah untuk membandingkan "ile ,2M dengan "ile @D@ dilihat dari isi *rogram dan ka*asitasn$a Buatlah ma)am-ma)am /abel dan komentar *ada suatu *rogram assembler

Pertemuan Ke
Tujuan Instruksional Khusus Pokok Bahasan

4 (/ima)
Mengerti dan Memahami metode membuat *rogram ,2M# Membuat *rogram ,2M Men)etak &uru" Model Program ,2M Pembuatan dengan !@B.B Pembuatan dengan Turbo Assembler (TASM) Men)etak huru" 1 Membuat kalimat 2*erasi /oo* Men)etak bebera*a karakter

Sub Pokok Bahasan

!a"tar Pustaka

1# Tuntunan Praktis Pemrograman Assembl$% &artono Partoharsojo '# Pemrograman dengan Bahasa Assembl$% Susanto (# Mi)ro*ro)essor Programmer+s% re"erensi Intel ,o

.k$ 9udatama% S#Si% M#Kom

15

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

Membuat Program C M
Model Program ,2M
Program $ang berekstensi ,2M (,ommand) meru*akan *rogram $ang berisi *erintah assembler beru*a instruksi mnemoni) $ang da*at ditulis dengan !ebug atau Turbo Assembler# Struktur model *rogram ,2M $ang dibuat dengan Turbo Assembler bisa dengan ' model $aituModel 1*i!le .akro :ama;/rogram .#,<88888888 88888888 >:+. ?>@.>:* #??A.> ,?: ,ode -<@ 100$ 888888888 888888888 888888888 C:* 20$ >:+? >:+ .A0#C 'j)d)l /rogram 'nama makro = isi makro berada (bila ada) 'ak$ir makro '(nama label segmen!) '(regis!er ,? berisi label segmen!) '(origin 100$ men)j) ke alama! oBBse! 100$) '(label m)lai) ' isi /rogram ' ber$en!i dan kembali ke +-? ' ak$ir /en)lisan /rogram di segmen! ' ak$ir dari isi /rogram

,ode

.A0#C:

,ode

Model 2: Bentuk struktur *rogram di ba0ah ini lebih ringkas dibanding dengan model 1 $aitu-

9model small 9 ode org 100$ .A0#C: 888888888 888888888 888888888 C:* 20$ .A0#C

'/rogram dim)lai /ada alama! 100$ '(label m)lai) ' isi /rogram ' ber$en!i dan kembali ke +-? 'ak$ir /rogram

>:+

Kita da*at mengganti model 1 dengan model ' dimana *engetikan isi *rogram sama dengan model 1 di atas#

.k$ 9udatama% S#Si% M#Kom

16

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

Pembuatan *rogram dengan !ebug


Program $ang tersedia dalam P,!2S atau MS!2S beru*a !ebug#,om atau !ebug#@ e% Pengetikan *rogram da*at langsung ditulis dalam *rogram !ebug# Caranya : '

Ketik !ebug di de*an *rom*t , atau A (debug#)om ada di dire)tor$ tersebut) ,H !ebug (enter) - /angkah berikutn$a adalah memasukkan baris-baris *rogram dengan *erintah A1:: (assembl$) di de*an *rom*t debug ( K ) Perintah A1:: berarti instruksi *ertama akan diletakkan *ada alamat o""set 1::h *ada segment memori tersebut# -A1:: (enter) - :1:: K - adalah alamat segment dan :1:: adalah alamat o""set dimana *rogram akan ditem*atkan mulai alamat tersebut## Ketiklah isi *rogram bahasa rakitan (assembler) di de*an alamat segment o""set - :1:: misaln$a-

%%%% : 0100 : 0103 : 0105 : 010" : 0109 8

.-1 .-1 C:* C:* ;

+03&1 #4302 21 20 (en!er)

'kode #?,CC $)r)B a 'nomor /elayanan 024 ' e!ak di layar 'kembali ke +-? 'men)j) ke /rom/! deb)g

'

' ' '

Alamat segment o""set dari :1:: s1d :1:8 akan keluar sendiri setelah kita mengetik *rogram disertai dengan menekan enter# Setelah instruksi I<T ': tekan enter ' kali dan *rogram akan kembali ke *rom*t debug ( K )# Menentukan *anjang *rogram *ada debug dilakukan dengan mengisi register BD-,D# Terlihat dari mulai alamat o""set a0al :1::h dan alamat o""set akhir :1:Ah% sehingga da*at di*eroleh *anjang *rogramn$a adalah (:1:8h O :1::h) > 8 b$te% maka register BD diisi dengan : dan register ,D dengan 8# ?adi *ada *rom*t !ebug ketik RBD lalu isi :% dan ketik R,D lalu isi dengan 8# -RBD (enter) BD :::: -: enter -R,D (enter) ,D :::: -8 enter Setelah selesai ditik *erintah R,D kemudian memberi nama "ile dengan *erintah < (name)# ,ontoh - -< ,2BA1#)om (enter) .ntuk men$im*an *rogram ke disket atau harddisk berikan *erintah F (0rite) lalu enter# Menjalankan *rogram harus memberi instruksi B (go) dan lihat hasiln$a di la$ar# Bila *rogram berjalan dengan benar (tidak ada kesalahan) kom*uter akan

.k$ 9udatama% S#Si% M#Kom

17

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)


memberi komentar PProgram terminated normall$Q# Selengka*n$a )ontoh )ara membuat *rogram dengan !ebug ,H debug (enter) 8#100 en!er %%%% : 0100 %%%% : 0103 %%%% : 0105 %%%% : 010" %%%% : 0109 8rb% 52 :0 8r % ,2 :9 8: 8D Dri!ing 000E by!es 8@ a 8 ($asil dari /rogram assembler !am/il $)r)B a di layar) (rogram !ermina!ed normally en!er 0000 en!er en!er 0000 en!er oba19 om .-1 .-1 C:* C:* +03&1 #4302 21 20

Pembuatan Assembler#

dengan

Ma)ro

Assembler

atau

Turbo

Adan$a keterbatasan *embuatan *rogram dengan !ebug% maka kita da*at menggunakan bantuan assembler )om*iler dengan Ma)ro assembler atau Turbo Assembler (TASM#@D@ dan T/I<K#@D@)# .ntuk membuat *rogram assembler dengan Turbo Assembler kita memerlukan sour)e *rogram $ang ditulis dengan teks editor ("asilitas untuk mengetik *rogram)# Teks editor da*at memakai @dit#)om% Side Ki)k (SK#)om) *ada !2S atau <ote*ad *ada Findo0s dan lain-lain# Program assembler da*at membuat "ile berekstensi ,2M atau berekstensi @D@

M@<,@TAK &.R.A
Membuat *rogram untuk men)etak huru" da*at dilakukan dengan men$usun kode AS,II satu *ersatu $ang ditem*atkan dalam register !/ sebagai tem*at men$im*an data $ang akan

.k$ 9udatama% S#Si% M#Kom

18

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)


ditam*ilkan di la$ar dengan meman"aatkan nomor *ela$anan interu*si I<T '1& ser;i)e :'& $ang disim*an dalam register A&# .ntuk membuat *rogram ,2BA'#,2M dengan Turbo Assembler% maka "ile harus diberi nama ,2BA'#ASM $ang diketik dalam teks editor $ang ada $aitu ,oba segmen! #ss)me -rg .A0#C: .-1 .-1 C:* C:* ,oba >:+? >:+ .A0#C ,?: ,oba 100$ #43024 +03414 21$ 20$ ' isi regis!er #4 dengan 02$ )n!)k /elayanan e!ak $)r)B di layar ' isi regis!er +0 dengan 414 kode #?,CC ' $)r)B # ' e!ak $)r)B di layar ' ber$en!i dan kembali ke +-?

- Sim*an "ile tersebut dengan nama ,2BA'#ASM - ,om*ile nama )oba'#asm dengan TASM#@D@ dan di-link mengikuti langkah *embuatan *rogram selanjutn$a sehingga menjadi ,2BA'#,2M#

2P@RASI /22P
Meru*akan o*erasi *engulangan atau iterasi untuk digunakan dalam )a)ahan atau *enam*ilan karakter string berulang-ulang# Perintah ini memakai register ,D sebagai *enentu jumlah )a)ahan atau jumlah *engulangan% diakhiri dengan *erintah /22P untuk lom*at kembali melakukan *engulangan# ,ontoh *rogram o*erasi loo* dengan !@B.B %%%% : : : : : : : : 8 0100 0103 0105 010" 0109 0105 010+ 010E .-1 ,2305 (en!er) .-1 +03&1 .-1 #4302 C:* 21 C:, +0 0--( 010" C:* 20 ; (en!er) 'loo/ sebanyak 5 kali 'kode #?,CC $)r)B a 'nomor /elayanan 024 ' e!ak di layar '!amba$kan isi +0 dengan 1 'kembali ke alama! 010"4 'kembali ke +-? 'men)j) ke /rom/! deb)g

,ontoh *rogram o*erasi loo* dengan T.RB2 ASS@MB/@R ,oba segmen! #ss)me ,?: ,oba

.k$ 9udatama% S#Si% M#Kom

19

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)


-rg 100$ .-1 ,2300054 .-1 +03&14 C:* 21$ C:, +0 0--( A0#:@ C:* 20$ >:+? >:+ .A0#C

.A0#C: A0#:@:

' ' ' ' ' '

banyaknya loo/ 5 kali isi +0 dengan kode #?,CC $)r)B a e!ak $)r)B di layar !amba$kan isi +0 dengan 1 kembali ke label A0#:@ ber$en!i dan kembali ke +-?

,oba

Men)etak bebera*a huru"


Men)etak bebera*a huru" da*at dilakukan dengan ' )ara $aitu

Men$usun bebera*a huru" dalam kode AS,II satu *ersatu $ang setia* huru" disim*an di !/ Menggunakan o*erasi loo* untuk men)etak bebera*a huru" memakai instruksi I<, untuk menambah isi register dengan 1 sehingga nilai !/ bertambah lagi untuk di)etak#

,ontoh *embuatan bebera*a huru" $ang disusun satu *ersatu dengan !@B.B ,RAssemblerH debug (enter) 8#100 en!er %%%% : 0100 .-1 #4302 %%%% : 0103 .-1 +0341 %%%% : 0105 in! 21 %%%% : 010" .-1 +0342 %%%% : 0109 C:* 21 %%%% : 0105 .-1 +0343 %%%% : 010+ C:* 21 %%%% : 010E C:* 20 %%%% : 0111 8rb% en!er 52 0000 :0 en!er 8r % en!er ,2 0000 :11 en!er 8: ,-5#29,-. 8D Dri!ing 0011 by!es 8@ #5, (!am/ilan #5, di layar) (rogram !ermina!ed normally .ntuk membuat bebera*a huru" $ang disusun satu *ersatu dengan Turbo Assembler% maka *rogram harus diketik dalam teks editor $ang ada (@!IT atau SK) $aitu '.eny)s)n bebera/a $)r)B kode #?,CC ,oba segmen! #ss)me ,?: ,oba -rg 100$ .A0#C: .-1 #43024 ' isi regis!er #4 dengan 02$ )n!)k /elayanan

.k$ 9udatama% S#Si% M#Kom

20

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)


e!ak $)r)B di layar isi regis!er +0 dengan 414 kode #?,CC $)r)B # e!ak $)r)B di layar isi regis!er +0 dengan 424 $)r)B 5 e!ak $)r)B di layar isi regis!er +0 dengan 434 $)r)B , e!ak $)r)B di layar ber$en!i dan kembali ke +-?

.-1 C:* .-1 C:* .-1 C:* C:* >:+? >:+

+03414 21$ +03424 214 +03434 21$ 20$ .A0#C

' ' ' ' ' ' ' '

,oba -

Sim*an "ile tersebut dengan nama ,2BA(#ASM ,om*ile nama )oba'#asm dengan TASM#@D@ dan di-link mengikuti langkah *embuatan

*rogram selanjutn$a sehingga menjadi ,2BA(#,2M# ,ontoh *embuatan bebera*a huru" memakai o*erasi loo* dengan !@B.B ,RAssemblerHdebug (enter) -A1:: (enter) %%%% : 0100 .-1 ,2305 (en!er) 'loo/ sebanyak 5 kali : 0103 .-1 +03&1 'kode #?,CC $)r)B a : 0105 .-1 #4302 'nomor /elayanan 024 : 010" C:* 21 ' e!ak di layar : 0109 C:, +0 '!amba$kan isi +0 dengan 1 : 0105 0--( 010" 'kembali ke alama! 010"4 : 010+ C:* 20 'kembali ke +-? : 010E ; (en!er) 'men)j) ke /rom/! deb)g 8<,2 :E 8<C( :100 8: ,-5#39,-. 8D Dri!ing 000E by!es 8@ ab de (!am/ilan #5, di layar) (rogram !ermina!ed normally

.ntuk *embuatan bebera*a huru" memakai o*erasi loo* dengan T.RB2 ASS@MB/@R kita da*at memodi"ikasi dari *rogram dengan !ebug se*erti )ontoh o*erasi loo* di atas#

/angkah-langkah *embuatan *rogram bahasa rakitan dengan Turbo Assembler sebagai berikut 1# Buat sour)e *rogram dengan teks editor dan beri nama "ile berekstensi #ASM dan sim*an didirektor$ $ang berisi TASM#@D@ dan T/I<K#@D@# '# ,om*ile sour)e *rogram ASM dengan *erintah )om*iler TASM dari Turbo Assembler menjadi 2bjek *rogram ("ile akan berekstensi 2B?)# )aran$a ,HTASM KAMP.SHASM (enter)

.k$ 9udatama% S#Si% M#Kom

21

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

(# ,om*ile sour)e *rogram ASM dengan *erintah )om*iler TASM dari Turbo Assembler menjadi 2bjek *rogram ("ile akan berekstensi 2B?)# )aran$a ,HTASM KAMP.S#ASM (enter) 3# Setelah menjadi )oba1#obj% kita harus me-link berkas objek menjadi ,2M dengan *erintah T/I<K# ,aran$a - ,HT/I<K 1t KAMP.S (enter) 4# ?ika *ada *engetikan T/I<K tidak diberi tanda 1t % maka objek *rogram akan menjadi "ile berekstensi @D@# 5# ,oba1#)om da*at langsung dieksekusi dari !2S *rom*t untuk melihat hasiln$a di la$ar monitor dengan mengetik ,HKAMP.S (enter) 6# ?ika terda*at kesalahan% Turbo Assembler akan memberi tahu letak kesalahan *ada baris *rogram dan diedit dengan membuka kembali teks editor dan "ile #ASM 7# Perbaiki *rogram $ang salah% kemudian di)om*ile ulang se*erti langkah ' dan (#

0embuat program CO0 dapat dengan !urbo Assembler dapat dilakukan dengan ? model pilihan 'aitu model # 2Code segment3 atau model ? 20odel Small3 0embuat program dengan debug harus diketik satu persatu, 1ika ada kesalahan maka program harus diketik dari awal lagi 0embuat program dengan !urbo Assembler 1auh lebih baik, karena 1ika ada kesalahan kita tidak perlu lagi mengetik ulang tinggal kita perbaiki program 'ang mengalami kesalahan tadi melalui teks editor dan dicompile ulang

4rogram mencetak huruf memakai kode ASC// 'ang disusun satu persatu dengan memanfaatkan pela'anan interupsi /<! ?#( servive numer "?( Operasi ;oop digunakan untuk melakukan pengulangan atau iterasi dan ban'akn'a nilai pengulangan ditentukan oleh nilai register C6 sebelumn'a 4rogram membuat beberapa huruf dapat disusun satu persatu dengan kode ASC// atau dengan memanfaatkan operasi loop

T.BAS 1# Buatlah *rogram men)etak huru" nama sendiri dengan !ebug dan Turbo Assembler dengan men$usun kode AS,II untuk setia* huru"n$a minimal 1: huru"# '# Buatlah juga *rogram men)etak kalimat bio data mahasis0a#

.k$ 9udatama% S#Si% M#Kom

22

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

Pertemuan Ke
Tujuan Instruksional Khusus Pokok Bahasan

5 (@nam)
Mengerti dan memahami metode o*erasi arithmetika dalam *rogram assembler# 2*erasi Arithmetika 1# '# (# Penambahan (A!!) Pengurangan (S.B) Pembandingan (,MP) Perkalian (M./) Pembagian (!IJ) Tuntunan Praktis Pemrograman Assembl$% &artono Partoharsojo Pemrograman dengan Bahasa Assembl$% Susanto Mi)ro*ro)essor Programmer+s% re"erensi Intel ,o

Sub Pokok Bahasan

!a"tar Pustaka

P!RASI ARI"MA"I#A
Instruksi arithmetika meli*uti- *enambahan (addition)% *engurangan (subtra)tion)% *embandingan ()om*arison)% *erkalian (multi*li)ation)% *embagian (di;ision)#

Aturan Penulisan 2*erasi Arithmetika (sintaks)


Penjumlahan (Addition)
a# Instruksi A!! ,ontoh#++ #23 52 '$asilnya disim/an di #2 -H I<, reg atau I<, SalamatT -H A!! reg1% reg' atau A!! reg% SalamatT &asil *enjumlahan disim*an di reg1#

b# Instruksi I<, ,ontohC:, +2

!ata *ada reg atau SalamatT bertambah 1

'$asil +2 = +2 + 1

)# Instruksi A!, reg1#

-H A!, reg1% reg'

atau

A!, reg% SalamatT

Penjumlahan biasa $ang hasiln$a ditambah dengan bit )arr$# &asiln$a disim*an di

.k$ 9udatama% S#Si% M#Kom

23

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)


,ontoh#+, #43 #0 '#4=#4 + #0 + arry

Pengurangan (Subtra)tion)
a# Instruksi S.B ,ontoh?A5 ,23 52 -H '$asilnya disim/an di ,2 !@, reg atau !@, SalamatT -H S.B reg1% reg' atau S.B reg% SalamatT &asil *engurangan disim*an di reg1#

b# Instruksi !@, ,ontoh+>, ,2

!ata *ada reg atau SalamatT akan bertambah 1

'$asil ,2 = ,2 + 1 -H SBB reg1% reg' atau S.B SalamatT% reg

)# Instruksi SBB reg1 atau SalamatT# ,ontoh?55 #43 #0

Pengurangan biasa $ang hasiln$a dikurangi dengan bit )arr$# &asiln$a disim*an di

'$asil

#4= #4 F #0 F

arry

Pembandingan (,MP 1 ,om*arison)


Instruksi ,MP ,ontoh,.( +03 50 'bandingkan isi +0 dengan 50 -H ,MP reg1% reg' atau ,MP reg% data Membandingan isi reg1 dengan reg' atau data#

Perkalian (Multi*li)ation)
Instruksi M./ -H M./ reg atau M./ SalamatT AD (15 bit) dengan isi reg atau SalamatT% Perkalian antara A/ (7 bit) atau ,ontoh.A0 .A0 +0 52 'isi #0 (8 bi!) dikali dengan +03 $asil di #29 'isi #2 (1& bi!) dikali dengan 523 $asil di +28#2

hasiln$a disim*an di AD (7 bit) atau !D-AD (15 bit)#

.k$ 9udatama% S#Si% M#Kom

24

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

Pembagian (!i;ision)
a# Pembagian 7 bit -H !IJ reg atau !IJ SalamatT Pembagian di;iden (disim*an di AD) dengan di;isor (reg 7 bit) atau data *ada lokasi memori% hasiln$a disim*an di A/ sisan$a di A&# ,ontoh+C1 +0 'isi #2 dibagi +03$asil di #0 sisanya di #49

b# Pembagian 15 bit -H !IJ reg (15 bit) atau !IJ SalamatT Pembagian di;iden (disim*an di !D-AD) dengan di;isor (reg 15 bit) atau data *ada lokasi memori% hasiln$a disim*an di AD sisan$a di !D# Operasi arithmetika dalam bahasa rakitan ditulis dengan mnemonic A&&, S5B, /<C, &-C, 05;, C04 dan &/@ 4enulisan perintah operasi arithmetika harus mengikuti aturan penulisan 2sintaks3 untuk 'ang beker1a pada kondisi $ bit dan #* bit 5ntuk pembuatan program arithmetika bisa dilakukan dengan mengetik pada debug diakhiri dengan /<! ?" (asil proses dilihat pada saat kita mengetik perintah ! 2!race3 dan & 2data alamat3 di depan prompt debug 2-3 Angka-angka 'ang tertera pada setiap register dicatat pada tabel A6, B6, C6 dan &6

T.BAS Buatlah bebera*a )ontoh *rogram *enambahan% *engurangan% *embandingan% *enambahan dengan satu% *engurangan dengan satu% *erkalian dan *embagian (7 bit dan 15 bit)# Program dibuat dengan debug dan hasiln$a dites dan diuji dengan *erintah T (tra)e) *ada setia* *rom*t debug#

.k$ 9udatama% S#Si% M#Kom

25

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

Pertemuan Ke
Tujuan Instruksional Khusus Pokok Bahasan

6 (Tujuh)
Mengerti dan Memahami Pointer dan "ungsi bit dalam o*erasi logika dan *ergeseran bit# 2*erasi /ogika dan Pergeseran Bit 1# '# ( 2*erasi1Berbang <2T 2*erasi1Berbang A<! 2*erasi1Berbang 2R 2*erasi1Berbang D2R T@ST S&/ G S&R R2/ G R2R Tuntunan Praktis Pemrograman Assembl$% &artono Partoharsojo Pemrograman dengan Bahasa Assembl$% Susanto Mi)ro*ro)essor Programmer+s% re"erensi Intel ,o

Sub Pokok Bahasan

!a"tar Pustaka

P!RASI $ %I#A &A' P!R%!S!RA' BI"


perasi ' " dan '!% () ' "*'!% reg atau ' "*'!% +alamat,
Seluruh bit *ada isi register atau SalamatT $ang diberi <2T akan di-<2T-kan sedangkan jika diberi <@B seluruh bit akan menjadi kom*lemen-' ,ontoh:-* :-* :>@ ,0 65(7 ,0 'isi ,0 di8:-*8kan 'isi di 6alama!7 'isi ,0 5( akan di8:-*8kan di8:>@8kan (kom/lemen82)

perasi A'&

() A'& reg-. reg/*data

atau A'& reg. +alamat,

Register 1 akan di-A<!-kan dengan register ' atau data atau SalamatT ,ontoh#:+ #:+ #:+ ,03 45$ #23 52 50362507 'isi ,0 di8#:+8kan dengan 45$ 'isi #2 di8#:+8kan dengan 52 'isi 50 di8#:+8kan dengan isi di lokasi 250$

.k$ 9udatama% S#Si% M#Kom

26

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

perasi R
,ontoh-< -<

()

R reg-. reg/*data atau

R reg. +alamat,

Register 1 akan di-2R-kan dengan register ' atau data1SalamatT#

+43 25$ ,23 52

'isi 'isi

+4 di8-<8kan dengan 25$ ,2 di8-<8kan dengan 52

perasi 0 R () 0 R reg-. reg/*data atau 0 R reg. +alamat,


Register 1 akan di-D2R-kan dengan register' atau data1SalamatT ,ontoh2-< 2-< 503 25$ +23 52 'isi 'isi 50 di82-<8kan dengan 25$ +2 di82-<8kan dengan 52

perasi "!S" () "!S" reg-. reg/*data atau "!S" reg. +alamat,


Miri* dengan A<!% han$a kedua register tidak berubah% $ang berubah han$a bit-bit "lag register# ,ontoh*>?* ,03 25$ 'isi ,0 di8#:+8kan dengan 25$ !an/a meng)ba$ isi ,09

Instruksi S1$ (Shi2t $e2t) () S1$ reg. C$


Isi register di geser ke kiri seban$ak nilai ,/# ,ontoh-

.-1 ?40

,03 2$ #43 ,0 'isi #4 digeser ke kiri 2 langka$9

Instruksi S1R (Shi2t Right) () S1R reg. C$


Isi register di geser ke kanan seban$ak nilai ,/# ,ontoh.-1 ?4< ,03 2$ #43 ,0 'isi #4 digeser ke kanan 2 langka$

Rotasi (Rotate)
Instruksi ini digunakan untuk memutar isi bit *ada suatu register ke kiri atau ke kanan sesuai *erintah $ang diberikan#

.k$ 9udatama% S#Si% M#Kom

27

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

Instruksi R2/ (Rotate /e"t)


Isi register di rotasi ke kiri seban$ak ,/ ,ontoh<-0 #43 2$

-H R2/ reg% ,/

'isi #4 diro!asi ke kiri 2 langka$

Instruksi R2R (Rotate Right) -H R2R reg% ,/


Isi register di rotasi ke kanan seban$ak ,/ ,ontoh<-< #43 2$ 'isi #4 diro!asi ke kiri 2 langka$

Operasi logika merupakan operasi 'ang dilakukan oleh C45 pada bagian A;5 antara lain 7 A<&, OR, <O!, 6OR dan !-S! Selain operasi logika di dalam C45 1uga terdapat operasi 4ergeseran dan perputaran bit antara lain 7 S(;, S(R, RO; dan ROR Operasi ini sangat penting untuk memanipulasi dan mengkonversi bit-bit pada suatu data

T.BAS 1# ?elaskan *enggunaan o*erasi <2T% A<!% 2R% D2R dan T@ST# '# Bagaimana )ara memutar isi data he adesimal dalam suatu register# (# Buatlah *rogram *endek dengan !@B.B bebera*a )ontoh o*erasi logika dan *ergeseran bit data#

.k$ 9udatama% S#Si% M#Kom

28

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

Pertemuan Ke
Tujuan Instruksional Khusus Pokok Bahasan Sub Pokok Bahasan

7 (!ela*an)
Mengerti dan Memahami Metode Pengalamatan !ata# Mode Pengalamatan !ata - Register Addressing - Immediate Addressing - !ire)t Addressing - !ire)t Addresing 0ith dis*la)ement - Indire)t Addressing - Relati;e Addressing - Base Plus Inde Addressing - Base Relati;e Plus Inde Addressing 1# '# ( Tuntunan Praktis Pemrograman Assembl$% &artono Partoharsojo Pemrograman dengan Bahasa Assembl$% Susanto Mi)ro*ro)essor Programmer+s% re"erensi Intel ,o

!a"tar Pustaka

M &! P!'%A$AMA"A' &A"A


Pengertian Pengalamatan !ata
Pengalamatan data (addressing mode) adalah *er*indahan data dari lokasi asal tujuan# /okasi asal beru*a register% lokasi memori atau data mentah (kode he adesimal 1 bilangan)# /okasi tujuan beru*a register atau lokasi memori# Perintahn$a memakai M2J# ke lokasi

Mode Pengalamatan
Bebera*a mode *engalamatan antara lain-

H Register Addressing
Meru*akan *en$alinan data antar register (trans"er ergister) M2J reg1% reg' ,ontoh.-1 .-1 #23 52 ?C3 +C ' isi 52 disalin ke #2 ' isi +C disalin ke ?C

H Immediate Addressing
Meru*akan *en$alinan suatu data ke register

.k$ 9udatama% S#Si% M#Kom

29

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)


M2J ,ontoh.-1 .-1 .-1 #43 02$ +03G#G #23G#5G '02$ disalin ke #4 ' karak!er # disalin ke +0 'karak!er #5 disalin ke #2 reg% data

H !ire)t Addressing
Meru*akan *en$alinan data dari lokasi memori tertentu ke a))umulator (AD% A& atau A/) atau sebalikn$a# M2J reg% SalamatT M2J SalamatT% reg ,ontoh.-1 #03 60100$7 'isi da!a di alama! memori 100$ ke #0

.-1 60250$73 #2 'isi #2 disalin ke alama! 0250$

H !ire)t Addressing 0ith !is*la)ement


Pada dasarn$a sama dengan !ire)t Addressing% teta*i tidak han$a memakai register A/ atau AD# M2J reg% SalamatT M2J SalamatT% reg ,ontoh.-1 .-1 +03 60100$7 'isi da!a di alama! memori 100$ ke +0 60250$73 +2 'isi +2 disalin ke alama! 0250$

H Indire)t Addresing
Pen$alinan data se)ara tidak langsung dari lokasi alamat $ang ditunjuk oleh BP% BD% !I atau SI ke suatu register atau sebalikn$a# M2J reg% SregT M2J SregT% reg M2J SregT% SregT ,ontohM2J @AD% SBDT Nisi data di lokasi memori S!S 1:h=BDT ke register @AD M2J S,DT% AD Nisi data di AD disalin ke lokasi memori S!S 1:h =,DU

.k$ 9udatama% S#Si% M#Kom

30

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

H Relati;e Addressing
Meru*akan *en$alinan data dari lokasi memori $ang ditunjuk oleh BP% BD atau SI dan !I ditambah dis*la)ement ke register tujuan atau sebalikn$a# M2J reg% Sbase=dis*T M2J Sbase=dis*T% reg ,ontoh.-1 #23 652+10$7

.-1 652+20$73 ,2 .-1 65(+30$73 ,4 .-1 6+C+50$73 +0

H Base Plus Inde Addressing


Meru*akan *en$alinan data dari lokasi memori $ang ditunjuk oleh BP atau BD ditambah isi inde (SI atau !I) ke register tujuan atau sebalikn$a# M2J reg% Sbase=inde T M2J Sbase=inde T% reg ,ontoh.-1 +23 652+?C7 .-1 65(++C73 #2

H Base Relati;e Plus Inde Addressing


Meru*akan *en$alinan data dari lokasi memori $ang ditunjuk oleh BP atau BD ditambah isi inde (SI1!I) = dis*la)ement atau sebalikn$a# M2J reg% Sbase=inde =dis*T M2J Sbase=inde =dis*T% reg ,ontoh.-1 +23 652+?C+10$7 .-1 65(++C+20$73 #2 4engalamatan data merupakan perpindahan data dari lokasi asal ke lokasi tu1uan Setiap lokasi dapat berupa register, lokasi memori 4erintah untuk melakukan mode pengalamatan data adalah 0O@

.k$ 9udatama% S#Si% M#Kom

31

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)


4enggunaan perintah 0O@ harus sesuai dengan aturan mode pengalamatan data

T.BAS 1# ?elaskan *engertian tentang *engalamatan dataV '# Sebutkan ma)am-ma)am mode *engalamatan dataV (# ?elaskan *ula masing-masing *erbedaan mode *engalamatan data antara $ang satu dengan $ang lainn$aV 3# Buatlah bebera*a )ontoh *rogram *endek $ang isin$a terda*at bebera*a mode *engalamatan dataV

Pertemuan Ke Tujuan Instruksional Khusus Pokok Bahasan

8 (Sembilan)
Mengerti dan Memahami Metode Men)etak kalimat# Men)etak kalimat dan 2*erasi string# 1# '# ( Men)etak dengan !2S 2*erasi String Men)etak Kalimat dengan atributn$a Pengaturan atribut Tuntunan Praktis Pemrograman Assembl$% &artono Partoharsojo Pemrograman dengan Bahasa Assembl$% Susanto Mi)ro*ro)essor Programmer+s% re"erensi Intel ,o

Sub Pokok Bahasan

!a"tar Pustaka

M!'C!"A# #A$IMA"
Men)etak kalimat dengan !2S
.ntuk membuat kalimat% *rogram harus diketik dengan teks editor (@!IT 1 <2T@PA! atau SK#,2M) dan harus mengikuti model 1 atau model ' di atas menggunakan *ela$anan interu*si

.k$ 9udatama% S#Si% M#Kom

32

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)


'1& nomor ser;is A&>:8&# Men)etak kalimat dalam sistem o*erasi !2S memerlukan tambahan misaln$a letak *osisi kalimat berada *ada baris dan kolom tertentu% sehingga kita harus memakai *ela$anan interu*si I<T 1:& nomor ser;is A&>:'& dan A/>: $ang ber"ungsi mengatur *osisi kalimat di la$ar# <ilai baris dan kolom harus dimasukkan ke dalam register !& (baris) dan register !/ (kolom)# Total baris di la$ar adalah '3 dan total kolom di la$ar adalah 7:# .ntuk men)etak kalimat di tengah la$ar% maka barisn$a adalah 1'% sedangkan kolomn$a disesuaikan dengan jumlah kalimat $ang akan di)etak# Isi kalimat disim*an dalam label misaln$a KAL MA! dengan diberi s*esi"ikasi data beru*a "# (de"ine b$te) $ang di*roses dalam b$te dia0ali dan diakhiri dengan tanda W (*etik) dan *ada akhir tulisan diberi tanda dolar X untuk batas tulisan# Misaln$a kalimat KAMP.S STMIK BA<I SA/@& B@KASI di)etak di la$ar% maka kita harus mengikuti struktur *rogram atau model 1 se*erti )ontoh diba0ah ini ,oba .A0#C: segmen! #ss)me ,?: ,oba -rg 100$ .-1 #43094 .-1 +23

C:* 21$ C:* 20$ H#0C.#* +5 GH#.(A? ,oba >:+? >:+ .A0#C

' isi regis!er #4 dengan 09$ )n!)k /elayanan e!ak kalima! di layar -EE?>* H#0C.#* ' isi regis!er +2 dengan 0#5>0 H#0C.#* 1& 5C* ' e!ak H#0C.#* di layar ' ber$en!i dan kembali ke +-? ?*.CH 5#:C ?#0>4 5>H#?CIG 'da!a disim/an di label

- Sim*an "ile tersebut dengan nama KAMP.S#ASM - Setelah "ile disim*an dengan nama KAMP.S#ASM lalu di)om*ile dan di-link mengikuti langkah *embuatan *rogram selanjutn$a sehingga menjadi KAMP.S#,2M# Atau da*at juga membuat *rogram kalimat dengan bentuk model ' $ang lebih ringkas berikut ini9model small 9 ode org 100$ .A0#C: .-1 .-1 #43094 +23 ' isi regis!er #4 dengan 09$ )n!)k ' /elayanan e!ak kalima! di layar -EE?>* H#0C.#* ' isi regis!er +2 dengan 0#5>0 ' H#0C.#* 1& 5C* ' e!ak H#0C.#* di layar ' ber$en!i dan kembali ke +-? ?*.CH 5#:C ?#0>4 5>H#?CIG 'da!a disim/an di label ' ak$ir /rogram

' /rogram dim)lai /ada alama! 100$

C:* 21$ C:* 20$ H#0C.#* +5 GH#.(A? >:+ .A0#C ,ontoh '9model small 9 ode

.k$ 9udatama% S#Si% M#Kom

33

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)


org 100$ .A0#C: ' men e!ak kalima! di !enga$ layar .-1 #43024 .-1 #030 .-1 5430 .-1 +43 12 .-1 +03 30 C:* 104 .-1 #43 094 .-1 +23 -EE?>* H#0C.#* C:* 214 C:* 204 H#0C.#* +5 J?*.CH 5#:C ?#0>4IG >:+ .A0#C Tam*ilan kalimat di la$ar masih terlihat belum sem*urna% karena tulisan $ang ada di atas sebelumn$a tidak menggulung ke atas% sehingga la$ar *erlu dibersihkan dengan ,/S dari !2S atau membuat *rogram bersih la$ar sendiri dengan *ela$anan interu*si I<T 1:& nomor ser;is :5&# Ada*un *enambahan *rogram bersih la$ar sebelum kalimat di)etak di tengah la$ar adalah sebagai berikut9model small 9 ode org 100$ .A0#C: ' bersi$ layar .-1 #430&4 2-< ,23,2 .-1 #030 .-1 5430"4 'ba kgro)nd layar dasar $i!am !)lisan /)!i$ .-1 +4324 .-1 +03"9 C:* 104 ' men e!ak kalima! di !enga$ layar .-1 #43024 .-1 #030 .-1 5430 .-1 +4312 .-1 +0330 C:* 104 .-1 #43094 .-1 +23 -EE?>* H#0C.#* C:* 214 C:* 204 H#0C.#* +5 J?*.CH 5#:C ?#0>4IG >:+ .A0#C

2P@RASI STRI<B
String adalah jenis data $ang terdiri atas kum*ulan karakter% angka mau*un simbol# Pada o*erasi ini register SI dan !I *un$a *eranan khusus# SI di*akai untuk men)atat alamat dari sumber string% sedangkan !I digunakan untuk men)atat alamat atau tem*at hasil mani*ulasi string#

.k$ 9udatama% S#Si% M#Kom

34

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)


Perintah $ang di*akai,/!% ST!% ,MPS% ,MPSB% /2!S% /2!SB% /2!SF% M2JS% M2JSB% M2JSF% R@P% R@P@% ST2S% ST2SB

Pengko*ian STRI<B
M2JS di*akai untuk mengko*i data dari !S-SI menuju ke @S-!I% &asil $ang di)o*$ da*at di)etak ke la$ar# ,ontoh9model small 9 ode org 100$ .A0#C: H#0 5AEE ?*#<*: K.( +5 0># 0># ,0+ ?*#<* 1" d)/(L) ?C3 H#0 +C3 5AEE '/inda$kan isi H#0 ke regis!er ?C '/inda$kan isi 5AEE ke regis!rer +C ',lear +ire !ion Elag menen!)kan ins!r)ksi '/ada regis!er ?C dan +C se ara o!oma!is 'ber!amba$ 1 (diin remen!) .-1 Alang: .-1? 0--( .-1 0># C:* C:* >:+ .A0#C ,23 18 >?:5AEE3 H#0 Alang #43 09$ +23 5AEE 21$ 20$ '/inda$kan isi 5AEE ke regis!er +2 ' e!ak isi +2 ke layar 'loo/ing sebanyak 18 % ' o/y isi s!ring H#0 ke 5AEE 'kembali ke )lang +5 J?*.CH 5#:C ?#0>4IG

Men)etak kalimat dengan atributn$a


.ntuk men)etak kalimat dengan atribut terda*t bebera*a *ers$aratan antara lain1# Menggunakan "ungsi dari BI2S melalui I<T 1:& '# <ilai AD > 1(::h (# <ilai register B/ meru*akan nilai atribut $ang ingin ditam*ilkan 3# <ilai register B& meru*akan halaman tam*ilan

.k$ 9udatama% S#Si% M#Kom

35

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)


4# <ilai !/ adalah *osisi kolom la$ar $ang akan di)etak 5# <ilai !& adalah *osisi baris la$ar $ang akan di)etak Aungsi ini tidak mengenal batas tulisan PXQ se*erti I<T '1& nomor ser;i)e :8& sehingga kita harus mengisi nilai ,D seban$ak karakter dalam kalimat# Sedangkan register @S-BP digunakan untuk men)atat alamat dari kalimat $ang akan di)etak di la$ar#

Pengaturan atribut
<ilai atribut untuk men)etak kalimat di la$ar diatur agar menda*atkan hasil sesuai $ang dihara*kan misaln$a sebagai berikut

<ilai atribut tulisan disim*an dalam register B/>1::1:1:1B <ilai AD> 1(::& untuk nomor ser;i)e A&>1(& dan A/>::& <ilai B&>: untuk halaman tam*ilan : <ilai !/>': untuk *osisi kolom di la$ar <ilai !&>1' untuk *osisi baris di la$ar <ilai ,D>(4 untuk ban$akn$a kalimat $ang di)etak di la$ar

<ilai di atas% ke)uali untuk AD>1(::& boleh diubah1dimodi"ikasi sesuai dengan *ermintaan *emakai# ,ontoh'(rogram )n!)k men e!ak kalima! dengan a!rib)!nya '(enga!)ran a!rib)! /ada nilai 50=954 a!a) 50=100101015 '$alaman 0 /ada 54 'baris 12 di layar 'kolom 20 di layar 9model small 9 ode org 100$ K.( #D#0

.A0#C: H#0 #D#0:

+5 J.>:A0C? H#0C.#* +>:@#: #*<C5A*:M#G .-1 .-1 .-1 .-1 .-1 #2313004 'servi e 134 s)bB)ngsi #0=0

503100101015 'a!rib)! !)lisan 54300 +0320 +4312 '$alaman !am/ilan '/osisi kolom '/osisi baris

.k$ 9udatama% S#Si% M#Kom

36

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)


.-1 C:* C:* >:+ .A0#C ,2335 104 204 'banyak karak!er yang akan di e!ak '>?:5( )n!)k mele!akan alama! s!ring

0># 5(3 H#0

4rogram membuat kalimat menggunakan pela'anan interupsi ?#( service number ",( dan men'impan isi kalimat pada ;abel &B 2&efine B'te3, &> 2&efine >ord3, && 2&efine &ouble >ord3, &A 2&efine Auad >ord3

5ntuk pembuatan program mencetak beberapa kalimat 'ang berurutan ke bawah, maka pada setiap label 'ang diberi tanda B harus dibubuhkan angka #C, #" untuk turun baris dan ditempatkan pada kolom awal 2 ,#C,#",DBD3

0encetak kalimat di la'ar dapat dilakukan dengan berbagai macam cara 4enggunaan /<! #"( untuk mengatur operasi la'ar agar mencetak kalimat men1adi lebih teratur sesuai letak baris dan kolom di la'ar

Operasi string digunakan untuk manipulasi string, peletakan alamat string, pengcopian string ke buffer atau tempat sementara 'ang ditentukan oleh kita Salah satu cara mencetak kalimat di la'ar antara lain dengan atribut memanfaatkan nomor pela'anan A(E#C( /<! #"( 4engaturan atribut untuk mencetak di la'ar dipakai untuk menghasilkan tampilan berupa kalimat 'ang disimpan dalam b'te, word atau double word dengan meletakkan string pada register -S7B4 sebagai pencatat alamat string

1# Buatlah *rogram tam*ilan S@/AMAT !ATA<B !I STMIK BA<I SA/@& di tengah la$ar# '# Bagaimana )ara melakukan *engko*ian string menggunakan *erintah M2JSBC (# Buatlah salah satu )ontoh *rogram *engko*ian string untuk di)etak dua kaliV 3# Buatlah *rogram men)etak kalimat dengan atributn$a dimana kalimat tersebut harus disertai 0arna dasar hitam tulisan merah#

.k$ 9udatama% S#Si% M#Kom

37

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

Pertemuan Ke
Tujuan Instruksional Khusus Pokok Bahasan

1: (Se*uluh)
Mengerti dan Memahami o*erasi jum*1lom*atan dan o*erasi sta)k# 2*erasi ?um* (/om*atan) 2*erasi Sta)k# 1# '# ( Pengertian o*erasi jum* 1lom*atan ?enis-jenis instruksi jum* Pengertian o*erasi sta)k 2*erasi *er*indahan data selain M2( Tuntunan Praktis Pemrograman Assembl$% &artono Partoharsojo Pemrograman dengan Bahasa Assembl$% Susanto Mi)ro*ro)essor Programmer+s% re"erensi Intel ,o

Sub Pokok Bahasan

!a"tar Pustaka

P!RASI 34MP ($ompatan)


Pengertian 2*erasi ?um*
Instruksi lom*atan *ada suatu *rogram akan men$ebabkan *rogram melom*ati bagian tertentu dan mengeksekusi instruksi $ang dikehendaki# Ada ' jenis instruksi dalam o*erasi jum* $aitulom*at tak bers$arat dan lom*at bers$arat#

/om*atan tak bers$arat


Instruksi lom*atan ini langsung menuju ke alamat memori $ang dituju tan*a s$arat a*a*un% sehingga *rogram langsung da*at kita arahkan menuju lokasi memori atau label dengan ?MP lokasi memori1label *erintah atau instruksi ?MP Aturan *enulisann$a ,ontoh 9model small 9 ode org 100$ .A0#C: .-1 #23 12344 .-1 523 43214 K.( *><A? *><A?: #++ #23 52 ?A5 #233 K.( *><A?2 *><A?2: C:* 204 >:+ .A0#C

.k$ 9udatama% S#Si% M#Kom

38

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

Ada ( jenis instruksi lom*atan tak bers$arat $aitu

/om*atan *endek (short jum*) -H ?MP S&2RT dis* $aitu melakukan lom*atan maksimal sejauh 1'6 b$te# ,ontohK.( ?4-<* 04$ 'melak)kan lom/a!an seja)$ 4 by!e /om*atan dekat (near jum*) -H ?MP dis*Klo0 dis*Khigh $aitu melakukan lom*atan lebih *anjang maksimal (' Kb# ,ontohK.( 0200$ 'melak)kan lom/a!an ke lokasi memori 200$ /om*atan jauh ("ar jum*) -H ?MP AAR i*lo0 ,slo0 ,shigh $aitu melakukan lom*atan ke seluruh daerah memori# ,ontohK.( E#< n4 'melak)kan lom/a!an ja)$ ke lokasi !er!en!)

/om*atan bers$arat
9aitu lom*atan *endek $ang dilakukan ke seluruh daerah memori dalam segmen memori $ang sama dan terjangkau oleh o*erasi ini# Instruksi ini menggunakan ,MP untuk membandingkan kondisi $ang di)ek% sehingga akan melom*at ke alamat $ang dituju sesuai instruksi lom*atan bers$arat% dimana instruksi lom*atan bers$arat antara lain ?A (?um* i" Abo;e) N lom*at bila o*erand 1 H o*erand' (bilangan tak bertanda) ?A@ (?um* i" Abo;e or @Yual)N lom*at bila o*erand 1 H> o*erand' (bilangan tak bertanda) ?B (?um* i" Belo0) N lom*at bila o*erand 1 Z o*erand' (bilangan tak bertanda) ?B@ (?um* i" Belo0 or @Yual)N lom*at bila o*erand 1 Z> o*erand' (bilangan tak bertanda) ?B (?um* i" Breater)N lom*at bila o*erand 1 H o*erand' (bilangan bertanda) ?B@ (?um* i" Breater or @Yual) N lom*at bila o*erand 1 H> o*erand' (bilangan bertanda) ?/ (?um* i" /ess) N lom*at bila o*erand 1 Z o*erand' (bilangan bertanda) ?/@ (?um* i" /ess or @Yual) N lom*at bila o*erand 1 Z> o*erand' (bilangan bertanda) ?, (?um* i" ,arr$) N lom*at bila ada ba0aan ?<, (?um* i" <o ,arr$) N lom*at bila tidak ada ba0aan ?@ atau ?I (?um* i" @Yual)1(?um* i" Ierro) N lom*at bila o*erand 1 > o*erand ' ?<@ atau ?<I (?um* i" <ot @Yual)1(?um* i" <ot Iero)N lom*at bila o*erand 1 ZH o*erand ' ?2 (?um* on 2;er"lo0) N lom*at bila terjadi o;er"lo0 ?<2 (?um* i" <o 2;er"lo0)N lom*at bila tidak terjadi o;er"lo0 ?S (?um* 2n Sign) N lom*at bila negati" ?<S (?um* i" <o Sign) N lom*at bila *ositi" ?P atau ?P@ (?um* on Parit$)1(?um* i" Parit$@;en) N lom*at bila ber*aritas gena* ?<P atau ?P2 (?um* i" <o Parit$)1(?um* i" Parit$ 2dd)N lom*at bila ber*aritas ganjil ?,DI (?um* i" ,D is Iero) N lom*at bila ,D>:

.k$ 9udatama% S#Si% M#Kom

39

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)


?@,DI (?um* i" @Yual ,D is Iero)N lom*at bila @,D>: (khusus 7:375 ke atas)

Penulisan instruksi lom*at bers$arat $ang dia0ali dengan instruksi ,MP $ang berguna untuk membandingkan isi register untuk dilom*ati sesuai kondisi# ,ontoh 1.-1 .-1 10&: ,.( K> C:, K.( 10+: #++ C:* #23 0010$ 523 0012$ #2352 10+ #2 10& #233 20$ 'isi #2 dengan 'isi 52 dengan 10$ 12$

'bandingkan isi #2 dengan 52 'bila sama lom/a! ke alama! 10+ 'bila !idak !amba$kan isi #2 dengan 1 'kembali ke alama! 10& '!amba$kan isi #2 dengan 3 'kembali ke /rom/! +-?

Kita tinggal mengganti instruksi lom*at sesuai kebutuhan% a*akah memenuhi s$arat (9) atau tidak memenuhi s$arat (T)# ,ontoh '9model small 9 ode org 100$ .-1 523 00004 +03 414 ,2300034 #43024 214 +0 +03554 A0#:@2 +030+4 #43024 214 +030#4 214 52 52300054 .A0#C:

A0#:@3: .-1 A0#:@2: .-1 A0#:@1: .-1 C:* C:, ,.( K:> .-1 .-1 C:* .-1 C:* C:, ,.(

0--( A0#:@1

.k$ 9udatama% S#Si% M#Kom

40

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)


K0> C:* >:+ .A0#C A0#:@3 204

2P@RASI STA,K
Pengertian 2*erasi Sta)k
Sta)k (tum*ukan) adalah bagian memori $ang digunakan untuk men$im*an nilai dari register han$a sementara saja# Pada sta)k digunakan *asangan SS-SP untuk menunjukkan lokasi dari sta)k# Perintah $ang digunakan adalah P.S& (menaruh ke dalam sta)k)% dan P2P (mengambil data dari sta)k)#

Instruksi P.S& untuk o*erasi sta)k


Meru*akan instruksi untuk memasukkan data ke dalam sta)k (tum*ukan)# !ata berasal dari data mentah% register atau isi lokasi memori SintaksP.S& reg P.S& Slokasi memoriT P.S& data ,ontoh(A?4 52 (A?4 >#2 (A?4 6+C7 (A?4 12$ ' menyim/an isi 52 ke s!a k (1& bi!) ' menyim/an isi >#2 ke s!a k (32 bi!) ' menyim/an isi dari lokasi memori beralama! di 6+?%10$++C7 ke s!a k ' menyim/an da!a 12$ ke s!a k

Instruksi P2P
Meru*akan instruksi untuk mengambil kembali data dari sta)k (kebalikan P.S&) ke dalam register atau lokasi memori Sintaks- P2P reg P2P SalamatT P2PA ,ontoh(-( 52 (-( 6+C7 'mengambil isi s!a k dan di!em/a!kan di 52 'mengambil isi s!a k dan di!em/a!kan ke alama! +?:+C Nmengambil isi sta)k dan ditem*atkan di reg "lag

.k$ 9udatama% S#Si% M#Kom

41

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)


Berikut ini )ontoh *rogram lengka* untuk o*erasi sta)k',ara kerja s!a k 9model small 9 ode org 100$ .A0#C: K.( ?*#<* H#0 +5 J?*.CH 5?IG *AH#< +5 133103GIG ?!a ks +D L ?*#<*: 0># +23 H#0 .-1 ?!a ks3 +2 .-1 #43 09$ 0># +23 *AH#< C:* 21$ .-1 +23?!a ks C:* 21$ C:* 20$ >:+ .A0#C !ari )ontoh *rogram di atas kita modi"ikasi menjadi9model small 9 ode org 100$ .A0#C: K.( ?*#<* H#0 +5 J?*.CH 5?IG *AH#< +5 133103GIG ?*#<*: 0># +23 H#0 (A?4 +2 .-1 #4309$ C:* 21$ 0># +23 *AH#< C:* 21$ (-( +2 C:* 21$ C:* 20$ >:+ .A0#C

Instruksi P.S&A
Meru*akan instruksi untuk memasukkan isi register "lag ke dalam sta)k SintaksP.S&A

Per*indahan data selain M2J


Bebera*a instruksi *er*indahan data selain memakai M2J meli*uti- P.S&% P2P% D,&B% /@A% *er*indahan data string (/2!S% ST2S dan M2JS)

Aturan *enulisan o*erasi *er*indahan data (sintaks)


Instruksi D,&B (e )hange)
.k$ 9udatama% S#Si% M#Kom

42

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)


Ber"ungsi untuk menukarkan isi register dengan register lain atau isi register dengan isi lokasi memori# Tidak berlaku untuk antar lokasi memori# Sintaks- D,&B reg% reg D,&B reg% SalamatT ,ontoh2,4@ 2,4@ 2,4@ #23 52 +23 6+C7 6?C73 ,4 'men)kar isi #2 dengan 52 'men)kar isi +2 dengan isi lokasi memori +C 'men)kar isi lokasi memori dengan ,4

Instruksi /@A (/oad @""e)ti;e Address)


Ber"ungsi untuk mengambil alamat suatu data *ada lokasi memori dan meletakkann$a di register 15 bit# Sintaks,ontoh0># 0># 0># 523 6+C7 523 1#<1 'isi alama! di reg +C diambil dan disim/an di 52 'isi alama! oBBse! da!a dengan label 1#<1 diambil dan disim/an di 52 #23 6?C7 'isi da!a di lokasi memori ?C diambil dan disim/an di #2 /@A reg% SalamatT /@A reg% ;ariable

Instruksi /2!S (/oad String)


Ber"ungsi untuk memindahkan data string *ada segment data $ang alamat o""setn$a ditunjukkan oleh isi register SI ke a))umulator (A/% AD) akan di-in)rement (=1) atau de)rement (-1)# Instruksi ini ditambah dengan B bila memindahkan b$te% F (0ord) atau ! (double 0ord)# ,ontoh0-+?5 0-+?D 0-+?+ 0-+? 0-+? 0-+? ' da!a by!e di lokasi memori ?C di/inda$ ke reg #0 ' da!a Nord di lokasi memori ?C di/inda$ ke reg #2 ' da!a do)bleNord di lokasi ?C di/inda$ ke reg >#2 +#*1 'da!a label +#*1 di/inda$ ke #0 (by!e) +#*2 'da!a label +#*2 di/inda$ ke #2 (Nord) +#*3 'da!a label +#*3 di/inda$ ke >#2 (do)bleNord)

.k$ 9udatama% S#Si% M#Kom

43

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

Instruksi ST2S (Store string)


Ber"ungsi memindahkan string *ada A/% AD% @AD ke ekstra segment $ang alamat o""setn$a ditunjukkan oleh isi !I (@S-!I) ,ontoh?*-?5 ?*-?D ?*-? 'isi #0 di/inda$ ke lokasi memori +C 'isi #2 di/inda$ ke lokasi memori +C +#*1 'isi #0 di/inda$ ke label +#*1 di alama! +C

Instruksi M2JS (Mo;e string)


Memindahkan isi string dari suatu lokasi memori ke lokasi memori $ang lain beru*a b$te% 0ord atau double 0ord dari data segment beralamat o""set SI ke ekstra segment beralamat o""set !I# ,ontoh.-1?5 .-1?D .-1?+ 'isi lokasi memori berisi by!e ke lokasi memori lain 'isi lokasi memori berisi Nord ke lokasi memori lain 'isi lokasi memori berisi do)ble Nord ke lokasi lain

F04 2lompatan3 merupakan instruksi untuk melompat ke bagian tertentu dan mengeksekusi instruksi berikutn'a Ada dua 1enis lompatan 'aitu lompatan tanpa s'arat dan lompatan dengan s'arat ;ompatan tanpa s'arat terdiri dari C 'aitu 7 Short Fump, <ear Fump dan .ar Fump ;ompatan dengan s'arat merupakan proses pengambilan keputusan atau operasi percabangan dengan diikuti oleh instruksi C04 dan instruksi ;ompat bers'arat, 'aitu melakukan perbandingan terlebih dahulu suatu isi register apabila telah memenuhi s'arat, maka lompatan bila di1alankan

Ada ?? 1enis lompatan bers'arat 'ang digabungkan dengan operasi logika Operasi perpindahan data selain 0O@ menggunakan instruksi antara lain 7 45S(, 4O4, 6C(:, ;-A, perpindahan data string 2;O&S, S!OS dan 0O@S3 Operasi stack sangat penting dipakai untuk menaruh isi data 245S(3 'ang suatu saat dapat diambil kembali dari stack 24O43 4erintah ;-A &6, sama dengan perintah 0O@ &6,O..S-! sehingga merupakan alternatif 'ang dapat dipilih untuk mencetak kalimat

.k$ 9udatama% S#Si% M#Kom

44

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

!$%A& 1# Sebutkan ' jenis o*erasi ?um* dan berikan )ontohn$a masing-masingV '# Bagaimana )ara melakukan lom*atan dalam lom*atan dengan memakai o*erasi loo*C (# Buatlah *rogram lom*atan bers$arat untuk membandingkan karakter tertentuV 3# Buatlah *rogram men)etak kalimat dengan mengganti *erintah M2J !D% 2AAS@T dengan /@A !D#

Pertemuan Ke
Tujuan Instruksional Khusus Pokok Bahasan Sub Pokok Bahasan

11 (Sebelas)
Mengerti dan Memahami in*ut data ke$bord beru*ada AS,II atau @ tended# In*ut data dari Ke$board# 1# '# ( Masukan satu karakter Mendeteksi *enekanan tombol Masukan kalimat dari ke$board Tuntunan Praktis Pemrograman Assembl$% &artono Partoharsojo Pemrograman dengan Bahasa Assembl$% Susanto Mi)ro*ro)essor Programmer+s% re"erensi Intel ,o

!a"tar Pustaka

I'P4" &A"A &ARI #!5B AR&


Masukan satu karakter
Memasukan data1in*ut data 1 karakter da*at kita buat dengan *ela$anan interu*si '1& nomor ser;i)e :1& dalam register A&# Instruksi $ang umum di*akai adalahM2J A&% :1& I<T '1&

.k$ 9udatama% S#Si% M#Kom

45

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)


!ata $ang dimasukkan melalui *enekanan tombol ke$board ini akan ditam*ung di register A/ beru*a kode AS,II# ,ontoh'(rogram in/)! 1 karak!er dari keyboard 9model small 9 ode org 100$ .A0#C: K.( ?*#<* *anya db JKaNabla$ /er!anyaan di baNa$ ini O J313310 db J#/aka$ anda seorang laki8lakiL (MP*)G313310 db JKaNaban anda : IG KaNab1 db 133103G#nda adala$ seorang laki8lakiG3133103GIG KaNab2 db 133103G#nda adala$ seorang Nani!aG3133103GIG ?*#<*: A0#:@: .-1 0># C:* .-1 C:* ,.( K> ,.( K> ,.( K> ,.( K> K.( .-1 0># C:* K.( 0#HC: .-1 0># C:* C:* .A0#C #43 094 +23 *anya 21$ #43 014 21$ #03 JMG 0#HC #03 JyG 0#HC #03 J*G D#:C*# #03 J*G D#:C*# A0#:@ #43094 +23KaNab2 214 ?>0>?#C #43094 +23KaNab1 214 20$ 'in/)! dari keyboard 1 $)r)B

D#:C*#:

?>0>?#C: >:+

Mendeteksi *enekanan tombol


.ntuk mendeteksi adan$a *enekanan tombol tertentu dari ke$board digunakan in*ut huru" 0ithout e)ho# Ada tiga jenis in*ut *er huru" 0ithout e)ho $aitu

In*ut 0ithout e)ho $ang menge)ek ,trl Break1,trl ,# .ntuk melakukan in*ut $ang mendeteksi ,trl Break memakai I<T '1& ser;i)e :7&# Ada*un *ers$aratann$a adalah-

.k$ 9udatama% S#Si% M#Kom

46

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)


<ilai A& berisi :7& I<T '1& <ilai A& ini da*at dihentikan dengan ,trl Break atau ,trl , selama *roses in*ut !ata $ang diin*ut ditaruh di register A/#

In*ut 0ithout e)ho $ang tidak menge)ek ,trl Break1,trl ,# .ntuk melakukan in*ut $ang tidak mendeteksi ,trl Break atau ,trl ,% memakai I<T '1& ser;i)e :6& di register A&# ,ara *emakaiann$a sama dengan A&>:7&% *erbedaann$a han$a *ada saat kom*uter sedang berjalan misaln$a *enekanan tombol )trl break akan dibiarkan dan diangga* sebagai in*ut# In*ut 0ithout e)ho tan*a menunggu Maksudn$a adalah kom*uter tidak akan menunggu anda untuk menekan ke$board teta*i in*ut ini akan diambil dari ke$board bu""er% dimana ke$board bu""er akan diisi ketika kom*uter sedang mengerjakan tugas lain# ?ika tern$ata ke$board bu""er kosong% maka in*ut 0ithout e)ho tan*a menunggu tidak mengerjakan a*a-a*a# Ada*un *ers$aratann$a adalah sebagai berikut Register A& diisi dengan ser;i)e :5& I<T '1& Register !/ harus berisi nilai AA&# &asil in*ut akan diletakkan *ada register A/#

,ontoh'(rogram in/)! 1 karak!er Ni!$o)! e $o !an/a men)ngg) 9model small 9 ode org 100$ .A0#C: H#*# ?*#<*: K.( ?*#<* db JHalima! ini akan di e!ak !er)s IG .-1 0># C:* .-1 .-1 2-< C:* ,.( K> ,.( K:> C:* #43 094 +23 H#*# 214 #43 0&4 +030EE4 #03 #0 214 #03 J0G #H4C< #03 JQG .A0#C 204

#H4C<: >:+ .A0#C

.k$ 9udatama% S#Si% M#Kom

47

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

Masukan kalimat dari ke$board


Memasukan data1in*ut data 1 kalimat da*at kita buat dengan *ela$anan interu*si '1& nomor ser;i)e :A& dalam register A&# Instruksi $ang umum di*akai adalahM2J A&% :A& M2J !D% 2AAS@T ;ariabel I<T '1& Instruksi ini ber"ungsi untuk mengambil data ke dalam ;ariable% data dalam kalimat diba)a satu *ersatu oleh register A/ dan disalurkan ke alamat1lokasi memori $ang ditunjuk oleh register BD# &asiln$a disim*an dalam register !D melalui sebuah ;ariabel# Panjang maksimal kalimat $ang diin*ut harus mengikuti aturan *embuatan ;ariable sebagai batas karakter $ang diin*ut dari ke$board $aitu<amaK;ariable db DD % C % 99 du* (C) DD> ?umlah karakter $ang akan diin*ut ditambah 1 untuk tombol enter 99> ?umlah karakter $ang diba)a berikut entern$a 99 du*(C) berguna untuk men$atakan bera*a tem*at $ang harus disediakan $aitu 99[1 tem*at kosong $ang da*at me0akili tanda tan$a (C)# !S-!D meru*akan lokasi memori $ang berisi segment dan o""set a0al suatu nama ;ariable $ang akan diisi oleh data# ,ontoh'(rogram in/)! 1 kalima! 9model small 9 ode org 100$ .A0#C: K.( ?*#<* H#*# db JHe!ik da!a maksim)m 14 karak!er :IG +#*#;.#?AH db 153L315 d)/(L) ?*#<*: .-1 0># C:* .-1 .-1 C:* .-1 C:, .-1 C:, 2-< #++ .-1 .-1 .-1 #43 094 +23 H#*# 214 #43 0#4 +230EE?>* +#*#;.#?AH 214 5230EE?>* +#*#;.#?AH 52 #036527 52 #43 #4 523 #2 #03 0 65273 #0 +23 -EE?>* +#*#;.#?AH

.k$ 9udatama% S#Si% M#Kom

48

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)


C:, C:, C:* +2 +2 204

#H4C<: >:+ .A0#C

Isi data $ang dimasukkan ke dalam register A/ (1 karakter) dan register !D (1 0ord) da*at ditam*ilkan ke la$ar monitor setelah di*indahkan ke register !/ $ang diba)a satu *ersatu dari lokasi memori $ang ditunjuk oleh register BD# Pada saat di*indahkan ke !/ maka harus dilengka*i dengan nomor *ela$anan I<T '1& ser;i)e :'&# ,ontoh.-1?5 .-1?D .-1?+ .-1? 4roperti target mendefinisikan bagaimana halaman target dari sebuah link 'isi lokasi memori berisi by!e ke lokasi memori lain 'isi lokasi memori berisi Nord ke lokasi memori lain 'isi lokasi memori berisi do)ble Nord ke lokasi lain +#*13 1#<1 'isi label +#*1 ke 1#<1

Operasi perpindahan data selain 0O@ menggunakan instruksi antara lain 7 45S(, 4O4, 6C(:, ;-A, perpindahan data string 2;O&S, S!OS dan 0O@S3 Setiap ada perpindahan data harus mengikuti ketentuan aturan penulisann'a 2s'nta)3 4erintah ;-A &6, sama dengan perintah 0O@ &6,O..S-! sehingga merupakan alternatif 'ang dapat dipilih untuk mencetak kalimat

1. 2. 3.

.k$ 9udatama% S#Si% M#Kom

49

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

Pertemuan Ke
Tujuan Instruksional Khusus

1' (!uabelas)
Mengerti dan Memahami metode *embuatan *rosedur dan ma)ro# Prosedur dan Ma)ro#

Pokok Bahasan

Sub Pokok Bahasan

1# '# (

Membuat *rosedur Membuat ma)ro Menggabungkan *rosedur G ma)ro Tuntunan Praktis Pemrograman Assembl$% &artono Partoharsojo Pemrograman dengan Bahasa Assembl$% Susanto Mi)ro*ro)essor Programmer+s% re"erensi Intel ,o

!a"tar Pustaka

PR S!&4R &A' MACR


Prosedur dan ma)ro adalah "asilitas $ang terda*at *ada turbo assembler#

Prosedur
Prosedur adalah sekelom*ok instruksi $ang dibangun untuk melakukan tugas-tugas tertentu agar da*at mem*er*endek jumlah baris *rogram# Prosedur da*at di*anggil se)ara berulang-ulang oleh *rogram utama dengan instruksi ,A//# Penggunaan *rosedur da*at mengurangi jumlah alamat memori $ang digunakan *ada *rogram# Kerangka !asar *rosedur-

.k$ 9udatama% S#Si% M#Kom

50

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)


<amaK*rosedur PR2, <@AR1AAR Nnama *rosedur ------------------------------------R@T <amaK*rosedur PR2, > Pro)edur @<!P Nkembali ke *rogram utama Nakhir *rosedur R@T> R@T.R< Isi Prosedur

<@AR > /okasi *rosedur dekat dengan *rogram utama AAR > /okasi *rosedur jauh dari *rogram utama ,ontoh#model small #)ode org 1::h M./AIM2J ,D%:4h Nisi ,D diloo*ing 4 kali M2J !/%+A+ NKarakter A disim*an di !/ ./A<B- ,A// ,@TAK N)etak di la$ar I<, !/ Ntambahkan isi !/ dengan 1 /22P ./A<B Nkembali ke ./A<B @DITI<T ':h Nkembali ke !2S ,@TAK PR2, <@AR N*rosedur ,@TAK M2J A&% :'h Nnomor ser;is :'& I<T '1h N)etak di la$ar R@T Nkembali ke *rogram utama ,@TAK @<!P Nakhir *rosedur @<! M./AI

MA,R2
&am*ir miri* dengan *rosedur dan tidak *erlu di*anggil dengan ,A// dan R@T# &an$a )uku* di*anggil dengan mengeksekusi naman$a# Ma)ro mengenal *arameter $ang bersi"at o*tional (boleh ada atau tidak)% tergantung kebutuhan# Kerangka .mum<amaKmakro MA,R2 SP1%P'T Nnama makro ######### ######### Isi makro ######### @<!M Nakhir makro SP1%P'T adalah *arameter $ang digunakan (o*tional) ,ontoh 1NProgram dengan Makro MA,R2 KAR M2J !/% KAR

,@TAK

.k$ 9udatama% S#Si% M#Kom

51

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)


M2J A&% :'h I<T '1h @<!M #model small #)ode org 1::h M./AI- ,@TAK WA+ ,@TAK WB+ ,@TAK W,+ ,@TAK W!+ ,@TAK W@+ @DITI<T ':h @<! M./AI ,ontoh '-

NProgram Men)etak String (Kalimat) ,@TAK MA,R2 KA/ /@A !D%KA/ M2J A&% :8h I<T '1h @<!M #model small #)ode org 1::h M./AI- ?MP START T./IS1 !B WSa$a sedang belajar Assembler+%1(%1: !B WTern$ata as$ik jugaX+ T./IS' !B WMateri sekarang tentang makroX+ START- ,@TAK T./IS1 ,@TAK T./IS' I<T ':h @<! M./AI

;ink dapat 1uga mengacu kepada alamat situs, misaln'a http7//www google co id 4roperti target mendefinisikan bagaimana halaman target dari sebuah link ditampilkan, apakah Gblank 2menampilkan pada browser window baru3, Gparent 2menampilkan pada dokumen tempat frame berada3, Gself 2menampilkan pada browser aktif3, atau Gtop 2menampilkan pada halaman utama3

1. 52

.k$ 9udatama% S#Si% M#Kom

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) 2. 3.

Pertemuan Ke
Tujuan Instruksional Khusus Pokok Bahasan

1( (Tigabelas)
Mengerti dan Memahami mode *engaturan la$er# 2*erasi *ada la$ar#

Sub Pokok Bahasan

1# '# (

Memori la$ar Tam*ilan teks *ada la$ar Bentuk Kursor Mode la$ar Tuntunan Praktis Pemrograman Assembl$% &artono Partoharsojo Pemrograman dengan Bahasa Assembl$% Susanto Mi)ro*ro)essor Programmer+s% re"erensi Intel ,o

!a"tar Pustaka

P!RASI PA&A $A5AR


M@M2RI /A9AR
9model small 9 ode org 100$ 8888888 .A0#C:

TAMPI/A< T@KS PA!A /A9AR


9model small 9 ode org 100$

.k$ 9udatama% S#Si% M#Kom

53

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)


.A0#C: 8888888

P2SISI K.RS2R
9model small 9 ode org 100$ 8888888 .A0#C:

M2!@ /A9AR
9model small 9 ode org 100$ 8888888 .A0#C:

;ink dapat 1uga mengacu kepada alamat situs, misaln'a http7//www google co id 4roperti target mendefinisikan bagaimana halaman target dari sebuah link ditampilkan, apakah Gblank 2menampilkan pada browser window baru3, Gparent 2menampilkan pada dokumen tempat frame berada3, Gself 2menampilkan pada browser aktif3, atau Gtop 2menampilkan pada halaman utama3

1# '# (#

.k$ 9udatama% S#Si% M#Kom

54

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

Pertemuan Ke
Tujuan Instruksional Khusus Pokok Bahasan

13 (@m*atbelas)
Mengerti dan Memahami *engaksesan *ort# Penanganan Aile# Akses Port dan *engakti"an s*eaker# 2*erasi Aile#

Sub Pokok Bahasan

1# '# (

Ma)am-ma)am Port Pengaksesan alamat *ort Penanganan Aile Atribut Aile Tuntunan Praktis Pemrograman Assembl$% &artono Partoharsojo Pemrograman dengan Bahasa Assembl$% Susanto Mi)ro*ro)essor Programmer+s% re"erensi Intel ,o

!a"tar Pustaka

A#S!S P R"
Pengertian Port

Ma)am-ma)am Port

Pengaksesan alamat *ort


Pers$aratan untuk ,ontoh *rogram

9model small 9 ode org 100$

.k$ 9udatama% S#Si% M#Kom

55

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)


.A0#C: 8888888

Penanganan Aile A# Manajemen Aile - Membuat !ire)tor$1Subdire)tor$


Pers$aratan untuk ,ontoh *rogram 9model small 9 ode org 100$ 8888888 .A0#C:

- Mengha*us !ire)tor$1Subdire)tor$
Pers$aratan untuk ,ontoh *rogram

9model small 9 ode org 100$ 8888888 .A0#C:

- Mengubah !ire)tor$1Subdire)tor$
Pers$aratan untuk ,ontoh *rogram

9model small 9 ode org 100$ 8888888 .A0#C:

B# &a*us Aile
Pers$aratan untuk mengha*us "ile

.k$ 9udatama% S#Si% M#Kom

56

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)


,ontoh *rogram

9model small 9 ode org 100$ .A0#C: 8

).

Atribut Aile

Pers$aratan untuk atribut "ile

?enis atribut "ile *ada !2S antara lain' Read 2nl$ ' &idden ' Sistem ' Ar)hi;e ' Jolume /abel ' <ama subdire)tor$ !2S men$ediakan "ungsi ser;i)e number 3(h I<T '1h untuk mengatur atribut "ile dengan mode A/ > :: (melihat atribut "ile)% A/ > :1 (untuk mengubah atribut "ile) dan jenis atribut ditam*ung di ,D $aitu nomor' : untuk "ile read onl$ ' 1 untuk "ile hidden (sembun$ikan "ile) ' ' untuk "ile sistem ' ( untuk Jolume label ' 3 untuk <ama subdire)tor$ ' 4 untuk "ile ar)hi;e Read onl$ Pers$aratan untuk Read onl$,ontoh *rogram untuk read onl$ ("ile $ang tidak bisa diha*us) 9model small 9 ode org 100$ 8888888 .A0#C:

Hidden *ile
Pers$aratan untuk &idden "ile-

)on#o+ p!og!am ,n#,k +idden *ile


9model small 9 ode org 100$ 8888888 .A0#C:

A!"+i-e 57

.k$ 9udatama% S#Si% M#Kom

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)


Pers$aratan untuk Ar)hi;e "ile-

)on#o+ p!og!am ,n#,k a!"+i-e .*ile $ang dapa# di/a"a dan di+ap,01
9model small 9 ode org 100$ 8888888 .A0#C:

;ink dapat 1uga mengacu kepada alamat situs, misaln'a http7//www google co id 4roperti target mendefinisikan bagaimana halaman target dari sebuah link ditampilkan, apakah Gblank 2menampilkan pada browser window baru3, Gparent 2menampilkan pada dokumen tempat frame berada3, Gself 2menampilkan pada browser aktif3, atau Gtop 2menampilkan pada halaman utama3

1# '# (#

.k$ 9udatama% S#Si% M#Kom

58

Anda mungkin juga menyukai