move r0, sum - · pdf fileassembler. program assembler adalah salah satu kumpulan ... dalam...
TRANSCRIPT
Modul8
D3TKJ(TeknikKomputerdanJaringan)DepartemenPendidikanNasional
1
8.BAHASAASSEMBLY
Instruksimesindinyatakandenganpola0dan l.Polasemacam itusangatsulit
untukdijelaskanpadasaatmembahasataumenyiapkanprogram.Olehkarenaitu,kita
menggunakan nama simbolik untukmenyatakan pola tersebut. Sejauh ini kita telah
menggunakan katakata biasa seperti Move, Add, Increment, dan Branch, untuk
instruksi operasi yangmenyatakan pola kode biner yang sesuai. Pada saat menulis
programuntukkomputertertentu,katakatatersebutbiasanyadigantidenganakronim
yang disebut mnemonic, seperti MOV, ADD, INC, dan BR Serupa dengan kita
menggunakan notasi R3 untuk mengacu pada register 3, dan LOC untuk mengacu
padalokasimemori.Setlengkapnamasimboliksemacamdanaturanpenggunaannya
membentuk bahasa pemrograman, yang biasanya disebut sebagai bahasa assembly.
Set aturan untuk menggunakan mnemonic dalam spesifikasi instruksi dan program
lengkapdisebutsyntaxbahasa.
Program yang ditulis dalam bahasa assembly dapat secara otomatis
ditranslasikan ke rangkaian instruksi mesin oleh suatu program yang disebut
assembler.Programassembleradalahsalahsatukumpulanprogramyangmerupakan
bagiandari softwaresistem.Assembler, sepertihalnyaprogramyang lain,disimpan
sebagai rangkaian instruksi mesin dalammemori komputer. Program user biasanya
dimasukkankedalamkomputermelaluikeyboarddandisimpandalammemoriatau
disk magnetik. Pada titik ini, program user hanyalah kumpulan baris karakter
alfanumerik. Pada saat program assembler dieksekusi, program tersebut membaca
program user, menganalisanya, dan kemudianmenghasilkan program bahasamesin
yangdiinginkan.Bahasamesintersebutberisipola0dan1yangmenetapkaninstruksi
yang akan dieksekusi oleh komputer tersebut. Program user dalam format teks
alfanumerik aslinya disebut source program, dan program bahasa mesin yang di
assembledisebutobjectprogram.
Bahasa assembly untuk suatu komputermungkin case sensitive ataumungkin
tidak, sehingga,komputer tersebutbisamembedakanantarahurufkapitaldan huruf
kecil atau tidak dapat. Kita akan menggunakan huruf kapital mark menunjukkan
semua nama dan label dalam contoh kita untuk dapat meningkatkan kemudahan
pembacaanteks.Misalnya,kitaakanmenuliskaninstruksiMovesebagaiberikut
MOVER0,SUM
Modul8
D3TKJ(TeknikKomputerdanJaringan)DepartemenPendidikanNasional
2
MOVE mnemonic menyatakan pola biner, atau OP code, untuk operasi yang
dilakukanolehinstruksitersebut.AssemblermentranslasirnnemonicinimenjadiOP
codebineryangdipahatnikomputer.
Mnemonic OPcode diikuti oleh setidaknya satu karakter spasi kosong.
Kemudianinformasiyangmenyatakanoperandditetapkan.Dalamcontohkita,source
operand berada dalam register R0. Informasi ini diikuti oleh spesifikasi destination
operand, dipisah dari source operand dengan koma, tanpa jeda kosong.Destination
operandberadadalamlokasimemoriyangalamatbinernyadinyatakandengannama
SUM.
Karena terdapat beberapa mode pengalamatan yang dapat digunakan untuk
menetapkan lokasi operand, maka bahasa assembly barns mengindikasikan mode
manayangdigunakan.Misalnya,nilainumerikataunamayangdigunakannya,seperti
SUM pada instruksi sebelumnya, dapat digunakan untuk menunjukkan mode
Absolute.Sehinggainstruksi
ADD#5,R3
menambahkan bilangan 5 ke isi register R3 dan meletakkan hasilnya kembali ke
register R3. tanda sharp bukanlah cara satusatunya untuk menunjukkan mode
pengalamatan Immediate. Dalam beberapa bahasa assembly, mode pengalamatan
yangdimaksuddinyatakandalammnemonicOPcode.Dalamhal ini,suatuinstruksi
memiliki mnonemonic OPcode yang berbeda untuk mode peugalamatan yang
berbeda.Misalnya,iustruksiAddsebelumnyadapatditulissebagaiberikut
ADDI5,R3
AkhiranIdalammnemonicADDImenyatakanbahwasourceoperanddinyatakan
dalammodepengalamatanImmediate.
PengalamatanIndirectbiasanyadinyatakandenganmeletakkantandakurungdi
sekitar nama atau simbol yang menunjukkan pointer ke operand. Misalnya, jika
nomor5ditempatkandalam lokasimemoriyangalamatnyadisimpandalamregister
R2,makaaksiyangdiinginkandapatditetapkansebagaiberikut
MOVE#5,(R2)
ataumungkin
MOVE5,(R2)
Modul8
D3TKJ(TeknikKomputerdanJaringan)DepartemenPendidikanNasional
3
8.1.ASSEMBLERDIRECTIVE
Selain menyediakan mekanisme untuk menyatakan instruksi dalam suatu
program, bahasa assembly memungkinkan programer untuk menetapkan informasi
lainyangdiperlukanuntukmentranslasikansourceprogramkedalamobjectprogram.
Kita telah menyebutkan bahwa kita perlu untuk menetapkan nilai numerik ke tiap
nama yang digunakan dalam program. Misalkan nama SUM digunakan untuk
menyatakannilai200.Faktainimungkindisampaikankeprogramassemblermelalui
pernyataanseperti
SUMEQU200
Pernyataan ini tidakmenunjuk suatu instruksi yang akan dieksekusi pada saat
object program dijalankan sebenarnya, bahkan tidak akan muncul dalam object
program. Hanya memberitahu assembler bahwa nama SUM seharusnya digantikan
dengan nilai 200 kapanpunmuncul dalamprogram. Pernyataan semacam itu, yang
disebut assembler directive (atau perintah), digunakan oleh assembler pada saat
mentranslasikansourceprogrammenjaadiobjectprogram.
100 Move N,R1
104 Move#NUM1,R2
108 Clear R0LOOP 112 Add (R2),R0
116 Add #4,R2120 Decrement R1124 Branch>0 LOOP128 Move R0,SUM132
.
.
.SUM 200N 204 100NUM1 208NUM2 212
.
.
.
NUMn 604
Gambar8.1.Pengaturanmemori untukprogram
Modul8
D3TKJ(TeknikKomputerdanJaringan)DepartemenPendidikanNasional
4
Untukmenjalankanprogrampadakomputer,makakitaperluuntukmenuliskan
sourcecodenyadalambahasaassemblyyangdiperlukan,menetapkansemuainformasi
yang diperlukan untuk menghasilkan object program yang sesuai. Misalkan tiap
instruksidantiapitemdatamemilikisatuwordmemori.Jugaasumsikanbahwamemori
tersebut adalah byte addressable dan word lengthnya adalah 32 bit. Misalkan juga
bahwa object program diload dalam memori utama sebagaimana yang ditunjukkan
dalam Gambar 8.1. Gambar tersebut menujukkan alamat memori dimana instruksi
mesindanitemdatayangdimintadidapatkansetelahprogramdiloaduntukeksekusi.
Jika assembler adalah untukmenghasilkan object program sesuai dengan pengaturan
ini,makaharusmengetahui
Bagaimanamenginterpretasikannamatersebut
Dimanabarnsmenempatkaninstruksitersebutdalammemori
Dimanaharusmenempatkanoperanddatadalammemori
Untuk mendapatkan informasi ini, source program dapat ditulis sebagaimana
ditampilkanpadaGambar8.2.Programdimulaidenganassemblerdirectives.Kitatelah
membahas direktive Equate, EQU, yang menginformasikan pada assembler tentang
nilai SUM. Assembler directive yang kedua, ORIGIN, menyatakan pada program
assembler tempat untukmeletakkan blok data berikutnya di memori. Dalam hal ini,
lokasiyangditetapkanmemilikialamat204.Karenalokasiinidiloaddengannilai100
(yangmerupakanbilanganentridalam list),makadirectiveDATAWORDdigunakan
untukmenginfonnasikanpadaassemblerpersyaratan ini.Dinyatakanbahwanilaidata
100ditempatkandalarnwordmemoripadaalamat204.
Pernyataanapapunyangmenghasilkaninstruksiataudataditempatkandalamlokasi
memoridapatdiberi labelalamatmemori.Labeltersebutmenetapkansuatunilaiyang
setaradenganalamatlokasitersebut.KarenapernyataanDATAWORDdiberi labelN,
maka nama N ditetapkan dengan nilai 204. Kapanpun N digunakan pada sebagian
program,maka akan digantikan dengan nilai tersebut.MenggunakanN sebagai label
dengancaratersebutekuivalendenganmenggunakanassemblerdirective
NEQU204
Directive RESERVE menyatakan bahwa suatu blok memori 400 byte akan di
reserveuntukdata,dannamaNUM1dihubungkandenganalamat208.Directiveini
Modul8
D3TKJ(TeknikKomputerdanJaringan)DepartemenPendidikanNasional
5
tidakmenyebabkandataapapundiloadkelokasitersebut.Datadapatdiloaddalam
memorimenggunakanprosedurinput.
Labelalamatmemori
OperasiPengalamatanatauinformasidata
Assemblerdirectives sum EQU 200ORIGIN 204
N DATAWORD 100NUM1 RESERVE 400
ORIGIN 100Statementsthat START MOVE N,Rlgenerate MOVE #NUM1,R2machine CLR ROinstructions LOOP ADD (R2),RO
ADD q4,R2DEC R1BGTZ LOOPMOVE RO,SUM
Assemblerdirectives RETURNEND START
Gambar8.2.Representasibahasaassemblyuntukprogrampadagambar8.1.
DirectiveORIGINkeduamenetapkanbahwa instruksiobjectprogramakandi
load dalam memori mulai dari alamat 100. Diikuti dengan instruksi yang ditulis
denganmnemonicdansyntaxyangsesuai.Pernyataanterakhirdalamsourceprogram
adalah assembler directive END, yang menyatakan pada assembler bahwa ini
merupakan akhir teks source program. Directive END menyertakan label START,
yangmerupakanalamatlokasidimanaeksekusiprogramdimulai.
KitatelahmenjelaskansemuapernyataandalamGambar8.2kecualiRETURN.
Inimerupakan assembler directive yangmenyatakan titik dimana eksekusi program
harusdihentikan.Pernyataaninimenyebabkanassemblermenyisipkansuatuinstruksi
mesinyangsesuaiyangmengembalikankontrolkesistemoperasikomputertersebut.
Kebanyakan bahasa assembly meminta pernyataan dalam source program
dituliskandalambentuk
Label Operation Operand Comment
Modul8
D3TKJ(TeknikKomputerdanJaringan)DepartemenPendidikanNasional
6
Empat field tersebutdipisahkanolehdelimiter yang sesuai, biasanyasatuatau
lebihkarakterkosong.Labeladalahnamaopsionalyangdihubungkandenganalamat
memoridimanain