Handout Rakitan

75
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) Pertemuan Ke 1 (Satu) Tujuan Instruksional Khusus Mengerti dan Memahami Assembler dan Sistem bilangan Pokok Bahasan Pengenalan Bahasa Rakitan dan Sistem Bilangan Sub Pokok Bahasan - Pengenalan Bahasa Rakitan - Sistem bilangan biner - Sistem bilangan oktal - Sistem bilangan desimal - Sistem bilangan hexadesimal Daftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly, Hartono Partoharsojo 2. Pemrograman dengan Bahasa Assembly, Susanto 3. Microprocessor Programmer’s, referensi Intel Co Apa Itu Bahasa Rakitan (Assembler) ? Bahasa Rakitan termasuk ke dalam bahasa tingkat rendah dan merupakan bahasa dasar komputer. Bahasa ini memerlukan logika yang cukup rumit di samping instruksinya yang jauh berbeda dengan bahasa pemrograman lainnya. Program yang dihasilkan memiliki kecepatan yang paling baik. Kelebihan dari bahasa rakitan adalah : 1. Memiliki fasilitas fungsi dan makro (ciri khas bahasa pemrograman yang menyebabkan pemrograman menjadi lebih mudah). 2. Program dapat dibuat secara modular (dipecah dalam modul-modul kecil dan dapat diintegrasikan kembali). 3. Ukuran program lebih kecil, sehingga lebih menghemat media penyimpan. 4. Lebih dekat ke hardware sehingga seluruh kemampuan komputer dapat dimanfaatkan secara maksimal. Apa saja yang diperlukan untuk belajar Bahasa Rakitan atau Assembler ? Untuk mempelajarai bahasa rakitan / assembler diperlukan : Uky Yudatama, S.Si, M.Kom 1

Transcript of Handout Rakitan

Page 1: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

Pertemuan Ke 1 (Satu)

Tujuan Instruksional Khusus Mengerti dan Memahami Assembler dan Sistem bilanganPokok Bahasan Pengenalan Bahasa Rakitan dan Sistem Bilangan

Sub Pokok Bahasan

Pengenalan Bahasa RakitanSistem bilangan biner

- Sistem bilangan oktal - Sistem bilangan desimal - Sistem bilangan hexadesimal

Daftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly, Hartono Partoharsojo

2. Pemrograman dengan Bahasa Assembly, Susanto

3. Microprocessor Programmer’s, referensi Intel Co

Apa Itu Bahasa Rakitan (Assembler) ?Bahasa Rakitan termasuk ke dalam bahasa tingkat rendah dan merupakan bahasa dasar

komputer. Bahasa ini memerlukan logika yang cukup rumit di samping instruksinya yang jauh

berbeda dengan bahasa pemrograman lainnya. Program yang dihasilkan memiliki kecepatan

yang paling baik. Kelebihan dari bahasa rakitan adalah :

1. Memiliki fasilitas fungsi dan makro (ciri khas bahasa pemrograman yang menyebabkan pemrograman menjadi lebih mudah).

2. Program dapat dibuat secara modular (dipecah dalam modul-modul kecil dan dapat diintegrasikan kembali).

3. Ukuran program lebih kecil, sehingga lebih menghemat media penyimpan.4. Lebih dekat ke hardware sehingga seluruh kemampuan komputer dapat dimanfaatkan

secara maksimal.

Apa saja yang diperlukan untuk belajar Bahasa Rakitan atau Assembler ?

Untuk mempelajarai bahasa rakitan / assembler diperlukan :

1. Sistem bilangan antara lain Biner, Oktal, Desimal dan Hexadesimal2. Pengenalan Microprocessor3. Sistem Memori dan Pengalamatan Memori4. Interupt / Interupsi 5. Register6. Instruksi Assembly atau Mnemonic7. Mode pengalamatan data8. Operasi-operasi pada assembler9. Pembuatan program

Sistem BilanganUntuk mempelajari bahasa rakitan kita harus mengenal beberapa sistem bilangan yang sangat

berguna dalam pengaksesan port ataupun menghafal kode ASCII yang penting. Bilangan

desimal sering kita gunakan sehari-hari untuk segala keperluan, sedangkan bilangan lainnya

Uky Yudatama, S.Si, M.Kom 1

Page 2: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

sangat dibutuhkan dalam pemrograman bahasa rakitan atau assembler, karena bahasa ini

dipakai untuk menjalankan sistem mikroprosessor. Setiap mikroprosesor memiliki bahasa rakitan

sendiri. Adapun sistem bilangan yang dipelajari adalah sebagai berikut :

1. Bilangan Biner

Bilangan ini hanya mengenal angka 0 dan 1 sehingga bilangan ini berdasar 2. Cara mengkonversi ke bilangan desimal adalah dengan mengalikan dua dengan pangkat N (suku ke-N) seperti bilangan desimal mengalikan 10 dengan pangkat N

Contoh:

1110 (biner) dikonversi ke desimal menjadi :

(1 * 23) + (1 * 22) + (1 * 21) + (0 * 20) =

8 + 4 + 2 + 0 = 14 (desimal)

- Operasi tambah pada sistem biner :

0 + 0 = 00

1 + 0 = 01

0 + 1 = 01

1 + 1 = 11

Contoh :

1110001 + 1011000 = 11001001 (biner)

desimalnya : 113 + 89 = 201

2. Bilangan Oktal

Bilangan Oktal merupkan bilangan berdasar 8. Jadi bilangan ini hanya terdiri dari angka 0 hingga 7. Konversi bilangan octal ke desimal mempunyai cara yang sama dengan bilangan biner, hanya memakai bilangan dasar 8.Contoh:

355 bilangan octal ke desimal

355 oktal = (3 * 82) + (5 * 81) + (5 * 80)

= 192 + 40 + 5

= 237 desimal

3. Bilangan Desimal

Bilangan ini sudah tidak asing lagi, karena digunakan dalam kehidupan sehari-hari. Sistem bilangan ini terdiri dari angka 0 sampai 9 dengan menggunakan dasar 10.

4. Bilangan Hexadesimal

Uky Yudatama, S.Si, M.Kom 2

Page 3: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

Bilangan ini mutlak harus dikuasai, karena dalam bahasa rakitan kita sering menemukan bilangan ini. Kode ASCII ditulis dalam bilangan hexadesimal yang mewakili huruf, angka, tanda baca dan karakter unik lainnya sebanyak 255 buah.Bilangan hexadesimal merupakan bilangan dasar 16 terdiri dari : 0123456789ABCDEFCara mengkonversi ke bilangan desimal sama dengan biner dan octalContoh:

3A hexa = (3 * 161) + (10 * 160) = 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. Terdiri dari 0 dan 1

Bilangan Octal merupakan bilangan dasar 8 terdiri dari 0 s/d 7

Bilangan Desimal merupakan bilangan dasar 10 yang sudah sering dipakai.

Bilangan Hexadesimal merupakan bilangan dasar 16 terdiri dari 0 – 9ABCDEF dan

dipakai dalam kode ASCII dank ode-kode lainnya.

TUGAS

1. Jelaskan mengenai bahasa rakitan?

2. Apa saja yang diperlukan untuk mempelajari bahasa rakitan/assembler?

3. Buatlah beberapa contoh bilangan dan konversikan sendiri bilangan tersebut menjadi

beberapa sistem bilangan.

Pertemuan Ke 2 (Dua)

Tujuan Instruksional Khusus Mengerti dan Memahami konsep memori pada PCPokok Bahasan Memori

Sub Pokok Bahasan

- Pengertian Memori PC- Pembagian Memori PC- Pengalamatan Memori PC

Daftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly, Hartono Partoharsojo

2. Pemrograman dengan Bahasa Assembly, Susanto

3. Microprocessor Programmer’s, referensi Intel Co

Uky Yudatama, S.Si, M.Kom 3

Page 4: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

MemoriPengertian MemoriMerupakan bagian terpenting dalam komputer untuk menyimpan data dan program.

Dalam microprosesor 8088 terdapat 16 saluran alamat (address) dan 8 saluran data secara

multiplex. Saluran alamat lainnya yang tersedia ada 4, khusus untuk menunjuk segmen memori,

dimana tiap segment menjangkau memori sebesar 64 kliobyte. Sehingga dari 16 saluran alamat

dapat menggarap isi memori hingga 1 megabyte dan bekerja dengan data 16 bit.

Ukuran memori 1 kilobyte = 1024 byte, 1 megabyte = 1024 x 1024 byte = 1.048.576 byte. Maka

alamat memori dari 0 sampai 1 megabyte memerlukan penulisan dengan 5 digit angka

hexadesimal dari 00000H sampai FFFFFH.

Sebagai contoh : Memori di PC XT 640 kilobyte terdiri dari alamat 00600H sampai alamat

A0000H.RAM dan ROM merupakan komponen IC yang dapat menyimpan data dan program

yang dapat dialamati terdiri dari jalur alamat (address) dan jalur data. RAM dapat menulis dan

membaca data, sedangkan ROM hanya membaca saja.

Kombinasi saluran/jalur data berupa 8 bit atau 16 bit yang dinyatakan dalam bilangan

hexadesimal. Sedangkan jalur alamat (address) memiliki pola yang sama dengan jalur data

memakai bilangan hexadesimal. Sekarang telah berkembang memori dengan jumlah saluran 32

bit dan 64 bit.

Tempat menyimpan data ukuran 1 byte di RAM dan ROM harus diberi nomor urut agar mudah

diidentifikasi berupa alamat memori (memori address). Jika ada data berupa 5AH disalurkan

melalui jalur data ke memori dengan alamat memori 0F2B4H, maka berarti di lokasi memori

nomor 0F2B4H terdapat data 5AH.

Memori dengan jalur alamat yang banyak akan memiliki kapasitas simpan yang dinyatakan

dalam byte, kilobyte, megabyte atau gigabyte.

Memori berkapasitas 64 KB berarti memiliki kemampuan merekam 64 x 1024 byte data. Suatu

media penyimpan berupa Hard disk 10 M berarti memiliki kapasitas rekam 10 x 1024 x 1024

byte.

Istilah dalam memori yang sangat lazim dan sering ditemui dalam setiap pemrograman bahasa

rakitan adalah :

Bit adalah singkatan dari binary digit Byte adalah 8 bit Word adalah 2 byte

Uky Yudatama, S.Si, M.Kom 4

Page 5: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

Pembagian memori Diantara register dalam CPU untuk mencatat alamat memori yang dipergunakan terdapat

segment register digabung dengan offset register yang mengatur pembagian memori. Offset

register dapat berupa register lain yang bukan segment register dengan aturan pasangan :

SSSS : OOOO

S = digit hexadesimal pada segment register O

O = digit hexadesimal pada offset register

Satu segment memori berukuran 64 kilobyte terbagi atas beberapa segment offset yang dapat

dialamati oleh offset register. Sedangkan memori (RAM & ROM) pada PC dapat terdiri dari

beberapa/banyak segment memori tergantung kapasitas memori pada PC tersebut.

Pengalamatan MemoriMerupakan suatu cara untuk mencatat atau menunjuk alamat memori sesuai aturan pasangan

SSSS : OOOO artinya penulisan alamat memori menuruti aturan bahwa bobot digit terendah

pada Segment Register adalah 16 pangkat 1 dan bobot tertinggi 16 pangkat 4. Sedangkan pada

Offset Register bobot digit terendah adalah 16 pangkat 0 dan bobot digit tertinggi 16 pangkat 3.

Contoh:

Misalkan: SSSS dipilih 1234H

OOOO dipilih DCBAH

Maka pengalamatan memori dapat dinyatakan 1234:DCBA.

Angka alamat absolutnya dapat dihitung dari :

12340

0DCBA +

1FFFA

Cara penulisan alamat memori 1234:DCBA memberi alamat absolute 1FFFAH.

Penunjukan alamat memori oleh mikroprosesor dilakukan oleh register BX. Jika kita ingin menaruh data dengan pencatatan alamat memori memakai segment register BX dan offset register DS. Pencatatan alamat dinyatakan dengan rumus DS:BXContoh: 0100 : 0234 artinya DS mencatat 0100H, BX mencatat 0234H

Alamat memori 0000 : 0234 dapat dinyatakan dengan :

DS:BX+DI yaitu DS berisi 0000, BX diisi 0200H dan DI diisi 0034H

Penulisan BX+DI disebut offset address terhadap segment address.

Memori pada dasarnya dapat menyimpan data dan program yang bersifat

sementara..

Uky Yudatama, S.Si, M.Kom 5

Page 6: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

Memori memiliki jalur data dan jalur alamat (address) agar dapat diidentifikasi oleh

microprosessor pada saat sedang membaca data dan program.

Memori memiliki kapasitas dalam satuan byte, kilobyte, megabyte, gigabyte dll.

Pengalamatan memori diatur berdasarkan pembagian segment dan offset.

Satu byte data dimemori memiliki satu alamat offset.

Penunjukkan alamat memori dilakukan oleh CPU dengan memanfaatkan register BX.

Pencatatan alamat memori dapat ditulis dengan DS:BX atau DS:BX+DI

TUGAS

1. Jelaskan pengertian memori?

2. Jelaskan perbedaan RAM dan ROM?

3. Bagaimana cara melakukan pembagian memori?

4. Jelaskan cara pengalamatan memori untuk mendapatkan alamat absolute?

5. Apa saja yang diperlukan untuk mempelajari bahasa rakitan/assembler?

6. Buatlah beberapa contoh bilangan dan konversikan sendiri bilangan tersebut menjadi

beberapa sistem bilangan.

Pertemuan Ke 3 (Tiga)

Tujuan Instruksional Khusus Mengerti dan Memahami sistem bilangan

Pokok Bahasan Interrupt dan Register

Sub Pokok Bahasan

- Pengertian Interrupt - Pengertian Register - Jenis-jenis Register

Daftar Pustaka1. Tuntunan Praktis Pemrograman Assembly,

Hartono Partoharsojo2. Pemrograman dengan Bahasa Assembly,

Susanto3. Microprocessor Programmer’s, referensi Intel Co

Interrupt dan RegisterPengertian Interrupt

Uky Yudatama, S.Si, M.Kom 6

Page 7: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

Interrupt atau interupsi adalah proses dalam komputer untuk meminta dilayani oleh

mikroprosesor sesuai dengan tingkat prioritasnya yang telah diatur sedemikian rupa oleh

sistem hardware computer.

CPU banyak melaksanakan routin untuk melakukan pelayanan pemrosesan ataupun

koordinasi kepada IC penunjang atau chipset dan peripherals pada saat diperlukan. Sehingga

CPU dapat melakukan operasi dengan 2 cara yaitu :

1. Operasi dengan polling2. Opreasi dengan interrupt

Operasi dengan polling berarti CPU selalu terus menerus menanyakan/ memantau ke tiap-tiap

komponen penunjang satu persatu meskipun komponen itu sedang tidak memerlukan

pelayanan.

Sedangkan operasi interrupt atau interupsi dilakukan oleh tiap-tiap komponen kepada CPU

bilamana memerlukan pelayanan pemrosesan, sehingga CPU tidak terus-menerus

menanyakan /memantau komponen itu. Setiap interupsi yang datang di kontrol oleh interrupt

controller di luar CPU. Dalam keadaan CPU terkena interupsi, maka CPU untuk sesaat

menghentikan kegiatan pelayanan utama dan beralih melayani komponen yang

menginterupsinya. Setelah selesai dilayani CPU kembali melakukan pelayanan utamanya.

Cara interupsi sangat meningkatkan effisiensi operasi CPU dan melakukan tugasnya dengan

cepat.

Interupsi dapat dilakukan dengan cara hardware dan software, sehingga CPU dapat menerima 3 macam interupsi antara lain :

1. Interupsi software (instruksi INT nH n= bilangan 00H s/d FFH)2. Non Maskable Interrupt (Interupsi hardware dimana interupsi ini mutlak tidak dapat

dicegah karena berasal dari sistem board atau IC.3. Maskable Interrupt (berasal dari hardware melalui pin INTR) yang dapat ditutup atau

dicegah dengan instruksi CLI berasal dari interupsi perangkat lunak.

Interupsi software terdiri dari 256 dan diberi nomor 00H hingga FFH. Alamat awal masing-

masing program pelayanan terdiri dari 4 byte, 2 byte untuk Code Segment dan 2 byte untuk

Instruction Pointer.

Dalam pemrograman assembler kita dapat melakukan interupsi secara software dengan

perintah INT yang dapat dilihat dalam tabel interupsi.

Interrupt Software dalam PC terbagi dua yaitu :

1. Interrupt BIOS (Basic Input Output Sistem)2. Interrupt DOS (Disk Operating Sistem)

Interrupt BIOS diwujudkan dalam bentuk interupsi software berjumlah 32 dan akses pelayanannya tinggal memerintahkan dengan instruksi INT nH asal parameternya diwajibkan telah terpenuhi dahulu. INT nH terdiri dari 00H sampai 1FH yang disusun berurutan dan diberi servis number (nomor pelayanan) tersendiri.

Uky Yudatama, S.Si, M.Kom 7

Page 8: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

Interrupt DOS merupakan interupsi dari software Sistem Operasi terdiri dari INT 20H untuk kembali ke DOS dan INT 21H untuk operasi Input/Output.

Pengertian RegisterRegister tidak dapat dilepaskan dari mikroprosessor, sebab pada mikroprosessor terdapat

register yang berfungsi untuk menyimpan sementara hasil dari tahapan operasi arithmetika dan

logika pada mikroprosessor. Register dalam bahasa rakitan menggunakan real mode memory

yang sesuai dengan mikroprosessor Intel generasi 8088 s/d Pentium.

Register yang terdapat pada mikroprosessor Intel terdiri dari :

1. General purpose register (register serbaguna) 2. Pointer register (register pointer)3. Index register (register indeks)4. Segment register (register segment)5. Flag register (register status).

Semua register di atas lebarnya 32 bit, kecuali register segment (CS, DS, ES, SS, FS dan GS)

hanya 16 bit. Register 32 bit dapat digunakan sebagai register 16 bit, kecuali register General

purpose register dapat dibagi menjadi 8 bit (AL,AH, BL, BH, CL, CH, DL dan DH) yang berasal

dari 16 bit (AX, BX, CX, DX). Register 32 bit diberi kode di depan register dengan E misalnya:

EAX, EBX, ECX dan EDX.

Macam-macam Jenis dan Fungsi RegisterBerikut ini jenis dan fungsi dari masing-masing Register yaitu :

1. General Purpose Register (Register Serbaguna)Register untuk keperluan umum yang terdiri atas :

a. Register AX (Accumulator register) berfungsi sebagai tempat:Sementara hasil suatu operasi arithmetika atau logika (AL, AH, AX dan EAX) Memasukkan nomor layanan interupsi,

untuk keperluan pemesanan sebuah layanan interupsi (register AH). Menyimpan bilangan yang dikalikan (reg

AL, AX, EAX) dan setengan bagian terkecil (LSB) dari hasil perkalian (register DX-AX dan EDX-EAX).

Menyimpan setengah bagian terkecil(LSB) sebuah bilangan dibagi (DX-AX dan EDX-EAX) dan hasil bagi (AL, AX, EAX).

b. Register BX (Base Register) Base register adalah register untuk menyimpan alamat offset data yang terletak

di memori (BL, BH, BX dan EBX)

c. Register CX (Counter Register) Counter register adalah register serbaguna yang berfungsi sebagai:

Pencacah untuk operasi loop (CX dan ECX)

Pencacah untuk operasi shift dan rotate (CL)

Uky Yudatama, S.Si, M.Kom 8

Page 9: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

Pencacah (counter) untuk operasi string (CX)

d. Register DX (Data register) Data register adalah register serbaguna yang berfungsi sebagai :

Penyimpan hasil perkalian 16 bit (DX-AX) dan 32 bit (EDX-EAX). Penyimpan hasil pembagian (DX-AX dan EDX-EAX) Penyimpan data hexadesimal (kode ASCII) di reg DL untuk dicetak di layar

monitor.

2. Pointer Register

Register ini untuk menunjukkan alamat sebuah data di lokasi memori, dipakai saat operasi perpindahan data (dari/ke memori), operasi stack (PUSH/POP) dan penunjukkan alamat suatu instruksi. Berikut adalah macam-macam pointer register: SP (Stack Pointer) dan ESP, BP (Base Pointer) dan IP (Instruction Pointer).

3. Index Register

Sama dengan pointer register, sering digunakan untuk menunjukkan alamat sebuah data di lokasi memori pada operasi string. Macam-macam register Index adalah : SI (Source Index), DI (Destination Index).

4. Segment Register

Segment register membentuk alamat memori untuk data. Pada operasi real mode

suatu segment register akan berbeda dengan segment register pada operasi

protected mode. Yang termasuk ke dalam segment register antara lain :

Code segment -> untuk menunjukkan alamt instruksi berikutnya. Data segment -> untuk menunjukkan alamat data pada transfer register Extra segment -> register tambahan untuk operasi string Stack segment -> dengan SP u/ menunjukkan stack dan memanggil suatu

prosedur (CALL) dan mengarah ke program utama (RET). FS dan GS register -> register tambahan u/ segmen memori yang besar.

5. Flag Register

Berfungsi untuk menunjukkan status (keadaan) sesaat dari mikroprosessor. Bit-bit pada flag akan mengalami perubahan, tergantung proses yang baru saja berlangsung. Adapun kode bit yaitu sebagai berikut : C (carry) -> 1=ada carry out 0= tdk ada carry out P (Parity) -> 1=paritas genap 0= paritas ganjil A (auxxiliary carry) -> 1=ada carry 0=tdk ada carry Z (zero) -> 1=hasilnya nol 0=hasilnya bukan nol S (sign) -> 1=hasilnya negatif 0=hasilnya positif T (trap) -> bila diset 1 dimungkinkan melakukan debugging. I (interrupt) -> 1= pin INTR enable 0=pin INTR disable D (direction) -> 1=cacahan turun 0=cacahan naik (Overflow) -> menunjukkan adanya kelebihan kapasitas atau tidak IOPL (input-output privalege level) -> untuk protected mode NT (nested task) -> indikasi dari penggabungan dengan operasi lain. RF (resume) -> untuk debugging VF (Virtual mode) -> untuk operasi virtual pada protected mode AC (alignment check) -> untuk data word dialamati ke memori

Uky Yudatama, S.Si, M.Kom 9

Page 10: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

Register merupakan tempat menyimpan data sementara yang berada dalam CPU.

Register terdiri atas 5 bagian yaitu : General Purpose Register, Pointer Register, Index

Register, Segment Register, Flag Register.

Fungsi setiap register bermacam-macam sesuai peruntukannya yang telah diatur oleh

pembuat mikroprosesor.

TUGAS

1. Jelaskan pengertian Interupt?

2. Jelaskan cara-cara CPU melakukan operasi routin terhadap komponen pendukung?

3. Sebutkan macam-macam interrupt pada pemrograman bahasa rakitan?

4. Jelaskan pengertian Register dan sebutkan macam-macam register?

5. Jelaskan semua fungsi setiap register ?

6. Mengapa register dipakai dalam pemrograman bahasa rakitan/ assembler?

Pertemuan Ke 4 (Empat)

Tujuan Instruksional Khusus Mengerti dan Memahami Pembuatan Program Pokok Bahasan Perlengkapan Bahasa Rakitan

Sub Pokok Bahasan

- Compiler dan Linker- Perbedaan Program Com dan Exe- Label dan Komentar- Perintah MOV

Daftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly, Hartono Partoharsojo

2. Pemrograman dengan Bahasa Assembly, Susanto

3. Microprocessor Programmer’s, referensi Intel Co

Uky Yudatama, S.Si, M.Kom 10

Page 11: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

Perlengkapan Bahasa RakitanUntuk membuat bahasa rakitan diperlukan perlengkapan yang merupakan software antara lain

dari DOS berupa Debug.COM atau dari Borland International berupa Turbo Assembler atau

program lainnya. Khusus untuk membuat program dengan Turbo Assembler maka

perlengkapannya terdiri dari : Compiler dan Linker yang compatible dengan computer PC

XT/AT/Pentium dan processor Intel, AMD, Cyrix.

Compiler dan Linker

Pada pemrograman assembler dikenal istilah Compiler merupakan suatu program yang dapat

mengubah suatu file berextensi .ASM (assembler) menjadi file Object berekstensi .OBJ. Compiler

ini juga dapat memberitahukan isi suatu program yang akan dikompilasi apakah mengandung

kesalahan (error) per baris atau perintah yang tidak sesuai. Compiler pada bahasa rakitan

khususnya Turbo Assembler menggunakan TASM.EXE. Source program yang dikompile dengan

compiler TASM dibuat dengan teks editor DOS atau Windows dan disimpan dengan nama

file .ASM di directori yang berisi TASM.EXE agar lebih mudah dalam mengkompilasinya.

Cara mengkompilasi program sumber (source program) menjadi program objek adalah :

TASM (nama file .ASM) (nama file .OBJ)

Contoh:

LATIH1.ASM dikompile dengan TASM.EXE di directory A menjadi :

A>TASM LATIH1.ASM LATIH1.OBJ (enter)

atau

A>TASM LATIH1 (enter)

Maka di layar tampak:

Turbo Assembler Version 2.0 Copyright (c) 1988 by Borland International

Assembling file: LATIH1.ASM Error messages: None Warning messages: None Remaining memory: 16k

Jika kita ingin membuat file objek dari source program assembler disertai dengan nomor

kesalahan yang mungkin terjadi pada baris program (file .LST), maka kita dapat memberi

perintah sebagi berikut:

Uky Yudatama, S.Si, M.Kom 11

Page 12: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

A>TASM /L nama_file.ASM (enter)

Untuk membuka file .LST kita harus menjalankan teks editor dan membuka file .LST A>Edit nama_file.LST (enter)

Sedangkan Linker merupakan program yang dapat mengubah file Objek menjadi file COM atau

EXE. Program Linker dapat mengkonversi file objek yang berupa relocatable object code yang

berupa bahasa mesin yang secara relative masih harus ditepatkan kedudukannya dan

disesuaikan dengan aturan DOS.

Program pelayanan Linker pada Turbo Assembler adalah TLINK.EXE

Penggunaan linker TLINK.EXE mernghasilkan file dengan nama file berekstensi COM atau EXE

yang terdiri dari kode bahasa mesin yang telah pasti penempatannya sehingga dapat disimpan di

memori (RAM) untuk melaksanakan program. Semua proses assembly dan semua proses link

harus tidak ada kesalahan artinya error harus 0. Jika masih ada error program harus diedit

dengan membuka source program (file .ASM).

Untuk menjalankan file yang telah dilinker dengan TLINK.EXE, maka langsung dapat dieksekusi

dengan mengetik nama file di depan prompt DOS atau di run melalui Windows.

Cara melakukan linker pada sebuah objek program (.OBJ) menjadi program COM atau EXE

adalah : TLINK /T (nama file .OBJ) -> untuk menjadi file berekstensi OBJ

atau TLINK (nama file .OBJ) -> untuk menjadi file berekstensi .EXE

Perbedaan file COM dan EXEProgram COM adalah salah satu jenis executable program. Ada beberapa sifat antara COM

dengan EXE. Perbedaan sifat (kelebihan dan kekurangan) masing-masing adalah sebagai

berikut:

- Program COM :1. Relatif lebih kecil dibanding EXE2. Lebih cepat dibanding EXE3. Hanya menggunakan 1 segment 4. Ukuran file maksimal 64 KB5. Sulit mengakses data/prosedur di segment lain6. Dapat dibuat dengan Debug7. Source file tidak boleh menggunakan referensi segment tertentu8. Source file tidak boleh memakai data segment9. Source file tidak boleh memakai stack segment10. Harus diawali dengan ORG 100H, artinya pada Code segment yang dipilih,

executable code ahrus mulai di CS:0100

- Program EXE :1. Relatif lebih besar dibanding COM2. Lebih lambat dibanding dengan COM3. Bisa menggunakan lebih dari 1 segment4. Ukuran berkas tidak terbatas (sesuai kemampuan memori)5. Mudah mengakses data/prosedur di segment lain

Uky Yudatama, S.Si, M.Kom 12

Page 13: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

6. Tidak dapat dibuat dengan Debug dari DOS.7. Source file boleh memilih memakai segment tertentu.8. Source file boleh memakai data segment9. Source file boleh memakai stack segment10. Tidak perlu menggunakan ORG 100H untuk setiap Code segment.

Dari perbandingan tersebut terlihat bahwa program COM lebih sederhana dibanding program

EXE.

Baris-baris instruksi program dikenal dengan nama Mnemonic, ditulis dan disimpan dalam file

berekstensi .ASM misalnya: Coba1.ASM

Label dan KomentarLabel pada program merupakan address memori yang diberi nama unik misalnya :

Pada alamat 0000:0400 akan diberi nama label Data_BIOS. Maka susunan penulisan Label

dalam pernyataannya adalah :

SEGMENT AT 0000H ORG 0400HData_BIOS LABEL WORD

Atau jika kita ingin memulai suatu program dan diberi Label MULAI maka penulisannya adalah::

Code Segment Assume CS: Code ORG 100H

MULAI: ……….… …………. Label yang dibuat untuk pengarah data (directive) sering digunakan adalah EQU singkatan dari

EQUate. Kegunaannya untuk memberi nama pada angka atau konstanta yang dianggap penting.

Contohnya:

ANGKA EQU 0B800H ; 0B800H diberi nama ANGKAKolom EQU 80 ; angka 80 diberi nama Kolom

Sedangkan komentar pada program dibuat hanya sebagai catatan atau remark yang tidak berarti

apa-apa dan tidak dieksekusi oleh CPU. Komentar pada program diberi tanda titik koma (;) diberi

kata-kata atau kalimat tentang program. Misalnya:

; Program ini dibuat dengan Turbo Assembler (komentar)

; Author by :

; Date :

Uky Yudatama, S.Si, M.Kom 13

Page 14: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

Code segment

Assume Cs: Code

Org 100h

Mulai: (merupakan suatu Label)

Perintah MOVPerintah ini merupakan perintah dasar pemrograman bahasa rakitan untuk memindahkan data

dari lokasi asal ke lokasi tujuan berupa register atau lokasi memori.

Instruksinya (mnemonic) adalah MOV dengan sintaks:

MOV lokasi tujuan, lokasi asal

Contoh:

MOV CX, 05 ; angka 5 disimpan di register CX

MOV AX, 005AH ; angka 005AH disimpan di AX

MOV BX, AX ; isi AX disimpan ke BX

MOV [200], BX ; isi BX disimpan di lokasi memori 200

MOV [BX], [200]; isi data di lokasi memori 200 disim-

pan di alamat BX.

Untuk membuat program bahasa rakitan /assembler memerlukan perlengkapan berupa

software antara lain: DOS dengan DEBUG.COM atau TURBO ASSEMBLER dengan

TASM.EXE dan TLINK.EXE

Perlengkapan lainnya adalah Teks Editor berupa EDIT.COM, SK.COM (Side Kick) atau

Notepad pada Windows.

Membuat program COM dapat menggunakan 2 cara yaitu dengan Debug pada DOS

atau dengan Turbo Assembler.

Label pada program merupakan nama yang dapat mewakili alamat memori (memory

address), sebagai directive (pengarah), start program, prosedur atau keperluan

lainnya.

Komentar merupakan tanda titik koma pada program yang tidak akan dieksekusi hanya

keterangan tentang program atau baris program.

Perintah MOV merupakan perintah dasar dalam bahasa rakitan yang dipakai untuk

Uky Yudatama, S.Si, M.Kom 14

Page 15: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

mentransfer data angka, register, alamat memori (lokasi memori)

TUGAS

Cobalah untuk mengenal beberapa perlengkapan bahasa rakitan

Cobalah untuk membandingkan file COM dengan file EXE dilihat dari isi program dan

kapasitasnya

Buatlah macam-macam Label dan komentar pada suatu program assembler

Pertemuan Ke 5 (Lima)

Tujuan Instruksional KhususMengerti dan Memahami metode membuat program COM.

Pokok BahasanMembuat program COMMencetak Huruf

Sub Pokok Bahasan

- Model Program COM Pembuatan dengan DEBUG Pembuatan dengan Turbo Assembler (TASM)- Mencetak huruf / Membuat kalimat- Operasi Loop- Mencetak beberapa karakter

Daftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly, Hartono Partoharsojo

2. Pemrograman dengan Bahasa Assembly, Susanto

3. Microprocessor Programmer’s, referensi Intel Co

Membuat Program COMModel Program COM

Program yang berekstensi COM (Command) merupakan program yang berisi perintah

assembler berupa instruksi mnemonic yang dapat ditulis dengan Debug atau Turbo Assembler.

Struktur model program COM yang dibuat dengan Turbo Assembler bisa dengan 2 model

yaitu:

Model 1:

Title Nama_program ;judul program Makro MACRO ;nama makro -------- -------- } isi makro berada (bila ada)

Uky Yudatama, S.Si, M.Kom 15

Page 16: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

ENDM ;akhir makroCode SEGMENT ;(nama label segment) ASSUME CS: Code ;(register CS berisi label segment) ORG 100h ;(origin 100h menuju ke alamat offset 100h)

MULAI: --------- ;(label mulai) --------- ; isi program --------- INT 20h ; berhenti dan kembali ke DOSCode ENDS ; akhir penulisan program di segment END MULAI ; akhir dari isi program

Model 2:

Bentuk struktur program di bawah ini lebih ringkas dibanding dengan model 1 yaitu:

.model small .code org 100h ;program dimulai pada alamat 100h

MULAI: --------- ;(label mulai) --------- ; isi program --------- INT 20h ; berhenti dan kembali ke DOS END MULAI ;akhir program

Kita dapat mengganti model 1 dengan model 2 dimana pengetikan isi program sama dengan

model 1 di atas.

Pembuatan program dengan DebugProgram yang tersedia dalam PCDOS atau MSDOS berupa Debug.Com atau Debug.Exe,

Pengetikan program dapat langsung ditulis dalam program Debug.

Caranya :- Ketik Debug di depan prompt C atau A (debug.com ada di directory tersebut)

C> Debug (enter)-

- Langkah berikutnya adalah memasukkan baris-baris program dengan perintah A100 (assembly) di depan prompt debug ( _ )Perintah A100 berarti instruksi pertama akan diletakkan pada alamat offset 100h pada segment memori tersebut. -A100 (enter)xxxx : 0100 _

xxxx: adalah alamat segment dan 0100 adalah alamat offset dimana program akan ditempatkan mulai alamat tersebut..

Uky Yudatama, S.Si, M.Kom 16

Page 17: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

Ketiklah isi program bahasa rakitan (assembler) di depan alamat segment offset xxxx : 0100 misalnya:

xxxx : 0100 MOV DL,61 ;kode ASCII huruf a

: 0103 MOV AH,02 ;nomor pelayanan 02H

: 0105 INT 21 ;cetak di layar

: 0107 INT 20 ;kembali ke DOS

: 0109 _ (enter) ;menuju ke prompt debug

-

Alamat segment offset dari 0100 s/d 0109 akan keluar sendiri setelah kita mengetik program disertai dengan menekan enter.Setelah instruksi INT 20 tekan enter 2 kali dan program akan kembali ke prompt debug ( _ ).

- Menentukan panjang program pada debug dilakukan dengan mengisi register BX:CX. Terlihat dari mulai alamat offset awal 0100h dan alamat offset akhir 010Fh, sehingga dapat diperoleh panjang programnya adalah (0109h – 0100h) = 9 byte, maka register BX diisi dengan 0 dan register CX dengan 9. Jadi pada prompt Debug ketik RBX lalu isi 0, dan ketik RCX lalu isi dengan 9.-RBX (enter)BX 0000:0 enter-RCX (enter)CX 0000:9 enter

- Setelah selesai ditik perintah RCX kemudian memberi nama file dengan perintah N (name). Contoh : -N COBA1.com (enter)

- Untuk menyimpan program ke disket atau harddisk berikan perintah W (write) lalu enter.

- Menjalankan program harus memberi instruksi G (go) dan lihat hasilnya di layar. Bila program berjalan dengan benar (tidak ada kesalahan) komputer akan memberi komentar “Program terminated normally”. Selengkapnya contoh cara membuat program dengan Debug :C> debug (enter)

-A100 enter

xxxx : 0100 MOV DL,61

xxxx : 0103 MOV AH,02

xxxx : 0105 INT 21

xxxx : 0107 INT 20

xxxx : 0109

-rbx enter

BX 0000

:0 enter

-rcx enter

CX 0000

Uky Yudatama, S.Si, M.Kom 17

Page 18: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

:9 enter

-N coba1.com

-W

Writing 000F bytes

-G

a (hasil dari program assembler tampil huruf a di layar)

Program terminated normally

-

Pembuatan dengan Macro Assembler atau Turbo

Assembler.Adanya keterbatasan pembuatan program dengan Debug, maka kita dapat menggunakan

bantuan assembler compiler dengan Macro assembler atau Turbo Assembler (TASM.EXE dan

TLINK.EXE).

Untuk membuat program assembler dengan Turbo Assembler kita memerlukan source program

yang ditulis dengan teks editor (fasilitas untuk mengetik program). Teks editor dapat memakai

Edit.com, Side Kick (SK.com) pada DOS atau Notepad pada Windows dan lain-lain. Program

assembler dapat membuat file berekstensi COM atau berekstensi EXE

MENCETAK HURUFMembuat program untuk mencetak huruf dapat dilakukan dengan menyusun kode ASCII satu

persatu yang ditempatkan dalam register DL sebagai tempat menyimpan data yang akan

ditampilkan di layar dengan memanfaatkan nomor pelayanan interupsi INT 21H service 02H yang

disimpan dalam register AH.

Untuk membuat program COBA2.COM dengan Turbo Assembler, maka file harus diberi nama

COBA2.ASM yang diketik dalam teks editor yang ada yaitu :

Coba segment

Assume CS: Coba

Org 100h

MULAI: MOV AH,02H ; isi register AH dengan 02h untuk pelayanan

cetak huruf di layar

MOV DL,41H ; isi register DL dengan 41H kode ASCII

; huruf A

INT 21h ; cetak huruf di layar

INT 20h ; berhenti dan kembali ke DOS

Uky Yudatama, S.Si, M.Kom 18

Page 19: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

Coba ENDS

END MULAI

- Simpan file tersebut dengan nama COBA2.ASM- Compile nama coba2.asm dengan TASM.EXE dan di-link mengikuti langkah

pembuatan program selanjutnya sehingga menjadi COBA2.COM.

OPERASI LOOPMerupakan operasi pengulangan atau iterasi untuk digunakan dalam cacahan atau penampilan

karakter string berulang-ulang. Perintah ini memakai register CX sebagai penentu jumlah

cacahan atau jumlah pengulangan, diakhiri dengan perintah LOOP untuk lompat kembali

melakukan pengulangan.

Contoh program operasi loop dengan DEBUG :

xxxx : 0100 MOV CX,05 (enter) ;loop sebanyak 5 kali : 0103 MOV DL,61 ;kode ASCII huruf a : 0105 MOV AH,02 ;nomor pelayanan 02H : 0107 INT 21 ;cetak di layar : 0109 INC DL ;tambahkan isi DL dengan 1 : 010B LOOP 0107 ;kembali ke alamat 0107H : 010D INT 20 ;kembali ke DOS : 010F _ (enter) ;menuju ke prompt debug -

Contoh program operasi loop dengan TURBO ASSEMBLER :

Coba segment Assume CS: Coba Org 100hMULAI: MOV CX,0005H ; banyaknya loop 5 kali MOV DL,61H ; isi DL dengan kode ASCII huruf aULANG: INT 21h ; cetak huruf di layar INC DL ; tambahkan isi DL dengan 1 LOOP ULANG ; kembali ke label ULANG INT 20h ; berhenti dan kembali ke DOSCoba ENDS END MULAI

Mencetak beberapa hurufMencetak beberapa huruf dapat dilakukan dengan 2 cara yaitu :

Menyusun beberapa huruf dalam kode ASCII satu persatu yang setiap huruf disimpan di DL

Menggunakan operasi loop untuk mencetak beberapa huruf memakai instruksi INC untuk

menambah isi register dengan 1 sehingga nilai DL bertambah lagi untuk dicetak.

Contoh pembuatan beberapa huruf yang disusun satu persatu dengan DEBUG

C\Assembler> debug (enter)

Uky Yudatama, S.Si, M.Kom 19

Page 20: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

-A100 enterxxxx : 0100 MOV AH,02xxxx : 0103 MOV DL,41xxxx : 0105 int 21xxxx : 0107 MOV DL,42xxxx : 0109 INT 21xxxx : 010B MOV DL,43xxxx : 010D INT 21xxxx : 010F INT 20 xxxx : 0111 -rbx enterBX 0000:0 enter-rcx enterCX 0000:11 enter-N COBA2.COM-WWriting 0011 bytes-G ABC (tampilan ABC di layar)Program terminated normally

Untuk membuat beberapa huruf yang disusun satu persatu dengan Turbo Assembler, maka

program harus diketik dalam teks editor yang ada (EDIT atau SK) yaitu :

;Menyusun beberapa huruf kode ASCIICoba segment Assume CS: Coba Org 100h

MULAI: MOV AH,02H ; isi register AH dengan 02h untuk pelayanan cetak huruf di layar MOV DL,41H ; isi register DL dengan 41H kode ASCII ; huruf A INT 21h ; cetak huruf di layar MOV DL,42H ; isi register DL dengan 42H huruf B INT 21H ; cetak huruf di layar MOV DL,43H ; isi register DL dengan 43H huruf C INT 21h ; cetak huruf di layar INT 20h ; berhenti dan kembali ke DOSCoba ENDS END MULAI

- Simpan file tersebut dengan nama COBA3.ASM- Compile nama coba2.asm dengan TASM.EXE dan di-link mengikuti langkah pembuatan

program selanjutnya sehingga menjadi COBA3.COM.

Contoh pembuatan beberapa huruf memakai operasi loop dengan DEBUG

C\Assembler>debug (enter)

-A100 (enter)

xxxx : 0100 MOV CX,05 (enter) ;loop sebanyak 5 kali : 0103 MOV DL,61 ;kode ASCII huruf a

Uky Yudatama, S.Si, M.Kom 20

Page 21: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

: 0105 MOV AH,02 ;nomor pelayanan 02H : 0107 INT 21 ;cetak di layar : 0109 INC DL ;tambahkan isi DL dengan 1 : 010B LOOP 0107 ;kembali ke alamat 0107H : 010D INT 20 ;kembali ke DOS : 010F _ (enter) ;menuju ke prompt debug -RCX :F -RIP :100 -N COBA3.COM -W Writing 000F bytes -G abcde (tampilan ABC di layar) Program terminated normally

Untuk pembuatan beberapa huruf memakai operasi loop dengan TURBO ASSEMBLER kita

dapat memodifikasi dari program dengan Debug seperti contoh operasi loop di atas.

Langkah-langkah pembuatan program bahasa rakitan dengan Turbo Assembler sebagai berikut :

1. Buat source program dengan teks editor dan beri nama file berekstensi .ASM dan simpan didirektory yang berisi TASM.EXE dan TLINK.EXE.

2. Compile source program ASM dengan perintah compiler TASM dari Turbo Assembler menjadi Objek program (file akan berekstensi OBJ). caranya : C>TASM KAMPUS>ASM (enter)

3. Compile source program ASM dengan perintah compiler TASM dari Turbo Assembler menjadi Objek program (file akan berekstensi OBJ). caranya : C>TASM KAMPUS.ASM (enter)

4. Setelah menjadi coba1.obj, kita harus me-link berkas objek menjadi COM dengan perintah TLINK. Caranya : C>TLINK /t KAMPUS (enter)

5. Jika pada pengetikan TLINK tidak diberi tanda /t , maka objek program akan menjadi file berekstensi EXE.

6. Coba1.com dapat langsung dieksekusi dari DOS prompt untuk melihat hasilnya di layar monitor dengan mengetik C>KAMPUS (enter)

7. Jika terdapat kesalahan, Turbo Assembler akan memberi tahu letak kesalahan pada baris program dan diedit dengan membuka kembali teks editor dan file .ASM

8. Perbaiki program yang salah, kemudian dicompile ulang seperti langkah 2 dan 3.

Uky Yudatama, S.Si, M.Kom 21

Page 22: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

Membuat program COM dapat dengan Turbo Assembler dapat dilakukan dengan 2

model pilihan yaitu model 1 (Code segment) atau model 2 (Model Small).

Membuat program dengan debug harus diketik satu persatu, jika ada kesalahan maka

program harus diketik dari awal lagi.

Membuat program dengan Turbo Assembler jauh lebih baik, karena jika ada kesalahan

kita tidak perlu lagi mengetik ulang tinggal kita perbaiki program yang mengalami

kesalahan tadi melalui teks editor dan dicompile ulang.

Program mencetak huruf memakai kode ASCII yang disusun satu persatu dengan

memanfaatkan pelayanan interupsi INT 21H servive numer 02H.

Operasi Loop digunakan untuk melakukan pengulangan atau iterasi dan banyaknya

nilai pengulangan ditentukan oleh nilai register CX sebelumnya.

Program membuat beberapa huruf dapat disusun satu persatu dengan kode ASCII

atau dengan memanfaatkan operasi loop.

TUGAS

1. Buatlah program mencetak huruf nama sendiri dengan Debug dan Turbo Assembler

dengan menyusun kode ASCII untuk setiap hurufnya minimal 10 huruf.

2. Buatlah juga program mencetak kalimat bio data mahasiswa.

Pertemuan Ke 6 (Enam)

Tujuan Instruksional KhususMengerti dan memahami metode operasi arithmetika dalam program assembler.

Pokok Bahasan Operasi Arithmetika

Sub Pokok Bahasan

- Penambahan (ADD)- Pengurangan (SUB)- Pembandingan (CMP)- Perkalian (MUL)- Pembagian (DIV)

Daftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly, Hartono Partoharsojo

2. Pemrograman dengan Bahasa Assembly, Susanto

3. Microprocessor Programmer’s, referensi Intel Co

OPERASI ARITMATIKA

Uky Yudatama, S.Si, M.Kom 22

Page 23: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

Instruksi arithmetika meliputi: penambahan (addition), pengurangan (subtraction), pembandingan

(comparison), perkalian (multiplication), pembagian (division).

Aturan Penulisan Operasi Arithmetika (sintaks)

Penjumlahan (Addition)

a. Instruksi ADD -> ADD reg1, reg2 atau ADD reg, [alamat]

Hasil penjumlahan disimpan di reg1.

Contoh:

ADD AX, BX ;hasilnya disimpan di AX

b. Instruksi INC -> INC reg atau INC [alamat]

Data pada reg atau [alamat] bertambah 1

Contoh:

INC DX ;hasil DX = DX + 1

c. Instruksi ADC -> ADC reg1, reg2 atau ADC reg, [alamat]

Penjumlahan biasa yang hasilnya ditambah dengan bit carry. Hasilnya disimpan di

reg1.

Contoh:

ADC AH, AL ;AH=AH + AL + carry

Pengurangan (Subtraction)

a. Instruksi SUB -> SUB reg1, reg2 atau SUB reg, [alamat]

Hasil pengurangan disimpan di reg1.

Contoh:

SUB CX, BX ;hasilnya disimpan di CX

b. Instruksi DEC -> DEC reg atau DEC [alamat]

Data pada reg atau [alamat] akan bertambah 1

Contoh:

DEC CX ;hasil CX = CX + 1

Uky Yudatama, S.Si, M.Kom 23

Page 24: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

c. Instruksi SBB -> SBB reg1, reg2 atau SUB [alamat], reg

Pengurangan biasa yang hasilnya dikurangi dengan bit carry. Hasilnya disimpan di

reg1 atau [alamat].

Contoh:

SBB AH, AL ;hasil AH= AH – AL – carry

Pembandingan (CMP / Comparison)

Instruksi CMP -> CMP reg1, reg2 atau CMP reg, data

Membandingan isi reg1 dengan reg2 atau data.

Contoh:

CMP DL, BL ;bandingkan isi DL dengan BL

Perkalian (Multiplication)

Instruksi MUL -> MUL reg atau MUL [alamat]

Perkalian antara AL (8 bit) atau AX (16 bit) dengan isi reg atau [alamat],

hasilnya disimpan di AX (8 bit) atau DX-AX (16 bit).

Contoh: MUL DL ;isi AL (8 bit) dikali dengan DL, hasil di AX. MUL BX ;isi AX (16 bit) dikali dengan BX, hasil di DX-AX

Pembagian (Division)

a. Pembagian 8 bit -> DIV reg atau DIV [alamat]

Pembagian dividen (disimpan di AX) dengan divisor (reg 8 bit) atau data pada

lokasi memori, hasilnya disimpan di AL sisanya di AH.

Contoh:

DIV DL ;isi AX dibagi DL,hasil di AL sisanya di AH.

b. Pembagian 16 bit -> DIV reg (16 bit) atau DIV [alamat]

Pembagian dividen (disimpan di DX-AX) dengan divisor (reg 16 bit) atau data pada

lokasi memori, hasilnya disimpan di AX sisanya di DX.

Operasi arithmetika dalam bahasa rakitan ditulis dengan mnemonic ADD, SUB, INC,

DEC, MUL, CMP dan DIV.

Penulisan perintah operasi arithmetika harus mengikuti aturan penulisan (sintaks)

Uky Yudatama, S.Si, M.Kom 24

Page 25: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

untuk yang bekerja pada kondisi 8 bit dan 16 bit.

Untuk pembuatan program arithmetika bisa dilakukan dengan mengetik pada debug

diakhiri dengan INT 20. Hasil proses dilihat pada saat kita mengetik perintah T (Trace)

dan D (data alamat) di depan prompt debug (-). Angka-angka yang tertera pada setiap

register dicatat pada tabel AX, BX, CX dan DX.

TUGAS

Buatlah beberapa contoh program penambahan, pengurangan, pembandingan, penambahan

dengan satu, pengurangan dengan satu, perkalian dan pembagian (8 bit dan 16 bit).

Program dibuat dengan debug dan hasilnya dites dan diuji dengan perintah T (trace) pada

setiap prompt debug.

Pertemuan Ke 7 (Tujuh)

Tujuan Instruksional KhususMengerti dan Memahami Pointer dan fungsi bit dalam operasi logika dan pergeseran bit.

Pokok Bahasan Operasi Logika dan Pergeseran Bit

Sub Pokok Bahasan

- Operasi/Gerbang NOT- Operasi/Gerbang AND- Operasi/Gerbang OR- Operasi/Gerbang XOR- TEST- SHL & SHR- ROL & ROR

Daftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly, Hartono Partoharsojo

2. Pemrograman dengan Bahasa Assembly, Susanto3 Microprocessor Programmer’s, referensi Intel Co

OPERASI LOGIKA DAN PERGESERAN BITOperasi NOT dan NEG -> NOT/NEG reg atau NOT/NEG [alamat]Seluruh bit pada isi register atau [alamat] yang diberi NOT akan di-NOT-kan sedangkan jika

diberi NEG seluruh bit akan menjadi komplemen-2

Contoh:

Uky Yudatama, S.Si, M.Kom 25

Page 26: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

NOT CL ;isi CL di-NOT-kan

NOT [BP] ;isi di [alamat] BP akan di-NOT-kan

NEG CL ;isi CL di-NEG-kan (komplemen-2)

Operasi AND -> AND reg1, reg2/data atau AND reg, [alamat]

Register 1 akan di-AND-kan dengan register 2 atau data atau [alamat]Contoh:

AND CL, 45h ;isi CL di-AND-kan dengan 45h

AND AX, BX ;isi AX di-AND-kan dengan BX

AND BL,[250] ;isi BL di-AND-kan dengan isi di lokasi 250h

Operasi OR -> OR reg1, reg2/data atau OR reg, [alamat]Register 1 akan di-OR-kan dengan register 2 atau data/[alamat].

Contoh:

OR DH, 25h ;isi DH di-OR-kan dengan 25h

OR CX, BX ;isi CX di-OR-kan dengan BX

Operasi XOR -> XOR reg1, reg2/data atau XOR reg, [alamat]Register 1 akan di-XOR-kan dengan register2 atau data/[alamat]

Contoh:

XOR BL, 25h ;isi BL di-XOR-kan dengan 25h

XOR DX, BX ;isi DX di-XOR-kan dengan BX

Operasi TEST -> TEST reg1, reg2/data atau TEST reg, [alamat]Mirip dengan AND, hanya kedua register tidak berubah, yang berubah hanya bit-bit flag register.

Contoh:

TEST CL, 25h ;isi CL di-AND-kan dengan 25h tanpa mengubah isi CL.

Instruksi SHL (Shift Left) -> SHL reg, CLIsi register di geser ke kiri sebanyak nilai CL.

Contoh:

Uky Yudatama, S.Si, M.Kom 26

Page 27: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

MOV CL, 2h

SHL AH, CL ;isi AH digeser ke kiri 2 langkah.

Instruksi SHR (Shift Right) -> SHR reg, CLIsi register di geser ke kanan sebanyak nilai CL. Contoh:

MOV CL, 2h SHR AH, CL ;isi AH digeser ke kanan 2 langkah

Rotasi (Rotate)Instruksi ini digunakan untuk memutar isi bit pada suatu register ke kiri atau ke kanan sesuai perintah yang diberikan.

Instruksi ROL (Rotate Left) -> ROL reg, CL

Isi register di rotasi ke kiri sebanyak CL

Contoh:

ROL AH, 2h ;isi AH dirotasi ke kiri 2 langkah

Instruksi ROR (Rotate Right) -> ROR reg, CL

Isi register di rotasi ke kanan sebanyak CL

Contoh:

ROR AH, 2h ;isi AH dirotasi ke kiri 2 langkah

Operasi logika merupakan operasi yang dilakukan oleh CPU pada bagian ALU

antara lain : AND, OR, NOT, XOR dan TEST.

Selain operasi logika di dalam CPU juga terdapat operasi Pergeseran dan

perputaran bit antara lain : SHL, SHR, ROL dan ROR.

Operasi ini sangat penting untuk memanipulasi dan mengkonversi bit-bit pada suatu

data.

TUGAS

1. Jelaskan penggunaan operasi NOT, AND, OR, XOR dan TEST.

2. Bagaimana cara memutar isi data hexadesimal dalam suatu register.

Uky Yudatama, S.Si, M.Kom 27

Page 28: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

3. Buatlah program pendek dengan DEBUG beberapa contoh operasi logika dan

pergeseran bit data.

Pertemuan Ke 8 (Delapan)

Tujuan Instruksional Khusus Mengerti dan Memahami Metode Pengalamatan Data.

Pokok Bahasan Mode Pengalamatan Data

Sub Pokok Bahasan- Register Addressing- Immediate Addressing- Direct Addressing- Direct Addresing with displacement- Indirect Addressing- Relative Addressing- Base Plus Index Addressing- Base Relative Plus Index Addressing

Daftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly, Hartono Partoharsojo

2. Pemrograman dengan Bahasa Assembly, Susanto3 Microprocessor Programmer’s, referensi Intel Co

MODE PENGALAMATAN DATA

Pengertian Pengalamatan DataPengalamatan data (addressing mode) adalah perpindahan data dari lokasi asal ke lokasi

tujuan.

Lokasi asal berupa register, lokasi memori atau data mentah (kode hexadesimal / bilangan).

Lokasi tujuan berupa register atau lokasi memori. Perintahnya memakai MOV.

Mode PengalamatanBeberapa mode pengalamatan antara lain:

> Register Addressing

Merupakan penyalinan data antar register (transfer ergister)

MOV reg1, reg2

Contoh:

Uky Yudatama, S.Si, M.Kom 28

Page 29: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

MOV AX, BX ; isi BX disalin ke AX

MOV SI, DI ; isi DI disalin ke SI

> Immediate Addressing

Merupakan penyalinan suatu data ke register

MOV reg, data

Contoh:

MOV AH, 02h ;02h disalin ke AH

MOV DL,’A’ ; karakter A disalin ke DL

MOV AX,’AB’ ;karakter AB disalin ke AX

> Direct Addressing

Merupakan penyalinan data dari lokasi memori tertentu ke accumulator (AX, AH atau AL) atau

sebaliknya.

MOV reg, [alamat]

MOV [alamat], reg

Contoh:

MOV AL, [0100h] ;isi data di alamat memori 100h ke AL

MOV [0250h], AX ;isi AX disalin ke alamat 0250h

> Direct Addressing with Displacement

Pada dasarnya sama dengan Direct Addressing, tetapi tidak hanya memakai register AL atau AX.

MOV reg, [alamat]

MOV [alamat], reg

Contoh:

MOV DL, [0100h] ;isi data di alamat memori 100h ke DL

MOV [0250h], DX ;isi DX disalin ke alamat 0250h

> Indirect Addresing

Penyalinan data secara tidak langsung dari lokasi alamat yang ditunjuk oleh BP, BX, DI atau SI

ke suatu register atau sebaliknya.

MOV reg, [reg]

MOV [reg], reg

Uky Yudatama, S.Si, M.Kom 29

Page 30: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

MOV [reg], [reg]

Contoh:

MOV EAX, [BX] ;isi data di lokasi memori [DSx10h+BX] ke register EAX

MOV [CX], AX ;isi data di AX disalin ke lokasi memori [DSx10h +CX}

> Relative Addressing

Merupakan penyalinan data dari lokasi memori yang ditunjuk oleh BP, BX atau SI dan DI

ditambah displacement ke register tujuan atau sebaliknya.

MOV reg, [base+disp]

MOV [base+disp], reg

Contoh:

MOV AX, [BX+10h]

MOV [BX+20h], CX

MOV [BP+30h], CH

MOV [DI+50h], DL

> Base Plus Index Addressing

Merupakan penyalinan data dari lokasi memori yang ditunjuk oleh BP atau BX ditambah isi index

(SI atau DI) ke register tujuan atau sebaliknya.

MOV reg, [base+index]

MOV [base+index], reg

Contoh:

MOV DX, [BX+SI]

MOV [BP+DI], AX

> Base Relative Plus Index Addressing

Merupakan penyalinan data dari lokasi memori yang ditunjuk oleh BP atau BX ditambah isi index

(SI/DI) + displacement atau sebaliknya.

MOV reg, [base+index+disp]

MOV [base+index+disp], reg

Contoh:

MOV DX, [BX+SI+10h]

Uky Yudatama, S.Si, M.Kom 30

Page 31: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

MOV [BP+DI+20h], AX

Pengalamatan data merupakan perpindahan data dari lokasi asal ke lokasi tujuan.

Setiap lokasi dapat berupa register, lokasi memori.

Perintah untuk melakukan mode pengalamatan data adalah MOV.

Penggunaan perintah MOV harus sesuai dengan aturan mode pengalamatan data.

TUGAS

1. Jelaskan pengertian tentang pengalamatan data!

2. Sebutkan macam-macam mode pengalamatan data!

3. Jelaskan pula masing-masing perbedaan mode pengalamatan data antara yang satu

dengan yang lainnya!

4. Buatlah beberapa contoh program pendek yang isinya terdapat beberapa mode

pengalamatan data!

Pertemuan Ke 9 (Sembilan)

Tujuan Instruksional Khusus Mengerti dan Memahami Metode Mencetak kalimat. Pokok Bahasan Mencetak kalimat dan Operasi string.

Sub Pokok Bahasan

- Mencetak dengan DOS- Operasi String- Mencetak Kalimat dengan atributnya- Pengaturan atribut

Daftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly, Hartono Partoharsojo

2. Pemrograman dengan Bahasa Assembly, Susanto3 Microprocessor Programmer’s, referensi Intel Co

Uky Yudatama, S.Si, M.Kom 31

Page 32: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

MENCETAK KALIMAT

Mencetak kalimat dengan DOSUntuk membuat kalimat, program harus diketik dengan teks editor (EDIT / NOTEPAD atau

SK.COM) dan harus mengikuti model 1 atau model 2 di atas menggunakan pelayanan interupsi

21H nomor servis AH=09H. Mencetak kalimat dalam sistem operasi DOS memerlukan tambahan

misalnya letak posisi kalimat berada pada baris dan kolom tertentu, sehingga kita harus

memakai pelayanan interupsi INT 10H nomor servis AH=02H dan AL=0 yang berfungsi mengatur

posisi kalimat di layar. Nilai baris dan kolom harus dimasukkan ke dalam register DH (baris) dan

register DL (kolom). Total baris di layar adalah 24 dan total kolom di layar adalah 80. Untuk

mencetak kalimat di tengah layar, maka barisnya adalah 12, sedangkan kolomnya disesuaikan

dengan jumlah kalimat yang akan dicetak.

Isi kalimat disimpan dalam label misalnya KALIMAT dengan diberi spesifikasi data berupa DB

(define byte) yang diproses dalam byte diawali dan diakhiri dengan tanda ‘ (petik) dan pada akhir

tulisan diberi tanda dolar $ untuk batas tulisan.

Misalnya kalimat KAMPUS STMIK BANI SALEH BEKASI dicetak di layar, maka kita harus

mengikuti struktur program atau model 1 seperti contoh dibawah ini :

Coba segment Assume CS: Coba Org 100hMULAI: MOV AH,09H ; isi register AH dengan 09h untuk pelayanan cetak kalimat di layar MOV DX, OFFSET KALIMAT ; isi register DX dengan LABEL KALIMAT 16 BIT INT 21h ; cetak KALIMAT di layar INT 20h ; berhenti dan kembali ke DOSKALIMAT DB ’KAMPUS STMIK BANI SALEH BEKASI$’ ;data disimpan di labelCoba ENDS END MULAI

- Simpan file tersebut dengan nama KAMPUS.ASM- Setelah file disimpan dengan nama KAMPUS.ASM lalu dicompile dan di-link mengikuti

langkah pembuatan program selanjutnya sehingga menjadi KAMPUS.COM.

Atau dapat juga membuat program kalimat dengan bentuk model 2 yang lebih ringkas berikut ini:

.model small .code org 100h ; program dimulai pada alamat 100h

MULAI: MOV AH,09H ; isi register AH dengan 09h untuk ; pelayanan cetak kalimat di layar MOV DX, OFFSET KALIMAT ; isi register DX dengan LABEL ; KALIMAT 16 BIT

Uky Yudatama, S.Si, M.Kom 32

Page 33: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

INT 21h ; cetak KALIMAT di layar INT 20h ; berhenti dan kembali ke DOSKALIMAT DB ’KAMPUS STMIK BANI SALEH BEKASI$’ ;data disimpan di labelEND MULAI ; akhir program

Contoh 2:

.model small .code org 100h MULAI: ; mencetak kalimat di tengah layar MOV AH,02H MOV AL,0 MOV BH,0 MOV DH, 12 MOV DL, 30 INT 10H MOV AH, 09H MOV DX, OFFSET KALIMAT INT 21H INT 20HKALIMAT DB ‘STMIK BANI SALEH$’END MULAI

Tampilan kalimat di layar masih terlihat belum sempurna, karena tulisan yang ada di atas

sebelumnya tidak menggulung ke atas, sehingga layar perlu dibersihkan dengan CLS dari DOS

atau membuat program bersih layar sendiri dengan pelayanan interupsi INT 10H nomor servis

06H. Adapun penambahan program bersih layar sebelum kalimat dicetak di tengah layar adalah

sebagai berikut:

.model small .code org 100h MULAI: ; bersih layar MOV AH,06H XOR CX,CX MOV AL,0 MOV BH,07H ;background layar dasar hitam tulisan putih MOV DH,24 MOV DL,79 INT 10H ; mencetak kalimat di tengah layar MOV AH,02H MOV AL,0 MOV BH,0 MOV DH,12 MOV DL,30 INT 10H MOV AH,09H MOV DX, OFFSET KALIMAT INT 21H INT 20HKALIMAT DB ‘STMIK BANI SALEH$’END MULAI

Uky Yudatama, S.Si, M.Kom 33

Page 34: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

OPERASI STRING

String adalah jenis data yang terdiri atas kumpulan karakter, angka maupun simbol. Pada operasi

ini register SI dan DI punya peranan khusus.

SI dipakai untuk mencatat alamat dari sumber string, sedangkan DI digunakan untuk mencatat

alamat atau tempat hasil manipulasi string.

Perintah yang dipakai:

CLD, STD, CMPS, CMPSB, LODS, LODSB, LODSW, MOVS, MOVSB, MOVSW, REP, REPE,

STOS, STOSB

Pengkopian STRING

MOVS dipakai untuk mengkopi data dari DS:SI menuju ke ES:DI, Hasil yang dicopy dapat dicetak

ke layar.

Contoh:

.model small

.code

org 100h

MULAI: JMP START

KAL DB ‘STMIK BANI SALEH$’

BUFF DB 17 dup(?)

START: LEA SI, KAL ;pindahkan isi KAL ke register SI

LEA DI, BUFF ;pindahkan isi BUFF ke registrer DI

CLD ;Clear Direction Flag menentukan instruksi

;pada register SI dan DI secara otomatis

;bertambah 1 (diincrement)

MOV CX, 18 ;looping sebanyak 18 x

Ulang: MOVS ES:BUFF, KAL ;copy isi string KAL ke BUFF

LOOP Ulang ;kembali ke ulang

MOV AH, 09h

LEA DX, BUFF ;pindahkan isi BUFF ke register DX

INT 21h ;cetak isi DX ke layar

INT 20h

END MULAI

Uky Yudatama, S.Si, M.Kom 34

Page 35: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

Mencetak kalimat dengan atributnya

Untuk mencetak kalimat dengan atribut terdapt beberapa persyaratan antara lain:

1. Menggunakan fungsi dari BIOS melalui INT 10H

2. Nilai AX = 1300h

3. Nilai register BL merupakan nilai atribut yang ingin ditampilkan

4. Nilai register BH merupakan halaman tampilan

5. Nilai DL adalah posisi kolom layar yang akan dicetak

6. Nilai DH adalah posisi baris layar yang akan dicetak

Fungsi ini tidak mengenal batas tulisan “$” seperti INT 21H nomor service 09H sehingga kita

harus mengisi nilai CX sebanyak karakter dalam kalimat. Sedangkan register ES:BP digunakan

untuk mencatat alamat dari kalimat yang akan dicetak di layar.

Pengaturan atribut

Nilai atribut untuk mencetak kalimat di layar diatur agar mendapatkan hasil sesuai yang

diharapkan misalnya sebagai berikut :

Nilai atribut tulisan disimpan dalam register BL=10010101B

Nilai AX= 1300H untuk nomor service AH=13H dan AL=00H

Nilai BH=0 untuk halaman tampilan 0

Nilai DL=20 untuk posisi kolom di layar

Nilai DH=12 untuk posisi baris di layar

Nilai CX=35 untuk banyaknya kalimat yang dicetak di layar

Nilai di atas, kecuali untuk AX=1300H boleh diubah/dimodifikasi sesuai dengan permintaan

pemakai.

Contoh:

;Program untuk mencetak kalimat dengan atributnya

;Pengaturan atribut pada nilai BL=95H atau BL=10010101B

;halaman 0 pada BH

;baris 12 di layar

;kolom 20 di layar

.model small

.code

org 100h

MULAI: JMP AWAL

KAL DB ‘MENULIS KALIMAT DENGAN ATRIBUTNYA’

Uky Yudatama, S.Si, M.Kom 35

Page 36: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

AWAL:

MOV AX,1300H ;service 13H subfungsi AL=0

MOV BL,10010101B ;atribut tulisan

MOV BH,00 ;halaman tampilan

MOV DL,20 ;posisi kolom

MOV DH,12 ;posisi baris

MOV CX,35 ;banyak karakter yang akan dicetak

LEA BP, KAL ;ES:BP untuk meletakan alamat string

INT 10H

INT 20H

END MULAI

Program membuat kalimat menggunakan pelayanan interupsi 21H service number

09H dan menyimpan isi kalimat pada Label DB (Define Byte), DW (Define Word), DD

(Define Double Word), DQ (Define Quad Word).

Untuk pembuatan program mencetak beberapa kalimat yang berurutan ke bawah,

maka pada setiap label yang diberi tanda $ harus dibubuhkan angka 13, 10 untuk

turun baris dan ditempatkan pada kolom awal ( ,13,10,’$’).

Mencetak kalimat di layar dapat dilakukan dengan berbagai macam cara.

Penggunaan INT 10H untuk mengatur operasi layar agar mencetak kalimat menjadi

lebih teratur sesuai letak baris dan kolom di layar.

Operasi string digunakan untuk manipulasi string, peletakan alamat string,

pengcopian string ke buffer atau tempat sementara yang ditentukan oleh kita.

Salah satu cara mencetak kalimat di layar antara lain dengan atribut memanfaatkan

nomor pelayanan AH=13H INT 10H

Pengaturan atribut untuk mencetak di layar dipakai untuk menghasilkan tampilan

berupa kalimat yang disimpan dalam byte, word atau double word dengan

meletakkan string pada register ES:BP sebagai pencatat alamat string.

1. Buatlah program tampilan SELAMAT DATANG DI STMIK BANI SALEH di tengah layar.

2. Bagaimana cara melakukan pengkopian string menggunakan perintah MOVSB?

Uky Yudatama, S.Si, M.Kom 36

Page 37: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

3. Buatlah salah satu contoh program pengkopian string untuk dicetak dua kali!

4. Buatlah program mencetak kalimat dengan atributnya dimana kalimat tersebut

harus disertai warna dasar hitam tulisan merah.

Pertemuan Ke 10 (Sepuluh)

Tujuan Instruksional Khusus Mengerti dan Memahami operasi jump/lompatan dan operasi stack.

Pokok Bahasan Operasi Jump (Lompatan) Operasi Stack.

Sub Pokok Bahasan

- Pengertian operasi jump /lompatan- Jenis-jenis instruksi jump- Pengertian operasi stack

- Operasi perpindahan data selain MOV

Daftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly, Hartono Partoharsojo

2. Pemrograman dengan Bahasa Assembly, Susanto3 Microprocessor Programmer’s, referensi Intel Co

OPERASI JUMP (Lompatan)

Pengertian Operasi JumpInstruksi lompatan pada suatu program akan menyebabkan program melompati bagian tertentu

dan mengeksekusi instruksi yang dikehendaki. Ada 2 jenis instruksi dalam operasi jump yaitu:

lompat tak bersyarat dan lompat bersyarat.

Lompatan tak bersyaratInstruksi lompatan ini langsung menuju ke alamat memori yang dituju tanpa syarat apapun,

sehingga program langsung dapat kita arahkan menuju lokasi memori atau label dengan

perintah atau instruksi JMP

Aturan penulisannya : JMP lokasi memori/label

Contoh :

.model small .code org 100h MULAI: MOV AX, 1234H MOV BX, 4321H JMP TERUS TERUS: ADD AX, BX SUB AX,3

Uky Yudatama, S.Si, M.Kom 37

Page 38: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

JMP TERUS2 TERUS2: INT 20H END MULAI

Ada 3 jenis instruksi lompatan tak bersyarat yaitu:

Lompatan pendek (short jump) -> JMP SHORT disp yaitu melakukan lompatan maksimal sejauh 127 byte.Contoh:

JMP SHORT 04h ;melakukan lompatan sejauh 4 byte

Lompatan dekat (near jump) -> JMP disp_low disp_high yaitu melakukan lompatan lebih

panjang maksimal 32 Kb.Contoh:

JMP 0200h ;melakukan lompatan ke lokasi memori 200h

Lompatan jauh (far jump) -> JMP FAR iplow Cslow Cshigh yaitu melakukan lompatan ke seluruh daerah memori.Contoh:

JMP FAR nH ;melakukan lompatan jauh ke lokasi tertentu

Lompatan bersyarat

Yaitu lompatan pendek yang dilakukan ke seluruh daerah memori dalam segmen memori yang

sama dan terjangkau oleh operasi ini. Instruksi ini menggunakan CMP untuk membandingkan

kondisi yang dicek, sehingga akan melompat ke alamat yang dituju sesuai instruksi lompatan

bersyarat, dimana instruksi lompatan bersyarat antara lain :

JA (Jump if Above) ; lompat bila operand 1 > operand2 (bilangan tak bertanda) JAE (Jump if Above or Equal); lompat bila operand 1 >= operand2 (bilangan tak

bertanda) JB (Jump if Below) ; lompat bila operand 1 < operand2 (bilangan tak bertanda) JBE (Jump if Below or Equal); lompat bila operand 1 <= operand2 (bilangan tak

bertanda) JG (Jump if Greater); lompat bila operand 1 > operand2 (bilangan bertanda) JGE (Jump if Greater or Equal) ; lompat bila operand 1 >= operand2 (bilangan

bertanda) JL (Jump if Less) ; lompat bila operand 1 < operand2 (bilangan bertanda) JLE (Jump if Less or Equal) ; lompat bila operand 1 <= operand2 (bilangan bertanda) JC (Jump if Carry) ; lompat bila ada bawaan JNC (Jump if No Carry) ; lompat bila tidak ada bawaan JE atau JZ (Jump if Equal)/(Jump if Zerro) ; lompat bila operand 1 = operand 2 JNE atau JNZ (Jump if Not Equal)/(Jump if Not Zero); lompat bila operand 1 <>

operand 2 JO (Jump on Overflow) ; lompat bila terjadi overflow JNO (Jump if No Overflow); lompat bila tidak terjadi overflow JS (Jump On Sign) ; lompat bila negatif JNS (Jump if No Sign) ; lompat bila positif JP atau JPE (Jump on Parity)/(Jump if ParityEven) ; lompat bila berparitas genap

Uky Yudatama, S.Si, M.Kom 38

Page 39: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

JNP atau JPO (Jump if No Parity)/(Jump if Parity Odd); lompat bila berparitas ganjil JCXZ (Jump if CX is Zero) ; lompat bila CX=0 JECXZ (Jump if Equal CX is Zero); lompat bila ECX=0 (khusus 80486 ke atas)

Penulisan instruksi lompat bersyarat yang diawali dengan instruksi CMP yang berguna untuk

membandingkan isi register untuk dilompati sesuai kondisi.

Contoh 1:

MOV AX, 0010h ;isi AX dengan 10h

MOV BX, 0012h ;isi BX dengan 12h

106: CMP AX,BX ;bandingkan isi AX dengan BX

JE 10D ;bila sama lompat ke alamat 10D

INC AX ;bila tidak tambahkan isi AX dengan 1

JMP 106 ;kembali ke alamat 106

10D: ADD AX,3 ;tambahkan isi AX dengan 3

INT 20h ;kembali ke prompt DOS

Kita tinggal mengganti instruksi lompat sesuai kebutuhan, apakah memenuhi syarat (Y) atau

tidak memenuhi syarat (T).

Contoh 2:

.model small

.code

org 100h

MULAI: MOV BX, 0000H

ULANG3: MOV DL, 41H

ULANG2: MOV CX,0003H

ULANG1: MOV AH,02H

INT 21H

LOOP ULANG1

INC DL

CMP DL,5BH

JNE ULANG2

MOV DL,0DH

MOV AH,02H

INT 21H

MOV DL,0AH

INT 21H

INC BX

Uky Yudatama, S.Si, M.Kom 39

Page 40: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

CMP BX,000BH

JLE ULANG3

INT 20H

END MULAI

OPERASI STACK

Pengertian Operasi Stack

Stack (tumpukan) adalah bagian memori yang digunakan untuk menyimpan nilai dari register

hanya sementara saja. Pada stack digunakan pasangan SS:SP untuk menunjukkan lokasi dari

stack. Perintah yang digunakan adalah PUSH (menaruh ke dalam stack), dan POP (mengambil

data dari stack).

Instruksi PUSH untuk operasi stack

Merupakan instruksi untuk memasukkan data ke dalam stack (tumpukan). Data berasal dari data

mentah, register atau isi lokasi memori

Sintaks: PUSH reg

PUSH [lokasi memori]

PUSH data

Contoh:

PUSH BX ; menyimpan isi BX ke stack (16 bit) PUSH EAX ; menyimpan isi EAX ke stack (32 bit) PUSH [DI] ; menyimpan isi dari lokasi memori beralamat di [DSx10h+DI] ke stack PUSH 12h ; menyimpan data 12h ke stack

Instruksi POP

Merupakan instruksi untuk mengambil kembali data dari stack (kebalikan PUSH) ke dalam

register atau lokasi memori

Sintaks: POP reg

POP [alamat]

POPF ;mengambil isi stack dan ditempatkan di reg flag

Contoh:

POP BX ;mengambil isi stack dan ditempatkan di BX POP [DI] ;mengambil isi stack dan ditempatkan ke alamat DS:DI

Uky Yudatama, S.Si, M.Kom 40

Page 41: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

Berikut ini contoh program lengkap untuk operasi stack:

;Cara kerja stack.model small.codeorg 100hMULAI: JMP STARTKAL DB ‘STMIK BS$’TUKAR DB 13,10,’$’Stacks DW ?START: LEA DX, KAL MOV Stacks, DX MOV AH, 09h LEA DX, TUKAR INT 21h MOV DX,Stacks INT 21h INT 20hEND MULAI

Dari contoh program di atas kita modifikasi menjadi:

.model small

.codeorg 100hMULAI: JMP START KAL DB ‘STMIK BS$’ TUKAR DB 13,10,’$’START: LEA DX, KAL PUSH DX MOV AH,09h INT 21h LEA DX, TUKAR INT 21h POP DX INT 21h INT 20hEND MULAI

Instruksi PUSHF

Merupakan instruksi untuk memasukkan isi register flag ke dalam stack

Sintaks: PUSHF

Perpindahan data selain MOVBeberapa instruksi perpindahan data selain memakai MOV meliputi: PUSH, POP, XCHG, LEA,

perpindahan data string (LODS, STOS dan MOVS)

Aturan penulisan operasi perpindahan data (sintaks)

Uky Yudatama, S.Si, M.Kom 41

Page 42: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

Instruksi XCHG (exchange)

Berfungsi untuk menukarkan isi register dengan register lain atau isi register dengan isi lokasi

memori. Tidak berlaku untuk antar lokasi memori.

Sintaks: XCHG reg, reg

XCHG reg, [alamat]

Contoh:

XCHG AX, BX ;menukar isi AX dengan BX

XCHG DX, [DI] ;menukar isi DX dengan isi lokasi memori DI

XCHG [SI], CH ;menukar isi lokasi memori dengan CH

Instruksi LEA (Load Effective Address)

Berfungsi untuk mengambil alamat suatu data pada lokasi memori dan meletakkannya di register

16 bit.

Sintaks: LEA reg, [alamat]

LEA reg, variable

Contoh:

LEA BX, [DI] ;isi alamat di reg DI diambil dan disimpan di BX LEA BX, VAR1 ;isi alamat offset data dengan label VAR1 diambil dan

disimpan di BX

LEA AX, [SI] ;isi data di lokasi memori SI diambil dan disimpan

di AX

Instruksi LODS (Load String)

Berfungsi untuk memindahkan data string pada segment data yang alamat offsetnya ditunjukkan

oleh isi register SI ke accumulator (AL, AX) akan di-increment (+1) atau decrement (-1). Instruksi

ini ditambah dengan B bila memindahkan byte, W (word) atau D (double word).

Contoh:

LODSB ; data byte di lokasi memori SI dipindah ke reg AL

LODSW ; data word di lokasi memori SI dipindah ke reg AX

LODSD ; data doubleword di lokasi SI dipindah ke reg EAX

LODS DAT1 ;data label DAT1 dipindah ke AL (byte)

LODS DAT2 ;data label DAT2 dipindah ke AX (word)

LODS DAT3 ;data label DAT3 dipindah ke EAX (doubleword)

Uky Yudatama, S.Si, M.Kom 42

Page 43: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

Instruksi STOS (Store string)

Berfungsi memindahkan string pada AL, AX, EAX ke ekstra segment yang alamat offsetnya

ditunjukkan oleh isi DI (ES:DI)

Contoh:

STOSB ;isi AL dipindah ke lokasi memori DI

STOSW ;isi AX dipindah ke lokasi memori DI

STOS DAT1 ;isi AL dipindah ke label DAT1 di alamat DI

Instruksi MOVS (Move string)

Memindahkan isi string dari suatu lokasi memori ke lokasi memori yang lain berupa byte, word

atau double word dari data segment beralamat offset SI ke ekstra segment beralamat offset DI.

Contoh:

MOVSB ;isi lokasi memori berisi byte ke lokasi memori lain

MOVSW ;isi lokasi memori berisi word ke lokasi memori lain

MOVSD ;isi lokasi memori berisi double word ke lokasi lain

JMP (lompatan) merupakan instruksi untuk melompat ke bagian tertentu dan

mengeksekusi instruksi berikutnya.

Ada dua jenis lompatan yaitu lompatan tanpa syarat dan lompatan dengan syarat.

Lompatan tanpa syarat terdiri dari 3 yaitu : Short Jump, Near Jump dan Far Jump

Lompatan dengan syarat merupakan proses pengambilan keputusan atau operasi

percabangan dengan diikuti oleh instruksi CMP dan instruksi Lompat bersyarat, yaitu

melakukan perbandingan terlebih dahulu suatu isi register apabila telah memenuhi

syarat, maka lompatan bila dijalankan.

Ada 22 jenis lompatan bersyarat yang digabungkan dengan operasi logika.

Operasi perpindahan data selain MOV menggunakan instruksi antara lain : PUSH,

POP, XCHG, LEA, perpindahan data string (LODS, STOS dan MOVS).

Operasi stack sangat penting dipakai untuk menaruh isi data (PUSH) yang suatu

saat dapat diambil kembali dari stack (POP).

Perintah LEA DX, sama dengan perintah MOV DX,OFFSET sehingga merupakan

alternatif yang dapat dipilih untuk mencetak kalimat.

Uky Yudatama, S.Si, M.Kom 43

Page 44: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

TUGAS

1. Sebutkan 2 jenis operasi Jump dan berikan contohnya masing-masing!

2. Bagaimana cara melakukan lompatan dalam lompatan dengan memakai operasi loop?

3. Buatlah program lompatan bersyarat untuk membandingkan karakter tertentu!

4. Buatlah program mencetak kalimat dengan mengganti perintah MOV DX, OFFSET

dengan LEA DX.

Pertemuan Ke 11 (Sebelas)

Tujuan Instruksional KhususMengerti dan Memahami input data keybord berupada ASCII atau Extended.

Pokok Bahasan Input data dari Keyboard.

Sub Pokok Bahasan- Masukan satu karakter- Mendeteksi penekanan tombol- Masukan kalimat dari keyboard

Daftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly, Hartono Partoharsojo

2. Pemrograman dengan Bahasa Assembly, Susanto3 Microprocessor Programmer’s, referensi Intel Co

INPUT DATA DARI KEYBOARD

Masukan satu karakterMemasukan data/input data 1 karakter dapat kita buat dengan pelayanan interupsi 21H nomor

service 01H dalam register AH. Instruksi yang umum dipakai adalah:

MOV AH, 01H

INT 21H

Uky Yudatama, S.Si, M.Kom 44

Page 45: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

Data yang dimasukkan melalui penekanan tombol keyboard ini akan ditampung di register AL

berupa kode ASCII.

Contoh:

;Program input 1 karakter dari keyboard.model small.codeorg 100hMULAI: JMP STARTTanya db ‘Jawablah pertanyaan di bawah ini ! ‘,13,10 db ‘Apakah anda seorang laki-laki? (Y/T)’,13,10 db ‘Jawaban anda : $’Jawab1 db 13,10,’Anda adalah seorang laki-laki’,13,10,’$’Jawab2 db 13,10,’Anda adalah seorang wanita’,13,10,’$’

START: MOV AH, 09H LEA DX, Tanya INT 21hULANG: MOV AH, 01H ;input dari keyboard 1 huruf INT 21h CMP AL, ‘Y’ JE LAKI CMP AL, ‘y’ JE LAKI CMP AL, ‘T’ JE WANITA CMP AL, ‘T’ JE WANITA JMP ULANGWANITA: MOV AH,09H LEA DX,Jawab2 INT 21H JMP SELESAILAKI: MOV AH,09H LEA DX,Jawab1 INT 21HSELESAI: INT 20hEND MULAI

Mendeteksi penekanan tombol

Untuk mendeteksi adanya penekanan tombol tertentu dari keyboard digunakan input huruf

without echo. Ada tiga jenis input per huruf without echo yaitu:

Input without echo yang mengecek Ctrl Break/Ctrl C.

Untuk melakukan input yang mendeteksi Ctrl Break memakai INT 21H service 08H. Adapun

persyaratannya adalah:

Uky Yudatama, S.Si, M.Kom 45

Page 46: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

Nilai AH berisi 08H INT 21H

Nilai AH ini dapat dihentikan dengan Ctrl Break atau Ctrl C selama proses input

Data yang diinput ditaruh di register AL.

Input without echo yang tidak mengecek Ctrl Break/Ctrl C.

Untuk melakukan input yang tidak mendeteksi Ctrl Break atau Ctrl C, memakai INT 21H

service 07H di register AH. Cara pemakaiannya sama dengan AH=08H, perbedaannya

hanya pada saat komputer sedang berjalan misalnya penekanan tombol ctrl break akan

dibiarkan dan dianggap sebagai input.

Input without echo tanpa menunggu

Maksudnya adalah komputer tidak akan menunggu anda untuk menekan keyboard tetapi

input ini akan diambil dari keyboard buffer, dimana keyboard buffer akan diisi ketika komputer

sedang mengerjakan tugas lain. Jika ternyata keyboard buffer kosong, maka input without

echo tanpa menunggu tidak mengerjakan apa-apa. Adapun persyaratannya adalah sebagai

berikut:

Register AH diisi dengan service 06H INT 21H

Register DL harus berisi nilai FFH.

Hasil input akan diletakkan pada register AL.

Contoh:

;Program input 1 karakter without echo tanpa menunggu

.model small

.codeorg 100h

MULAI: JMP STARTKATA db ‘Kalimat ini akan dicetak terus $’

START: MOV AH, 09H LEA DX, KATA INT 21H MOV AH, 06H MOV DL,0FFH XOR AL, AL INT 21H CMP AL, ‘0’ JE AKHIR CMP AL, ‘q’ JNE MULAIAKHIR: INT 20H

END MULAI

Uky Yudatama, S.Si, M.Kom 46

Page 47: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

Masukan kalimat dari keyboard

Memasukan data/input data 1 kalimat dapat kita buat dengan pelayanan interupsi 21H nomor

service 0AH dalam register AH. Instruksi yang umum dipakai adalah:

MOV AH, 0AH

MOV DX, OFFSET variabel

INT 21H

Instruksi ini berfungsi untuk mengambil data ke dalam variable, data dalam kalimat dibaca satu

persatu oleh register AL dan disalurkan ke alamat/lokasi memori yang ditunjuk oleh register BX.

Hasilnya disimpan dalam register DX melalui sebuah variabel.

Panjang maksimal kalimat yang diinput harus mengikuti aturan pembuatan variable sebagai

batas karakter yang diinput dari keyboard yaitu:

Nama_variable db XX , ? , YY dup (?)

XX= Jumlah karakter yang akan diinput ditambah 1 untuk tombol enter

YY= Jumlah karakter yang dibaca berikut enternya

YY dup(?) berguna untuk menyatakan berapa tempat yang harus disediakan yaitu YY*1 tempat

kosong yang dapat mewakili tanda tanya (?).

DS:DX merupakan lokasi memori yang berisi segment dan offset awal suatu nama variable yang

akan diisi oleh data.

Contoh:

;Program input 1 kalimat

.model small

.codeorg 100h

MULAI: JMP STARTKATA db ‘Ketik data maksimum 14 karakter :$’DATA_MASUK db 15,?,15 dup(?)

START: MOV AH, 09H LEA DX, KATA INT 21H MOV AH, 0AH MOV DX,0FFSET DATA_MASUK INT 21H MOV BX,0FFSET DATA_MASUK INC BX MOV AL,[BX] INC BX XOR AH, AH ADD BX, AX MOV AL, 0 MOV [BX], AL MOV DX, OFFSET DATA_MASUK

Uky Yudatama, S.Si, M.Kom 47

Page 48: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

INC DX INC DXAKHIR: INT 20H

END MULAI

Isi data yang dimasukkan ke dalam register AL (1 karakter) dan register DX (1 word) dapat ditampilkan ke layar monitor setelah dipindahkan ke register DL yang dibaca satu persatu dari lokasi memori yang ditunjuk oleh register BX. Pada saat dipindahkan ke DL maka harus dilengkapi dengan nomor pelayanan INT 21H service 02H. Contoh:

MOVSB ;isi lokasi memori berisi byte ke lokasi memori lain

MOVSW ;isi lokasi memori berisi word ke lokasi memori lain

MOVSD ;isi lokasi memori berisi double word ke lokasi lain

MOVS DAT1, VAR1 ;isi label DAT1 ke VAR1

Operasi perpindahan data selain MOV menggunakan instruksi antara lain : PUSH,

POP, XCHG, LEA, perpindahan data string (LODS, STOS dan MOVS).

Setiap ada perpindahan data harus mengikuti ketentuan aturan penulisannya

(syntax).

Perintah LEA DX, sama dengan perintah MOV DX,OFFSET sehingga merupakan

alternatif yang dapat dipilih untuk mencetak kalimat.

Properti target mendefinisikan bagaimana halaman target dari sebuah link.

1.2.3.

Uky Yudatama, S.Si, M.Kom 48

Page 49: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

Pertemuan Ke 12 (Duabelas)

Tujuan Instruksional Khusus Mengerti dan Memahami metode pembuatan prosedur dan macro.

Pokok Bahasan Prosedur dan Macro.

Sub Pokok Bahasan - Membuat prosedur- Membuat macro- Menggabungkan prosedur & macro

Daftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly, Hartono Partoharsojo

2. Pemrograman dengan Bahasa Assembly, Susanto3 Microprocessor Programmer’s, referensi Intel Co

PROSEDUR DAN MACRO

Prosedur dan macro adalah fasilitas yang terdapat pada turbo assembler.

ProsedurProsedur adalah sekelompok instruksi yang dibangun untuk melakukan tugas-tugas tertentu agar

dapat memperpendek jumlah baris program. Prosedur dapat dipanggil secara berulang-ulang

oleh program utama dengan instruksi CALL.

Penggunaan prosedur dapat mengurangi jumlah alamat memori yang digunakan pada program.

Uky Yudatama, S.Si, M.Kom 49

Page 50: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

Kerangka Dasar prosedur:

Nama_prosedur PROC NEAR/FAR ;nama prosedur

----------

---------- Isi Prosedur

----------

----------

RET ;kembali ke program utama

Nama_prosedur ENDP ;akhir prosedur

PROC = Procedur RET= RETURN

NEAR = Lokasi prosedur dekat dengan program utama

FAR = Lokasi prosedur jauh dari program utama

Contoh:

.model small

.codeorg 100hMULAI: MOV CX,05h ;isi CX dilooping 5 kali MOV DL,’A’ ;Karakter A disimpan di DLULANG: CALL CETAK ;cetak di layar INC DL ;tambahkan isi DL dengan 1 LOOP ULANG ;kembali ke ULANGEXIT: INT 20h ;kembali ke DOSCETAK PROC NEAR ;prosedur CETAK MOV AH, 02h ;nomor servis 02H INT 21h ;cetak di layar RET ;kembali ke program utamaCETAK ENDP ;akhir prosedurEND MULAI

MACROHampir mirip dengan prosedur dan tidak perlu dipanggil dengan CALL dan RET. Hanya cukup dipanggil dengan mengeksekusi namanya. Macro mengenal parameter yang bersifat optional (boleh ada atau tidak), tergantung kebutuhan.Kerangka Umum:

Nama_makro MACRO [P1,P2] ;nama makro ......... ......... Isi makro ......... ENDM ;akhir makro[P1,P2] adalah parameter yang digunakan (optional)

Contoh 1:

;Program dengan MakroCETAK MACRO KAR

Uky Yudatama, S.Si, M.Kom 50

Page 51: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

MOV DL, KAR MOV AH, 02h INT 21h ENDM

.model small

.codeorg 100hMULAI: CETAK ‘A’ CETAK ‘B’ CETAK ‘C’ CETAK ‘D’ CETAK ‘E’EXIT: INT 20h

END MULAI

Contoh 2:

;Program Mencetak String (Kalimat)CETAK MACRO KAL LEA DX,KAL MOV AH, 09h INT 21h ENDM.model small.codeorg 100hMULAI: JMP STARTTULIS1 DB ‘Saya sedang belajar Assembler’,13,10 DB ‘Ternyata asyik juga$’TULIS2 DB ‘Materi sekarang tentang makro$’

START: CETAK TULIS1 CETAK TULIS2 INT 20hEND MULAI

Link dapat juga mengacu kepada alamat situs, misalnya http://www.google.co.id

Properti target mendefinisikan bagaimana halaman target dari sebuah link

ditampilkan, apakah _blank (menampilkan pada browser window baru), _parent

(menampilkan pada dokumen tempat frame berada), _self (menampilkan pada

browser aktif), atau _top (menampilkan pada halaman utama).

Uky Yudatama, S.Si, M.Kom 51

Page 52: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

1.2.3.

Pertemuan Ke 13 (Tigabelas)

Tujuan Instruksional Khusus Mengerti dan Memahami mode pengaturan layer.

Pokok Bahasan Operasi pada layar.

Sub Pokok Bahasan - Memori layar- Tampilan teks pada layar- Bentuk Kursor- Mode layar

Daftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly, Hartono Partoharsojo

2. Pemrograman dengan Bahasa Assembly, Susanto3 Microprocessor Programmer’s, referensi Intel Co

OPERASI PADA LAYAR MEMORI LAYAR

.model small

.code

org 100h

MULAI: -------

TAMPILAN TEKS PADA LAYAR

.model small

Uky Yudatama, S.Si, M.Kom 52

Page 53: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

.code

org 100h

MULAI: -------

POSISI KURSOR

.model small

.code

org 100h

MULAI: -------

MODE LAYAR

.model small

.code

org 100h

MULAI: -------

Link dapat juga mengacu kepada alamat situs, misalnya http://www.google.co.id

Properti target mendefinisikan bagaimana halaman target dari sebuah link

ditampilkan, apakah _blank (menampilkan pada browser window baru), _parent

(menampilkan pada dokumen tempat frame berada), _self (menampilkan pada

browser aktif), atau _top (menampilkan pada halaman utama).

1.2.3.

Uky Yudatama, S.Si, M.Kom 53

Page 54: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

Pertemuan Ke 14 (Empatbelas)

Tujuan Instruksional KhususMengerti dan Memahami pengaksesan port.Penanganan File.

Pokok BahasanAkses Port dan pengaktifan speaker.

Operasi File.

Sub Pokok Bahasan - Macam-macam Port- Pengaksesan alamat port- Penanganan File- Atribut File

Daftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly, Hartono Partoharsojo

2. Pemrograman dengan Bahasa Assembly, Susanto3 Microprocessor Programmer’s, referensi Intel Co

AKSES PORT Pengertian Port

Macam-macam Port

Pengaksesan alamat portPersyaratan untuk

Contoh program

.model small

.code

org 100h

MULAI: -------

Uky Yudatama, S.Si, M.Kom 54

Page 55: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

Penanganan File

A. Manajemen File- Membuat Directory/Subdirectory

Persyaratan untuk

Contoh program

.model small

.code

org 100h

MULAI: -------

- Menghapus Directory/SubdirectoryPersyaratan untuk

Contoh program

.model small

.code

org 100h

MULAI: -------

- Mengubah Directory/SubdirectoryPersyaratan untuk

Contoh program

.model small

.code

org 100h

MULAI: -------

B. Hapus FilePersyaratan untuk menghapus file

Contoh program

Uky Yudatama, S.Si, M.Kom 55

Page 56: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

.model small

.code

org 100h

MULAI: -

C. Atribut File Persyaratan untuk atribut file

Jenis atribut file pada DOS antara lain:- Read Only- Hidden- Sistem- Archive- Volume Label- Nama subdirectory

DOS menyediakan fungsi service number 43h INT 21h untuk mengatur atribut file dengan mode AL = 00 (melihat atribut file), AL = 01 (untuk mengubah atribut file) dan jenis atribut ditampung di CX yaitu nomor:

- 0 untuk file read only- 1 untuk file hidden (sembunyikan file)- 2 untuk file sistem- 3 untuk Volume label- 4 untuk Nama subdirectory- 5 untuk file archive

Read onlyPersyaratan untuk Read only:

Contoh program untuk read only (file yang tidak bisa dihapus)

.model small

.code

org 100h

MULAI: -------

Hidden filePersyaratan untuk Hidden file:

Contoh program untuk hidden file

.model small

.code

org 100h

MULAI: -------

ArchivePersyaratan untuk Archive file:

Contoh program untuk archive (file yang dapat dibaca dan dihapus)

Uky Yudatama, S.Si, M.Kom 56

Page 57: Handout Rakitan

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

.model small

.code

org 100h

MULAI: -------

Link dapat juga mengacu kepada alamat situs, misalnya http://www.google.co.id

Properti target mendefinisikan bagaimana halaman target dari sebuah link

ditampilkan, apakah _blank (menampilkan pada browser window baru), _parent

(menampilkan pada dokumen tempat frame berada), _self (menampilkan pada

browser aktif), atau _top (menampilkan pada halaman utama).

1.2.3.

Uky Yudatama, S.Si, M.Kom 57