bab11-penyusunan bahasa rakitan tanpa debug com

Upload: arri-valianto

Post on 11-Jul-2015

142 views

Category:

Documents


0 download

TRANSCRIPT

  • 5/11/2018 Bab11-Penyusunan Bahasa Rakitan Tanpa Debug Com

    1/6

    PENYUSUNAN BAHASA RAK ITANTANPA DEBUG.COM

    Cara lain untuk menuliskan program dengan bahasa rakitan adalah dengan menuliskaninstruksi-instruksi bahasa rakitan melalui text editor dan kemudian diterjemahkan denganassembler. Assembler merupakan program yang digunakan untuk menterjemahkan programaplikasi yang ditulis dengan bahasa rakitan (assembly language) atau babasa pemrogramansimbolik (simboIic programming language) menjadi bahasa mesin.

    Instruksi program yang ditulis dengan menomonik akan diterjemahkan ke dalam bentukbilangan biner bahasa mesin dengan menggunakan assembler. Program yang ditulis denganbahasa simbolik tersebut disebut dengan source program (program sumber) dan basil terjemahanke dalam bahasa mesin disebut dengan object program (program obyek).

    Berikut ini adalah bentuk umum struktur penulisan suatu segment.[Nama Segment] SEGMENT

    ASSUME CS:[Segment] DS:[Segment] SS:[Segment] ES:ISegment]ORG lOOh

    83

  • 5/11/2018 Bab11-Penyusunan Bahasa Rakitan Tanpa Debug Com

    2/6

    -[label]:

    Program ASM

    [nama segment] ENDSEND [label]

    Untuk program .COM hams menambahkan ORG l00h pada baris ketiga dari strukturprogram di atas. Hal ini dilak:uk:ankarena harus menyisihkan ruang sebesar IDOhuntuk PSP(Program Segment Prefix). Karena program .COM hanya terdiri dari satu segment, makabentuk struktur program dari program .COM adalah sama seperti di atas. Sedangkan untukprogram .EXE harus dapat membuat beberapa segment dan tidak perlu menyediakan barisketiga dari struktur data di atas.

    Berikut ini adalah contoh program dan penjelasannya.COMMENT *

    Cetak tulisan 0123456789 di layardengan nama executable program Contoh I.COM *

    Code_seg SEGMENTASSUME CS:Code_seg DS:Code_seg SS:Code_seg ES:Code_segORG IOOh

    Mulai: MOY CX,OAhMOY DL,30h

    ; jumlah loop; AScn huruf 0

    Label: MOY AH,02hINT 2IhINCDLLOOP LabelINT 20h

    Code_seg ENDSEND Mulai

    14

  • 5/11/2018 Bab11-Penyusunan Bahasa Rakitan Tanpa Debug Com

    3/6

    Penjelasan:1. COMMENT merupakan suatu pseudo-op yang dapat digunakan untuk memberi keterangan

    atau komentar dari program.Format dari pseudo-op COMMENT adalah sebagai berikutCOMMENT pembatas awal keterangan pembatas ak:hir

    2. SEGMENT merupakan pseudo-op yang menunjukkan segment main memory letak dariinstruksi dan data di program assembly. SEGMENT didahului dengan label yangmenunjukkan nama dari segmentnya.Code_seg SEGMENTCode_seg ENDSPada contoh program, nama dari segment adalah Code_seg (tidak harus Code_seg tetapibisa nama yang lainnya, karena merupakan suatu label).Untuk program .EXE hams dapat membuat beberapa segment dan tidak perlu menye-diakan baris ini dari struktur data di atas.

    3. ASSUME merupakan pseudo-op yang menunjukkan kepada assembler letak dari segmentuntuk segment segment register.Karena semua penunjuk ke Code_seg sebenamya baris ini dapat kita ganti dengan katakata yang lebih singkat, yaitu:

    ASSUME CS:Code_segUntuk program .EXE harus dapat menunjukkan ke mana arahnya penunjuk penunjuk itu,contoh:

    ASSUME CS:Code_seg DS:Data_seg SS:Stack_seg ES: OB690R

    4. ORG merupakan pseudo-op yang menunjukkan letak awal dari alarnat memori dalamsuatu segment.

    Bentuk instruksi : ORG 100Rartinya instruksi ini akan diletakkan mulai dari alamat memori 100 heksadesimal

    (=256 Des) pada code segment. Hal ini diperlukan untuk executable program yangmempunyai extension.COM, yang umumnya diletakkan pada larnat memori 100R di-segment.

    85

  • 5/11/2018 Bab11-Penyusunan Bahasa Rakitan Tanpa Debug Com

    4/6

    .- ,

    Executable program dengan yang berextension.COM lebih kecil dan dapat diambillebihcepat dibandingkan dengan extension.EXE, hanya kelemahannya dapat menampungmaksimal 64 KB.

    5. MULA! merupakan label yang mutlak diperlukan untuk menunjukkan awal dari instruksi-instruksi yang akan diproses.

    MOV merupakan op-code yang digunakan untuk memindahkan suatu nilai ke suatulokasi.

    Format dari op-code MOV adalah:MOV tujuan, sumber

    Bentuk instruksi pada contoh adalah:MOV AH,OA ; fungsi DOSHal ini mempunyai arti bahwa register AH diisi dengan nilai data 10 desimal.

    Mengapa register AH harus diisi dengan nilai tersebut ? Tentunya hal ini mem-punyaimaksud yang tertentu. Untuk menampilkan suatu bentuk karakter string di layar terminal,assembler tidak menyediakan suatu intruksi yang khusus, tetapi dapat dilakukan denganmenggunakan fasilitas dari DOS. Fasilitas dari DOS dapat diaktipkan dengan menggunakanop - code !NT (interrupt). Salah satu interrupt DOS yang penting adalah denganmemberikan nilai 21 hexadesimal, yang menyediakan beberapa fungsi operasi yangsangat berguna .Untuk menggunakan fungsi ini,suatu nilai fungsi tertentu harus diletakkandi register AH.

    Sebelum dilakukan interupt terhadap DOS, maka register DX (data register) diisiterlebih dahulu.

    6. LabelStruktur dapat dituliskan sebagai berikut:[label:] [perintah] [;Komentar]Syarat untuk label yang terdapat dalam suatu baris adalah:a. Harns unik.b. maksimal 31 karakterc. karakter yang digunakan adalah: alphanumerik, tanda tanya, tanda satuan (@), titik,

    tanda dolar.d. bukan merupakan perintah assembler.e. label hanya dapat didefinisikan satu kali dalam program

    86

  • 5/11/2018 Bab11-Penyusunan Bahasa Rakitan Tanpa Debug Com

    5/6

    ----

    Label yang terdapat pada struktur kalimat program dapat digunakan sesuai kep-erluan. Sebagai contoh perhatikan program di atas,pada baris kelima terlihat bahwaperintah tersebut menggunakan label, namun pada baris dibawahnya tidak lagimenggunakan label.

    Komentar yang dimaksudkan dalam struktur kalimat program adalah suatu yangtidak akan diproses oleh compiler dan akan dibiarkan sebagai keterangan pada file ASM.Setiap komentar selalu dimulai dengan tanda ';'. Sebagai contoh baris-baris pada pro-gram di atas menggunakan komentar. Sebenarnya tidak setiap baris harus diberi komentar.Pemberian komentar sebenarnya terserah saudara dan bila perlu dapat tidak memberikankomentar sama sekali pada suatu program.

    7. ENDSInstruksi : Code_seg ENDSInstruksi ini merupakan perintah tanda batas dari suatu segment.

    8. ENDInstruksi : END Mulai

    Instruksi ini merupakan tanda berakhirnya suatu program. Untuk mengakhiri pro-gram ini Saudara harus membubuhkan'label pertama tanda memulai program, dalam halini adalah -label Mulai.

    Catatan:Pada label dapat diberikan instruksi berikut:Instruksi : MOV DX, OFFSET bacaInstruksi ini menunjukkan bahwa register DX agar diisi dengan nilai yang ada pada label

    yang ditunjukkan oleh operator OFFSET, yaitu nilai dimana label baca. Pada baris dimanalabel baca, terdapat psudo-op DB (Defme Byte) yang digunakan untuk men-definisikanberupa string, maka diakhiri dengan tanda dolar ($), seperti berikut:

    baca DB 'GUNADARMA$'Berikut ini diberikan contoh yang menggunakan instruksi DB .COMMENT *

    tampilkan tulisan GUNADARMA pada monitordengan nama executable program Contoh2.COM *

    87

  • 5/11/2018 Bab11-Penyusunan Bahasa Rakitan Tanpa Debug Com

    6/6

    J(ode SEGMENTASSUME CS:kode, DS:KodeORG lOOH

    Mulai: MOV AH,09MOV DX,OFFSET bacaINT 21HINT 20H

    ; fungsi DOS; isi baca di DX; cetak dimonitor; selesai

    bacaDB 'GUNADARMA$'kode ENDS

    END Mulai

    88