Handout Rakitan
Handout Rakitan
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
!a"tar Pustaka
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
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
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#
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
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#
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#
( (Tiga) Mengerti dan Memahami sistem bilangan Interru*t dan Register - Pengertian Interru*t - Pengertian Register - ?enis-jenis Register
!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
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#
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
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
10
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
11
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@
12
!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
13
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
14
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
!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
15
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#
16
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-
'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
17
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
18
- 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
19
.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$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
20
,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)
21
(# ,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#
22
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
!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)#
'$asil +2 = +2 + 1
atau
Penjumlahan biasa $ang hasiln$a ditambah dengan bit )arr$# &asiln$a disim*an di
23
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#
Pengurangan biasa $ang hasiln$a dikurangi dengan bit )arr$# &asiln$a disim*an di
'$asil
#4= #4 F #0 F
arry
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
24
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#
25
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
!a"tar Pustaka
perasi A'&
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$
26
perasi R
,ontoh-< -<
()
R reg. +alamat,
'isi 'isi
.-1 ?40
Rotasi (Rotate)
Instruksi ini digunakan untuk memutar isi bit *ada suatu register ke kiri atau ke kanan sesuai *erintah $ang diberikan#
27
-H R2/ reg% ,/
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#
28
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
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
29
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
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
30
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
31
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
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
!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
32
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
C:* 21$ C:* 20$ H#0C.#* +5 GH#.(A? >:+ .A0#C ,ontoh '9model small 9 ode
33
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#
34
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
35
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
+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
36
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#
37
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
!a"tar Pustaka
38
/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>:
39
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
40
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 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
41
Instruksi P.S&A
Meru*akan instruksi untuk memasukkan isi register "lag ke dalam sta)k SintaksP.S&A
42
43
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
44
!$%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
45
D#:C*#:
?>0>?#C: >:+
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-
46
<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
47
48
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.
49
Pertemuan Ke
Tujuan Instruksional Khusus
1' (!uabelas)
Mengerti dan Memahami metode *embuatan *rosedur dan ma)ro# Prosedur dan Ma)ro#
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
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-
50
<@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
51
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
Pertemuan Ke
Tujuan Instruksional Khusus Pokok Bahasan
1( (Tigabelas)
Mengerti dan Memahami mode *engaturan la$er# 2*erasi *ada la$ar#
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
53
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# '# (#
54
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#
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
55
- Mengha*us !ire)tor$1Subdire)tor$
Pers$aratan untuk ,ontoh *rogram
- Mengubah !ire)tor$1Subdire)tor$
Pers$aratan untuk ,ontoh *rogram
B# &a*us Aile
Pers$aratan untuk mengha*us "ile
56
).
Atribut Aile
?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-
A!"+i-e 57
)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# '# (#
58