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.
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.
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.
.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.
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.
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.
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.
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.
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.
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
Operasi Aritmatika
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.
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.
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.
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.
HASIL PERCOBAAN
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.
Pernyataan Mencetak Karakter Beserta Atribut
Listing Program
Hasil
Eksekusi
Keterangan :
Program untuk memunculkan nilai A sebanyak tiga kali.
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.
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.
Operasi
Penambahan Dengan ADC
LISTING PROGRAM :
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.
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.
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.
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.
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.
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.
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
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.