Pertemuan Ke 1 (Satu)
Tujuan Instruksional Khusus Mengerti dan Memahami Assembler dan Sistem bilangan
Pokok Bahasan Pengenalan Bahasa Rakitan dan Sistem Bilangan
Pengenalan Bahasa Rakitan
Sistem bilangan biner
- Sistem bilangan oktal
Sub Pokok Bahasan
- Sistem bilangan desimal
- Sistem bilangan hexadesimal
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 Hexadesimal
2. Pengenalan Microprocessor
3. Sistem Memori dan Pengalamatan Memori
4. Interupt / Interupsi
5. Register
6. Instruksi Assembly atau Mnemonic
7. Mode pengalamatan data
8. Operasi-operasi pada assembler
9. Pembuatan program
Sistem Bilangan
Untuk 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
1
Uky Yudatama, S.Si, M.Kom
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:
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:
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
2
Uky Yudatama, S.Si, M.Kom
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 : 0123456789ABCDEF
Cara mengkonversi ke bilangan desimal sama dengan biner dan octal
Contoh:
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 PC
Pokok Bahasan Memori
- Pengertian Memori PC
- Pembagian Memori PC
Sub Pokok Bahasan
- Pengalamatan Memori PC
3
Uky Yudatama, S.Si, M.Kom
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Memori
Pengertian Memori
Merupakan 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
4
Uky Yudatama, S.Si, M.Kom
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 Memori
Merupakan 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:BX
Contoh: 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..
5
Uky Yudatama, S.Si, M.Kom
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)
6
Uky Yudatama, S.Si, M.Kom
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 :
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 :
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 :
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.
7
Uky Yudatama, S.Si, M.Kom
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 Register
Register 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.
8
Uky Yudatama, S.Si, M.Kom
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
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
9
Uky Yudatama, S.Si, M.Kom
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
- Compiler dan Linker
- Perbedaan Program Com dan Exe
Sub Pokok Bahasan - Label dan Komentar
- Perintah MOV
Hartono Partoharsojo
10
Uky Yudatama, S.Si, M.Kom
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Cara mengkompilasi program sumber (source program) menjadi program objek adalah :
Contoh:
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:
11
Uky Yudatama, S.Si, M.Kom
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
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
- Program EXE :
1. Relatif lebih besar dibanding COM
2. Lebih lambat dibanding dengan COM
3. Bisa menggunakan lebih dari 1 segment
4. Ukuran berkas tidak terbatas (sesuai kemampuan memori)
5. Mudah mengakses data/prosedur di segment lain
12
Uky Yudatama, S.Si, M.Kom
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
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
SEGMENT AT 0000H
ORG 0400H
Data_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:
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:
13
Uky Yudatama, S.Si, M.Kom
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Code segment
Assume Cs: Code
Org 100h
Mulai: (merupakan suatu Label)
Perintah MOV
Perintah 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:
Contoh:
14
Uky Yudatama, S.Si, M.Kom
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
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)
Mengerti dan Memahami metode membuat program
Tujuan Instruksional Khusus
COM.
Membuat program COM
Pokok Bahasan
Mencetak Huruf
Struktur model program COM yang dibuat dengan Turbo Assembler bisa dengan 2 model
yaitu:
Model 1:
15
Uky Yudatama, S.Si, M.Kom
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
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.
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..
16
Uky Yudatama, S.Si, M.Kom
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Ketiklah isi program bahasa rakitan (assembler) di depan alamat segment offset
xxxx : 0100 misalnya:
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
17
Uky Yudatama, S.Si, M.Kom
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
-
MENCETAK HURUF
Membuat 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
18
Uky Yudatama, S.Si, M.Kom
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Coba ENDS
END MULAI
OPERASI LOOP
Merupakan 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 :
19
Uky Yudatama, S.Si, M.Kom
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
-A100 enter
xxxx : 0100 MOV AH,02
xxxx : 0103 MOV DL,41
xxxx : 0105 int 21
xxxx : 0107 MOV DL,42
xxxx : 0109 INT 21
xxxx : 010B MOV DL,43
xxxx : 010D INT 21
xxxx : 010F INT 20
xxxx : 0111
-rbx enter
BX 0000
:0 enter
-rcx enter
CX 0000
:11 enter
-N COBA2.COM
-W
Writing 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 ASCII
Coba segment
Assume CS: Coba
Org 100h
20
Uky Yudatama, S.Si, M.Kom
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Untuk pembuatan beberapa huruf memakai operasi loop dengan TURBO ASSEMBLER kita
dapat memodifikasi dari program dengan Debug seperti contoh operasi loop di atas.
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.
21
Uky Yudatama, S.Si, M.Kom
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)
Mengerti dan memahami metode operasi arithmetika
Tujuan Instruksional Khusus
dalam program assembler.
Pokok Bahasan Operasi Arithmetika
- Penambahan (ADD)
- Pengurangan (SUB)
Sub Pokok Bahasan - Pembandingan (CMP)
- Perkalian (MUL)
- Pembagian (DIV)
22
Uky Yudatama, S.Si, M.Kom
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
OPERASI ARITMATIKA
Instruksi arithmetika meliputi: penambahan (addition), pengurangan (subtraction), pembandingan
(comparison), perkalian (multiplication), pembagian (division).
Penjumlahan (Addition)
a. Instruksi ADD -> ADD reg1, reg2 atau ADD reg, [alamat]
Hasil penjumlahan disimpan di reg1.
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:
Pengurangan (Subtraction)
a. Instruksi SUB -> SUB reg1, reg2 atau SUB reg, [alamat]
Hasil pengurangan disimpan di reg1.
Contoh:
23
Uky Yudatama, S.Si, M.Kom
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
DEC CX ;hasil CX = CX + 1
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:
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:
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:
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.
24
Uky Yudatama, S.Si, M.Kom
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
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)
Mengerti dan Memahami Pointer dan fungsi bit dalam
Tujuan Instruksional Khusus
operasi logika dan pergeseran bit.
Pokok Bahasan Operasi Logika dan Pergeseran Bit
- Operasi/Gerbang NOT
- Operasi/Gerbang AND
- Operasi/Gerbang OR
Sub Pokok Bahasan - Operasi/Gerbang XOR
- TEST
- SHL & SHR
- ROL & ROR
25
Uky Yudatama, S.Si, M.Kom
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Contoh:
Operasi AND -> AND reg1, reg2/data atau AND reg, [alamat]
Register 1 akan di-AND-kan dengan register 2 atau data atau [alamat]
Contoh:
Operasi XOR -> XOR reg1, reg2/data atau XOR reg, [alamat]
Register 1 akan di-XOR-kan dengan register2 atau data/[alamat]
Contoh:
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.
26
Uky Yudatama, S.Si, M.Kom
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
MOV CL, 2h
SHL AH, CL ;isi AH digeser ke kiri 2 langkah.
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.
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.
27
Uky Yudatama, S.Si, M.Kom
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Pertemuan Ke 8 (Delapan)
Mode Pengalamatan
Beberapa mode pengalamatan antara lain:
28
Uky Yudatama, S.Si, M.Kom
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
29
Uky Yudatama, S.Si, M.Kom
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
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}
30
Uky Yudatama, S.Si, M.Kom
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
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.
31
Uky Yudatama, S.Si, M.Kom
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
MENCETAK KALIMAT
Mencetak kalimat dengan DOS
Untuk 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 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
INT 21h ; cetak KALIMAT di layar
INT 20h ; berhenti dan kembali ke DOS
KALIMAT DB ’KAMPUS STMIK BANI SALEH BEKASI$’ ;data disimpan di label
Coba ENDS
END MULAI
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
32
Uky Yudatama, S.Si, M.Kom
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
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 20H
KALIMAT 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 20H
KALIMAT DB ‘STMIK BANI SALEH$’
END MULAI
33
Uky Yudatama, S.Si, M.Kom
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(?)
END MULAI
34
Uky Yudatama, S.Si, M.Kom
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
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
35
Uky Yudatama, S.Si, M.Kom
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
AWAL:
MOV AX,1300H ;service 13H subfungsi AL=0
MOV BL,10010101B ;atribut tulisan
1. Buatlah program tampilan SELAMAT DATANG DI STMIK BANI SALEH di tengah layar.
2. Bagaimana cara melakukan pengkopian string menggunakan perintah MOVSB?
36
Uky Yudatama, S.Si, M.Kom
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)
Mengerti dan Memahami operasi jump/lompatan dan
Tujuan Instruksional Khusus
operasi stack.
Operasi Jump (Lompatan)
Pokok Bahasan
Operasi Stack.
.model small
.code
org 100h
MULAI: MOV AX, 1234H
MOV BX, 4321H
JMP TERUS
TERUS:
ADD AX, BX
37
Uky Yudatama, S.Si, M.Kom
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
SUB AX,3
JMP TERUS2
TERUS2:
INT 20H
END MULAI
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
38
Uky Yudatama, S.Si, M.Kom
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Penulisan instruksi lompat bersyarat yang diawali dengan instruksi CMP yang berguna untuk
membandingkan isi register untuk dilompati sesuai kondisi.
Contoh 1:
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
39
Uky Yudatama, S.Si, M.Kom
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
INC BX
CMP BX,000BH
JLE ULANG3
INT 20H
END MULAI
OPERASI 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:
40
Uky Yudatama, S.Si, M.Kom
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
.model small
.code
org 100h
MULAI: 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 20h
END MULAI
Instruksi PUSHF
Merupakan instruksi untuk memasukkan isi register flag ke dalam stack
Sintaks: PUSHF
41
Uky Yudatama, S.Si, M.Kom
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
42
Uky Yudatama, S.Si, M.Kom
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
43
Uky Yudatama, S.Si, M.Kom
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Perintah LEA DX, sama dengan perintah MOV DX,OFFSET sehingga merupakan
alternatif yang dapat dipilih untuk mencetak kalimat.
TUGAS
Pertemuan Ke 11 (Sebelas)
Mengerti dan Memahami input data keybord berupada
Tujuan Instruksional Khusus
ASCII atau Extended.
Pokok Bahasan Input data dari Keyboard.
44
Uky Yudatama, S.Si, M.Kom
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Memasukan 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
Data yang dimasukkan melalui penekanan tombol keyboard ini akan ditampung di register AL
berupa kode ASCII.
Contoh:
45
Uky Yudatama, S.Si, M.Kom
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
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:
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:
.model small
.code
org 100h
46
Uky Yudatama, S.Si, M.Kom
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
END MULAI
.model small
.code
org 100h
47
Uky Yudatama, S.Si, M.Kom
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
INC BX
XOR AH, AH
ADD BX, AX
MOV AL, 0
MOV [BX], AL
MOV DX, OFFSET DATA_MASUK
INC DX
INC DX
AKHIR: 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:
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.
48
Uky Yudatama, S.Si, M.Kom
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
2.
3.
Pertemuan Ke 12 (Duabelas)
Prosedur
49
Uky Yudatama, S.Si, M.Kom
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Prosedur 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.
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
.code
org 100h
MULAI: MOV CX,05h ;isi CX dilooping 5 kali
MOV DL,’A’ ;Karakter A disimpan di DL
ULANG: CALL CETAK ;cetak di layar
INC DL ;tambahkan isi DL dengan 1
LOOP ULANG ;kembali ke ULANG
EXIT: INT 20h ;kembali ke DOS
CETAK PROC NEAR ;prosedur CETAK
MOV AH, 02h ;nomor servis 02H
INT 21h ;cetak di layar
RET ;kembali ke program utama
CETAK ENDP ;akhir prosedur
END MULAI
MACRO
Hampir 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
50
Uky Yudatama, S.Si, M.Kom
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Contoh 1:
.model small
.code
org 100h
MULAI: CETAK ‘A’
CETAK ‘B’
CETAK ‘C’
CETAK ‘D’
CETAK ‘E’
EXIT: INT 20h
END MULAI
Contoh 2:
51
Uky Yudatama, S.Si, M.Kom
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
1.
2.
3.
Pertemuan Ke 13 (Tigabelas)
52
Uky Yudatama, S.Si, M.Kom
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
.model small
.code
org 100h
MULAI: -------
POSISI KURSOR
.model small
.code
org 100h
MULAI: -------
MODE LAYAR
.model small
.code
org 100h
MULAI: -------
1.
2.
3.
53
Uky Yudatama, S.Si, M.Kom
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Pertemuan Ke 14 (Empatbelas)
Mengerti dan Memahami pengaksesan port.
Tujuan Instruksional Khusus Penanganan File.
AKSES PORT
Pengertian Port
Macam-macam Port
Contoh program
.model small
.code
org 100h
MULAI: -------
54
Uky Yudatama, S.Si, M.Kom
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Penanganan File
A. Manajemen File
- Membuat Directory/Subdirectory
Persyaratan untuk
Contoh program
.model small
.code
org 100h
MULAI: -------
- Menghapus Directory/Subdirectory
Persyaratan untuk
Contoh program
.model small
.code
org 100h
MULAI: -------
- Mengubah Directory/Subdirectory
Persyaratan untuk
Contoh program
.model small
.code
org 100h
MULAI: -------
B. Hapus File
Persyaratan untuk menghapus file
55
Uky Yudatama, S.Si, M.Kom
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Contoh program
.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 only
Persyaratan untuk Read only:
Contoh program untuk read only (file yang tidak bisa dihapus)
.model small
.code
org 100h
MULAI: -------
Hidden file
Persyaratan untuk Hidden file:
.model small
.code
org 100h
MULAI: -------
Archive
Persyaratan untuk Archive file:
56
Uky Yudatama, S.Si, M.Kom
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Contoh program untuk archive (file yang dapat dibaca dan dihapus)
.model small
.code
org 100h
MULAI: -------
1.
2.
3.
57
Uky Yudatama, S.Si, M.Kom