move r0, sum - · pdf fileassembler. program assembler adalah salah satu kumpulan ... dalam...

Download MOVE R0, SUM -   · PDF fileassembler. Program assembler adalah salah satu kumpulan ... Dalam contoh kita ... program, bahasa assembly memungkinkan programer untuk

If you can't read please download the document

Upload: phunghanh

Post on 07-Feb-2018

307 views

Category:

Documents


11 download

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