BAB I
PENDAHULUAN
1.1
Latar
Belakang
Bahasa assembly merupakan bahasa
aras bawah, dimana merupakan bahasa mesin, sangat banyak keuntungan yang kita
dapatkan dari belajar bahasa ini, diantaranya kita bisa belajar untuk mengakses
hardware secara langsung,disamping ukuran file hasil kompilasi juga kecil.
Pada bahasa assembly ini sudah tidak mengenal hanya
0 dan 1 lagi, namun ada beberapa symbol yang digunakan antara lain :MOV, ADD (
untuk penjumlahan ),SUB ( untuk pengurangan ),MUL ( untuk perkalian),dan
lain-lain.Pada bahasa assembly mempunyai program untuk debugging yaitu untuk
mencari kesalahan pada sebuah program yang dibuat. Pada bahasa mesin tidak
mempunya debugger. Contohnya adalah Turbo Assembler yang akan mencocokkan token
dari awal sampai akhir dan dikodekan menjadi bahasa mesin.
Kelebihan Bahasa Assembly: Ketika
di-compile lebih kecil ukuran, Lebih efisien/hemat memori,Lebih cepat
dieksekusi
Kesulitan Bahasa Assembly: Dalam
melakukan suatu pekerjaan, baris program relatif lebih panjang dibanding bahasa
tingkat tinggi, Relatif lebih sulit untuk dipahami terutama jika jumlah baris
sudah terlalu banyak, Lebih sulit dalam melakukan pekerjaan rumit, misalnya
operasi matematis.
1.2 Tujuan Pratikum
1. Mengenal dan memahami fungsi dasar dalam Bahasa Assembly.
2. Mengerti dan memahami jalannya program Bahasa Assembly.
3. Dapat menggunakan fungsi-fungsi dasar pemrograman Assembly.
1.3 Manfaat Pratikum
1.
Dapat menambah wawasan dan ilmu tentang bahasa pemrograman bahasa
Assembly.
2.
Dapat mengenal sintaks-sintak bahasa Assembly.
3.
Dapat mempelajari dasar-dasar bahasa Assembly.
BAB
II
TEORI
BAHASA
2.1 Assembly
Dan Eksekusi Program
Source program yang ditulis dalam
bahasa assembly harus diassemble menjadi object program bahasa mesin sebelum
dapat dieksekusi. Hal ini dilakukan oleh program assembler, yang mengganti
semua simbol untuk mode operasi dan penggalamatan dengan kode biner yang
digunakaa dalam instruksi mesin, dan mengganti semua nama dan label dengan
nilai sebenarnya.
Assembler menetapkan alamat untuk
instruksi dan blok data, mulai dari alamat yang ada dalam asembler directive
ORIGIN. Juga menyisipkan konstanta yang dapat dinyatakan dalam perintah
DATAWORD dan ruang memori cadangan sebagaimana yang diminta oleh perintah
RESERVE. Bagian utama proses assembly menetapkan nilainilai untuk menggantikan namanama
tersebut. Pada beberapa kasus, dimana nilai suatu nama ditetapkan oleh directive
EQU, maka ini merupakan tugas langsung. Pada kasus lain, dimana suatu nama
didefinisikan dalam field Label suatu instruksi, maka nilai yang diwakili nama ini
ditentukan dengan lokasi instruksi ini dalam object program terassemble. Karenanya,
assembler barns mencatat alamatalamat yang menghasilkan kode mesin untuk
instruksi yang berurutan. Misalnya, nama START dan LOOP masingmasing akan
menetapkan nilai 100 dan 112.
2.2 Membuat Program
COM
Untuk membuat program .COM yang hanya menggunakan 1 segment, bisa
anda buat dengan model program seperti gambar 6.1. Bentuk yang digunakan disini
adalah bentuk program yang dianjurkan(Ideal). Dipilihnya bentuk program ideal
dalam buku ini dikarenakan pertimbangan dari berbagai keunggulan bentuk program
ideal ini seperti, prosesnya lebih cepat dan lebih mudah digunakan oleh
berbagai bahasa tingkat tinggi yang terkenal(Turbo Pascal dan C).
.MODEL SMALL
.CODE
ORG 100H
Label1 : JMP Label2
+---------------------+
| TEMPAT DATA PROGRAM |
+---------------------+
Label2 :
+---------------------+
| TEMPAT PROGRAM |
+---------------------+
INT 20H
END Label1
Supaya lebih jelas bentuk dari program ideal, marilah kita
telusuri lebih lanjut dari bentuk program ini.
2.3 MODEL SMALL
Tanda directive ini digunakan untuk
memberitahukan kepada assembler bentuk memory yang digunakan oleh program kita.
Supaya lebih jelas model-model yang bisa digunakan adalah :
TINY
Jika program anda hanya menggunakan 1 segment seperti program COM.
Model ini disediakan khusus untuk program COM.
SMALL
Jika data dan code yang digunakan oleh program kurang dari ukuran
1 segment atau 64 KB.
MEDIUM
Jika data yang digunakan oleh program kurang dari 64 KB tetapi
code yang digunakan bisa lebih dari 64 KB.
- COMPACT
Jika data yang digunakan bisa lebih besar dari 64 KB tetapi
codenya kurang dari 64 KB.
- LARGE
Jika data dan code yang dipakai oleh program bisa lebih dari 64
KB.
- HUGE
Jika data, code maupun array yang digunakan bisa lebih dari 64 KB.
Mungkin ada yang bertanya-tanya mengapa pada program COM yang
dibuat digunakan model SMALL dan bukannya TINY ? Hal ini disebabkan karena
banyak dari compiler bahasa tingkat tinggi yang tidak bisa berkomunikasi dengan
model TINY, sehingga kita menggunakan model SMALL sebagai pemecahannya.
2.4
.CODE
.CODE Tanda directive ini digunakan untuk
memberitahukan kepada assembler bahwa kita akan mulai menggunakan Code
Segment-nya disini. Code segment ini digunakan untuk menyimpan program yang
nantinya akan dijalankan.
2.5 ORG 100h
Pada program COM perintah ini akan
selalu digunakan. Perintah ini digunakan untuk memberitahukan assembler supaya
program pada saat dijalankan(diload ke memory) ditaruh mulai pada offset ke
100h(256) byte. Dapat dikatakan juga bahwa kita menyediakan 100h byte kosong
pada saat program dijalankan. 100h byte kosong ini nantinya akan ditempati oleh
PSP(Program Segment Prefix) dari program tersebut. PSP ini digunakan oleh DOS
untuk mengontrol jalannya program tersebut.
2.6 JMP
Perintah JMP(JUMP) ini
digunakan untuk melompat menuju tempat yang ditunjukkan oleh perintah JUMP.
Adapun syntaxnya adalah:
Tujuan JUMP: Dimana tujuannya dapat berupa label seperti yang digunakan pada
bagan diatas. Mengenai perintah JUMP ini akan kita bahas lebih lanjut nantinya.
Perintah JUMP yang digunakan pada bagan diatas dimaksudkan agar
melewati tempat data program, karena jika tidak ada perintah JUMP ini maka data
program akan ikut dieksekusi sehingga kemungkinan besar akan menyebabkan
program anda menjadi Hang.
2.7 INT 20h
Perintah INT adalah suatu perintah untuk
menghasilkan suatu interupsi dengan syntax:
INT NoInt
Interupsi 20h berfungsi
untuk mengakhiri program dan menyerahkan kendali sepenuhnya kepada Dos. Pada
program COM cara ini bukanlah satu-satunya tetapi cara inilah yang paling
efektif untuk digunakan. Bila anda lupa untuk mengakhiri sebuah program maka
program anda tidak akan tahu kapan harus selesai, hal ini akan menyebabkan
komputer menjadi hang.
2.8 MENCETAK HURUF
Bila dihasilkan
interupsi 21h apa yang akan dikerjakan oleh komputer ?. Jawabnya, ada banyak
sekali kemungkinan. Pada saat terjadi interupsi 21h maka pertama-tama yang
dilakukan komputer adalah melihat isi atau nilai apa yang terdapat pada
register AH. Misalkan bila nilai AH adalah 2 maka komputer akan mencetak sebuah
karakter, berdasarkan kode ASCII yang terdapat pada register DL. Bila nilai
pada register AH bukanlah 2, pada saat dilakukan interupsi 21h maka yang
dikerjakaan oleh komputer akan lain lagi.
Dengan demikian kita bisa mencetak
sebuah karakter yang diinginkan dengan meletakkan angka 2 pada register AH dan
meletakkan kode ASCII dari karakter yang ingin dicetak pada register DL sebelum
menghasilkan interupsi 21h.
2.9 MENCETAK KARAKTER BESERTA ATRIBUT
Sebuah karakter disertai
dengan warna tentunya akan lebih menarik. Untuk itu anda bisa menggunakan
interupsi ke 10h dengan aturan pemakaiannya :
INPUT
AH = 09h
AL = Kode ASCII dari karakter yang akan dicetak
BH = Nomor halaman(0 untuk halaman 1)
BL = Atribut atau warna dari karakter yang akan dicetak
CX = Banyaknya karakter tersebut akan dicetak
Setelah semua register dimasukkan nilainya maka lakukanlah
interupsi 10h. Perlu anda perhatikan bahwa interupsi ini mencetak karakter
tanpa menggerakkan kursor.
2.10
PENGULANGAN DENGAN LOOP
Perintah LOOP digunakan
untuk melakukan suatu proses yang berulang-ulang. Adapun syntax dari perintah
ini adalah :
LOOP Tujuan
Tujuan dapat berupa suatu label yang telah didefinisikan, contoh:
MOV CX,3 ; Banyaknya pengulangan yang dilakukan
Ulang : INT 10h ; Tempat terjadinya pengulangan
LOOP Ulang ; Lompat ke label 'Ulang'
Pada proses pengulangan
dengan perintah LOOP, register CX memegang suatu peranan yang khusus dimana
register ini dijadikan sebagai counter/penghitung terhadap banyaknya looping
yang boleh terjadi. Setiap ditemui perintah LOOP, maka register CX akan
dikurangi dengan 1 terlebih dahulu, kemudian akan dilihat apakah CX sudah
mencapai 0. Proses looping akan selesai bila nilai pada
register CX mencapai nol. Seperti pada contoh diatas, maka interupsi 10h akan
dihasilkan sebanyak 3 kali(sesuai dengan nilai CX).
Perlu
diperhatikan bahwa jangan sampai anda menaruh CX kedalam proses LOOP karena hal
ini akan menyebabkan nilai CX diSET terus sehingga proses looping tidak bisa
berhenti.
TRICK:
Bila
anda menetapkan nilai CX menjadi nol pada saat pertama kali sebelum dilakukan
loop, maka anda akan mendapatkan proses looping yang terbanyak. Hal ini
dikarenakan proses pengurangan 0 dengan 1 akan menghasilkan nilai FFFFh(-1),
Contoh :
MOV
CX,00
Ulang:
LOOP Ulang
2.11 Operasi
Aritmatika
2.11.1 Operasi Penambahan
a.
ADD
Untuk menambah dalam bahasa assembler digunakan perintah ADD dan
ADC serta INC. Perintah ADD digunakan dengan syntax :
ADD Tujuan,Asal
Perintah ADD ini akan menambahkan nilai pada Tujuan dan Asal.
Hasil yang didapat akan ditaruh pada Tujuan, dalam bahasa pascal sama dengan
instruksi Tujuan:=Tujuan + Asal. Sebagai contohnya :
MOV AH,15h ; AH:=15h
MOV AL,4 ; AL:=4
ADD AH,AL ; AH:=AH+AL, jadi AH=19h
Perlu anda perhatikan bahwa pada perintah ADD ini antara Tujuan
dan Asal harus mempunyai daya tampung yang sama, misalnya register AH(8 bit)
dan AL(8 bit), AX(16 bit) dan BX(16 bit).
Mungkin ada yang bertanya-tanya, apa yang akan terjadi bila Tujuan
tempat hasil penjumlahan disimpan tidak mencukupi seperti pertambahan 1234h
dengan F221h.
1234 h Biner --> 0001 0010 0011 0100
F221 h Biner --> 1111 0010 0010 0001
---------- + --------------------- +
10455 h 1 0000 0100 0101 0101
Pada pertambahan diatas dapat dilihat bahwa pertambahan bilangan
1234 dengan F221 akan menghasilkan nilai 10455. Supaya lebih jelas dapat anda
lihat pada pertambahan binernya dihasilkan bit ke 17, padahal register terdiri
atas 16 bit saja. Operasi pertambahan yang demikian akan menjadikan carry flag
menjadi satu, Contoh :
MOV AX,1234h ; NIlai AX:=1234h dan carry=0
MOV BX,0F221h ; Nilai BX:=F221h dan carry=0
ADD AX,BX ; Nilai AX menjadi 0455h dan carry=1
b.
ADC
Perintah ADC digunakan dengan cara yang sama pada perintah ADD,
yaitu :
ADC Tujuan,Asal
Perbedaannya pada perintah ADC ini Tujuan tempat menampung hasil
pertambahan Tujuan dan Asal ditambah lagi dengan carry flag
(Tujuan:=Tujuan+Asal+Carry). Pertambahan yang demikian bisa memecahkan masalah
seperti yang pernah kita kemukakan, seperti pertambahan pada bilangan
12345678h+9ABCDEF0h.
Seperti yang telah kita ketahui bahwa satu register hanya mampu
menampung 16 bit, maka untuk pertambahan seperti yang diatas bisa anda gunakan
perintah ADC untuk memecahkannya, Contoh:
MOV AX,1234h ; AX = 1234h CF = 0
MOV BX,9ABCh ; BX = 9ABCh CF = 0
MOV CX,5678h ; BX = 5678h CF = 0
MOV DX,0DEF0h ; DX = DEF0h CF = 0
ADD CX,DX ; CX = 3568h CF = 1
ADC AX,BX ; AX = AX+BX+CF = ACF1
Hasil penjumlahan akan ditampung pada register AX:CX yaitu
ACF13568h.
Adapun flag-flag yang terpengaruh oleh perintah ADD dan ADC ini
adalah CF,PF,AF,ZF,SF dan OF
c.
INC
Perintah INC(Increment) digunakan khusus untuk pertambahan dengan
1. Perintah INC hanya menggunakan 1 byte memory, sedangkan perintah ADD dan ADC
menggunakan 3 byte. Oleh sebab itu bila anda ingin melakukan operasi
pertambahan dengan 1 gunakanlah perintah INC. Syntax pemakainya adalah :
INC Tujuan
Nilai pada tujuan akan ditambah dengan 1, seperti perintah
Tujuan:=Tujuan+1 dalam Turbo Pascal. Tujuan disini dapat berupa suatu register
maupun memory. Contoh : perintah INC AL akan menambah nilai di register AL
dengan 1. Adapun flag yang terpengaruh oleh perintah ini adalah OF,SF,ZF,AF dan
PF.
d.
Program
Penambahan dan Debug
Pada program penambahan, setelah dikadikan program COM, cobalah
menggunakan debug untuk melihat kebenaran dari hasil penjumlahan tersebut,
perintahnya adalah:
C:\>debug Tambah.com
-r < tekan enter >
AX=0000 BX=0000 CX=0030 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=3597 ES=3597 SS=3597 CS=3597 IP=0100 NV UP EI PL NZ NA PO NC
3597:0100 B415 MOV AH,15
-t < tekan
enter >
Ulangilah perintah –t disini sampai nilai INT 20 muncul,
kemudian tekanlah –Q.
2.11.2
Operasi Pengurangan
a.
SUB
Untuk
Operasi pengurangan dapat digunakan perintah SUB dengan syntax:
SUB
Tujuan,Asal
Perintah
SUB akan mengurangkan nilai pada Tujuan dengan Asal. Hasil yang didapat akan
ditaruh pada Tujuan, dalam bahasa pascal sama dengan instruksi Tujuan:=Tujuan-Asal.
Contoh
:
MOV
AX,15 ; AX:=15
MOV
BX,12 ; BX:=12
SUB
AX,BX ; AX:=15-12=3
SUB
AX,AX ; AX=0
Untuk
menolkan suatu register bisa anda kurangkan dengan dirinya sendiri seperti SUB
AX,AX.
b.
SBB
Seperti
pada operasi penambahan, maka pada operasi pengurangan dengan bilangan yang
besar(lebih dari 16 bit), bisa anda gunakan perintah SUB disertai dengan
SBB(Substract With Carry). Perintah SBB digunakan dengan syntax:
SBB
Tujuan,Asal
Perintah
SBB akan mengurangkan nilai Tujuan dengan Asal dengan cara yang sama seperti
perintah SUB, kemudian hasil yang didapat dikurangi lagi dengan Carry Flag(Tujuan:=Tujuan-Asal-CF).
c.
DEC
Perintah
DEC(Decrement) digunakan khusus untuk pengurangan dengan 1. Perintah DEC hanya
menggunakan 1 byte memory, sedangkan perintah SUB dan SBB menggunakan 3 byte.
Oleh sebab itu bila anda ingin melakukan operasi pengurangan dengan 1
gunakanlah perintah DEC. Syntax pemakaian perintah dec ini adalah:
DEC
Tujuan
Nilai
pada tujuan akan dikurangi 1, seperti perintah Tujuan:=Tujuan-1 dalam Turbo
Pascal. Tujuan disini dapat berupa suatu register maupun memory. Contoh :
perintah DEC AL akan mengurangi nilai di register AL dengan 1.
2.11.3
Operasi Perkalian
Untuk perkalian bisa digunakan perintah MUL dengan syntax:
MUL Sumber
Sumber disini dapat berupa suatu register 8 bit(Mis:BL,BH,..),
register 16 bit(Mis: BX,DX,..) atau suatu varibel. Ada 2 kemungkinan yang akan
terjadi pada perintah MUL ini sesuai dengan jenis perkalian 8 bit atau 16 bit.
Bila Sumber merupakan 8 bit seperti MUL BH maka komputer
akan mengambil nilai yang terdapat pada BH dan nilai pada AL untuk dikalikan.
Hasil yang didapat akan selalu disimpan pada register AX. Bila sumber merupakan
16 bit seperti MUL BX maka komputer akan mengambil nilai yang terdapat
pada BX dan nilai pada AX untuk dikalikan. Hasil yang didapat akan disimpan
pada register DX dan AX(DX:AX), jadi register DX menyimpan Word tingginya dan
AX menyimpan Word rendahnya.
2.11.4 Operasi
Pembagian
Operasi pada pembagian pada dasarnya sama dengan perkalian. Untuk
operasi pembagian digunakan perintah DIV dengan syntax:
DIV Sumber
Bila sumber merupakan operand 8 bit seperti DIV BH,
maka komputer akan mengambil nilai pada register AX dan membaginya dengan nilai
BH. Hasil pembagian 8 bit ini akan disimpan pada register AL dan sisa dari
pembagian akan disimpan pada register AH.
Bila sumber merupakan operand 16 bit seperti DIV BX,
maka komputer akan mengambil nilai yang terdapat pada register DX:AX dan
membaginya dengan nilai BX. Hasil pembagian 16 bit ini akan disimpan pada
register AX dan sisa dari pembagian akan disimpan pada register DX.
BAB III
HASIL PERCOBAAN
3.1 Pernyataan Mencetak
Huruf
Listing Program
Hasil Eksekusi
Keterangan
: Nilai servis 02h dimasukkan kedalam AH melalui perintah MOV,
kemudian huruf A dicetak ke dalam DL. Fungsi DOS lalu dikerjakan melalui
interupsi 021h.
3.2 Pernyataan Mencetak
Karakter Beserta Atribut
Listing Program
Hasil Eksekusi
Keterangan : Program
untuk memunculkan nilai A sebanyak tiga kali.
3.3 Mencetak Beberapa Karakter Dengan Pengulangan
Loop
LISTING PROGRAM :
Hasil Eksekusi
Keterangan : Nilai servis
yang digunakan kali ini adalah 02h. Lalu dicetaklah huruf mulai dari huruf yang
paling awal yaitu A. Kemudian nilai perulangan 10h dimasukkan sehingga hurufnya
nantinya akan keluar 10 kali. Dengan menggunakan loop pada fungsi ulang, lalu
huruf selanjutnya sampai huruf ke-10 pun dicetak dengan menggunakan fungsi INC
sehingga setelah A muncul huruf B, lalu C sampai akhirnya didapatkan hasil
akhir diatas.
3.4 Operasi Penambahan Dengan ADD
LISTING PROGRAM :
Hasil
Eksekusi
Keterangan :
Pertama,
nilai 15h dimasukkan ke AH, lalu 4 dimasukkan ke AL. Jadi, AX=1504. Kemudian
nilai AL ditambahkan ke AH sehingga nilai AH menjadi 19. Akhirnya nilai AX
=1904. Nilai yang ditambahkan disini hanya AH sehingga yang berubah hanya AH,
bukan AL yang tetap bernilai 4 karena tujuannya adalah AH.
3.5 Operasi Penambahan
Dengan ADC
LISTING PROGRAM :
Hasil
Eksekusi
Hasil
Eksekusi
Pada
awalnya, nilai 1234 dimasukkan ke AX, 9ABC ke BX, 5678 ke CX dan DEF0 ke DX.
Nilai DX ditambahkan ke CX, jadi CX=3568 dengan nilai CF=1. Lalu nilai BX
ditambahkan ke AX dengan menggunakan perintah ADC, hasilnya AX=ACF1. Dapat
dilihat bahwa carry flagnya juga 1. Kemudian, hasil akhirnya disini yang
ditampung pada AX:CX adalah ACF13568h.
3.6 Operasi Penambahan
Dengan INC
LISTING PROGRAM :
Hasil Eksekusi
Keterangan:
Nilai 1234 dimasukkan pada AX, sehingga AH=12
dan AL=34.Fungsi increment pun dikerjakan pada keduanya secara terpisah.
Awalnya INC dikerjakan pada AH
sehingga
nilainya berubah menjadi 13, AX=1334. Lalu dikerjakan pada AL, sehingga
nilainya berubah menjadi 35. Hasil akhir AX=1335.
3.7 Program Penambahan dan
Debug
LISTING PROGRAM :
Hasil Eksekusi
Keterangan:
Awalnya 15h dimasukkan ke AH, 4 ke AL. Lalu AL ditambahkan AH,
sehingga AX=1904. Kemudian AX dimasukkan 1234H, BX=0F221h. BX pun dimasukkan ke
AX jadi AX=0455. Selanjutnya 1234 dimasukkan ke AX lagi dan BX=9ABCh, 5678h
dimasukkan ke CX, DX=0DEF0h. Nilai CX lalu diganti dengan nilai DX sehingga
nilai keduanya sama. Dengan menggunakan ADC kemudian BX ditambahkan AX sehingga
AX=ACF1. Terakhir dengan menggunakan INC nilai Carry flagnya berubah menjadi 2
sehingga AX=ACF2.
3.8 Program Operasi Pengurangan Dengan SUB dan SBB
LISTING PROGRAM :
Hasil Eksekusi
Keterangan : Nilai
awal yang dimasukkan AX= 15h, BX=12h. Lalu AX-BX= 003h dengan menggunakan
perintah SUB. Terakhir AX dikurangi lagi dengan AX sehingga nilainya menjadi
nol.
Pada
TData, program melompat ke proses sementara dibawahnya sudah didefinisikan
beberapa data yang konstan dengan menggunakan perintah EQU. Disini
didefinisikan bahwa nilai ALo =0EFFFh, AHi=122h, BLo=0FFFFh,BHi=0FEh tidak
dapat dirubah. Hasil pengurangan nanti ditampung pada HslLo dan HslHi yang
masing masing bernilai 1 word(DW). Tanda ‘?’ digunakan untuk menyatakan bahwa
dalam variabel ini tidak diberikan data awal.
Lalu
pada Proses, program memasukkan nilai ALo ke dalam AX , lalu menguranginya
dengan nilai BLo sehingga bisa dilihat pada hasil debug, nilai AX berubah
menjadi F000 kemudian nilai AX tadi disimpan di dalam HslLo. Pada akhir tahap
ini nilai HslHi:HslLo masih 0000F000 .
Langkah berikutnya adalah mencari nilai word
tingginya. Pada perintah MOV AX,AHi nilai 122h dimasukkan ke AX dengan
menggunakan SBB nilai tsb itu dikurangi dengan BHi yang bernilai 0FEh, sehingga
hasilnya adalah 0023 yang dapat dilihat pada nilai AX yang berubah. Jadi
didapat nilai akhirnya yang tersimpan pada pasangan HslHi:HslLo berupa
0023F000. Pada AX, yang ditampilkan disini hanya 0023 karena nilai word
tingginya ditampilkan lebih awal.
3.9 Program Pengurangan Dengan DEC
LISTING PROGRAM :
Hasil
Eksekusi
Keterangan: Perbedaannya terletak pada huruf awal yang
dimasukkan yaitu Z dan jumlah huruf yang ankan dicetak yaitu 26. Selanjutnya
pada fungsi ULANG digunakan DEC pada nilai DL yang dimasukkan yaitu ‘Z’. Jadi
huruf dicetak dengan urutan mundur, awalnya ‘Z’ kemudian ‘Y’ lalu ‘X’ sampai
selesai.
3.10 Program untuk Perkalian
LISTING PROGRAM :
Hasil Eksekusi
Keterangan: Bila Sumber merupakan 8 bit seperti MUL BH maka komputer
akan mengambil nilai yang terdapat pada BH dan nilai pada AL untuk dikalikan.
Hasil yang didapat akan selalu disimpan pada register AX. Bila sumber merupakan
16 bit
seperti MUL
BX maka komputer akan mengambil nilai yang terdapat pada BX dan nilai pada
AX untuk dikalikan.
3.11 Program dengan Pembagian
LISTING
PROGRAM :
Hasil Eksekusi
Keterangan: Bila sumber merupakan operand 8 bit seperti DIV BH,
maka komputer akan mengambil nilai pada register AX dan membaginya dengan nilai
BH. Hasil pembagian 8 bit ini akan disimpan pada register AL dan sisa dari
pembagian akan disimpan pada register AH.
Bila sumber merupakan operand 16 bit seperti DIV BX,
maka komputer akan mengambil nilai yang terdapat pada register DX:AX dan
membaginya dengan nilai BX. Hasil pembagian 16 bit ini akan disimpan pada
register AX dan sisa dari pembagian akan disimpan pada register DX.
BAB IV
ANALISA
HASIL PERCOBAAN
.MODEL SMALL
Tanda directive ini digunakan untuk memberitahukan kepada
assembler bentuk memory yang digunakan oleh program kita.
.CODE
Tanda directive ini digunakan untuk memberitahukan kepada
assembler bahwa kita akan mulai menggunakan Code Segment-nya disini. Code
segment ini digunakan untuk menyimpan program yang nantinya akan dijalankan.
ORG 100h
Pada program COM perintah ini akan selalu digunakan. Perintah ini
digunakan untuk memberitahukan assembler supaya program pada saat dijalankan(diload
ke memory) ditaruh mulai pada offset ke 100h(256) byte.
JMP
Perintah JMP(JUMP) ini digunakan untuk melompat menuju tempat yang
ditunjukkan oleh perintah JUMP
INT 20h
Interupsi 20h berfungsi untuk mengakhiri program dan menyerahkan
kendali sepenuhnya kepada Dos.
ADD : ini akan menambahkan nilai
pada Tujuan dan Asal.
ADC : tempat
menampung hasil pertambahan Tujuan dan Asal ditambah lagi dengan carry flag
(Tujuan:=Tujuan+Asal+Carry).
INC : Perintah
INC(Increment) digunakan khusus untuk pertambahan dengan 1.
SUB : akan mengurangkan nilai
pada Tujuan dengan Asal.
SBB : akan mengurangkan nilai
Tujuan dengan Asal dengan cara yang sama seperti perintah DEC : digunakan khusus untuk pengurangan dengan 1.
BAB V
PENUTUP
5.1 Kesimpulan
Bahasa
assembly merupakan bahasa aras bawah, dimana merupakan bahasa mesin, sangat
banyak keuntungan yang kita dapatkan dari belajar bahasa ini, diantaranya kita
bisa belajar untuk mengakses hardware secara langsung,disamping ukuran file
hasil kompilasi juga kecil
Kelebihan Bahasa Assembly: Ketika
di-compile lebih kecil ukuran, Lebih efisien/hemat memori,Lebih cepat
dieksekusi
Kesulitan Bahasa Assembly: Dalam
melakukan suatu pekerjaan, baris program relatif lebih panjang dibanding bahasa
tingkat tinggi, Relatif lebih sulit untuk dipahami terutama jika jumlah baris
sudah terlalu banyak, Lebih sulit dalam melakukan pekerjaan rumit, misalnya
operasi matematis
DAFTAR PUSTAKA
S’to.2001. Pemrograman Dengan Bahasa Assembly Edisi
Online Versi 1.0 : http://www.jasakom.com
Fadlisyah,S.Si. Bahasa
Rakitan.Yogyakarta:Andi.
Assembly.
BalasHapusSusah banget.
kok listing programnya ga ada?
BalasHapusyuhuuu...bermanfaat sekali
BalasHapusSolder infrared