Anda di halaman 1dari 33

BAB I

PENDAHULUAN

1. Latar Belakang
Bahasa assembly adalah bahasa pemrograman mendasar yang sangat dekat dengan mesin.
Konsep perangkat keras dan perangkat lunak dapat dijelaskan secara konstektual dengan
memahami bahasa assembly. Disini akan dijelaskan bagaimana perangkat keras computer
dan sistem operasi bekerja sama dan bagaimana program aplikasi berkomunikasi dengan
system operasi. Untuk memahami keseluruhan computer dan system inIormasinya, seseorang
perlu memahami perangkat lunak pada berbagai level. Level pertama adalah program
aplikasi. Dalam level ini program berinteraksi dengan DOS. Pada level bahasa tingkat tinggi,
perintah /pernyataan yang andal diuraikan ke dalam instruksi- instruksi mesin. Pada level
yang lebih rendah (lebih dekat dengan mesin), seseorang akan berinteraksi pada instruksi-
instruksi yang dikenali oleh CPU, sebagaimana program berkomunikasi dengan DOS.

2. #:2:8an Ma8alah
Permasalahan yang akan dibahas dalam penulisan makalah ini, adalah deIinisi dari
bahasa assembly dan assembler; penjelasan mengenai system bilangan dan konversi bilangan;
elemen dasar bahasa assembly.

3. %::an.
Tujuan dari penulisan makalah ini ialah untuk menyelesaikan tugas mata kuliah
BAHASA ASSEMBLY,dan untuk mendapatkan pengetahuan mengenai bahasa assembly
baik bagi penulis maupun pembaca.

. Manfaat.
ManIaat Penulisan Makalah ini adalah sebagai sarana untuk menambah pengetahuan
dan sebagai media pembelajaran.





BAB II
PEMBAHASAN


1. Sekila8 Baha8a A88e2-ly
Bahasa Assembly adalah bahasa yang memudahkan pemahaman bagian computer yang
paling rendah, mendekati mesin. Bahasa assembly sebaiknya dipelajari secara kontektual
sehingga interaksi perangkat keras dan perangkat lunak computer mungkin lebih mudah
dipahami.
Bahasa assembly adalah bahasa pemrograman dengan korespondensi satu-satu antara
perintah-perintah/pertanyaannya dan bahasa mesin computer. Bahasa assembly tidak satu
jenis sebagaimana CPU computer yang bermacam-macam. Setiap bahasa assembly secara
langsung dipengaruhi oleh set intruksi mesin computer dan arsitektur perangkat keras.
Misalnya, bahasa assembly IBM-PC adalah bahasa assembly yang mengacu pada instruksi-
instruksi yang dikenali oleh keluarga mikroprosesor intel 8086-8086.

Apa it: a88e2-ler?
Assembler adalah program yang mengonversi kode program sumber ke dalam bahasa mesin
Terdapat dua assembler yang dikenal baik untuk IBM-PC , yaitu MASM (MicrosoIt
Assembler) dan TASM (Turbo Assembler).
Bahasa assembly disebut bahasa level-bawah karena dalam struktur dan Iungsi dekat
dengan bahasa mesin. Sebaliknya, bahasa tingkat tinggi seperti Pascal, Basic, Fortran, dan
Cobol mempunyai perintah-perintah yang andal yang diterjemahkan ke dalam berbagai
instruksi mesin oleh compiler.

Mengapa 2e2pelaari -aha8a a88e2-ly?
Ada berbagai alasan mengapa kita mempelajari bahasa assembly. Salah satu alasan adalah
untuk mempelajari arsitektur computer dan system operasi . Alasan lain adalah kegunaan
pemrograman tertentu sulit atau tidak mungkin dikerjakan oleh bahasa tingkat tinggi .
Contoh, komunikasi langsung dengan system operasi computer mungkin diperlukan .
Program graIik warna kecepatan tinggi mungkin harus di tulis menggunakan memori
minimum . program khusus mungkin diperlukan sebagai penghubung antara printer dengan
computer.
Keterbatasan bahasa tingkat tinggi sering juga perlu dihilangkan , di luar keperluan
,menentukan aturan-aturan tentang apa yang di bolehkan dalam program . contoh ,pascal
tidak mengizinkan nilai karakter di beri nilai dala variable integer . pemrogram yang
berpengalaman akan menemukan cara untuk keluar dari batasan ini , tetapi dalam
pelaksanaannya , membuat kode tidak dapat digunakan oleh system computer lain dan sulit
dibaca . Bahasa assembly , sebaliknya , memiliki sangat sedikit batasan atau aturan . Harga
yang harus dibayar untuk keluluasan itu adalah berbagai kerumitan dalam pemrograman yang
perlu ditangani.

1. Aplika8i -aha8a a88e2-ly
Biasanya kita membuat subrutin dalam bahasa assembly dan memanggilnya dari
program bahasa tingkat tinggi. Keuntungan dapat diperoleh karena katanya bahasa tingkat
tinggi , dengan menggunakan bahasa tingkat rendah dalam membuat aplikasi . subrutin
bahasa assembly menangani operasi-operasi yang tidak tersedia dalam bahasa tingkat tinggi .
Misalnya kita menulis program aplikasi bisnis dlam cobol untuk IBM-PC. Kita memerluka
aplikasi untuk mengecek ruang bebas disk, membuat subdirektorionie, menulis proteksi Iile,
dan membuat window yang overlap-semuanya dalam satu program.
Missal komIilator cobol tidak dapat melakukan semuanya, kita dapat membuat subrutin
bahasa assembly untuk menangani tugas-tugas tersebut.

2. Baha8a 2e8in
Sebelum lebih jauh secara rinci membahas bahasa assembly , mari kita lihat dalam
suatu persIektiI . computer kenyataannya tidak mengerti bahasa assembly . dia hanya
mengikuti bahasa mesin . bahasa mesin adalah bahasa yang di bangun oleh sejumlah angka
yang dapat diinterpretasikan oleh cpu computer . CPU biasanya mempunyai program kecil
yang di tambahkan langsung ke dalam chip , disebut microcode.Penerjemah microcode
mengubah langsung intruksi-intruksi mesin ke dalam sinyal perangkat keras.
Bahasa mesin memungkinkan untuk melaksakan tugas-tugas umum oleh CPU , seperti
pemindahan bilangan atau perhitungan aritmatik . berikut contoh instruksi bahasa mesin yang
memindahkan angka 5 ke dalam register AL.
1011000000000101
Deretan angka diatas di tulis dalam biner , system penomoran yang dibangun hanya oleh
angka 1 dan 0. Delapan bit pertama adalah kode operasi (opcode) yang menunjukkannya
sebagai intruksi yang memindahkan angka-delapan bit ke register AL. Delapan bit kedua
adalah operand. Instruksi secara keseluruhan memindahkan angka 5 kedalam register AL.
Register adalah memori kecepatan tinggi yang berada didalam CPU. Register
diidentiIikasikan oleh nama dua huruI, seperti AH, AL, atau AX.
Kumpulan instruksi (instruction set) CPU adalah sekumpulan instruksi mesin yang
dapat dieksekusi CPU. Untuk keluarga CPU Intel, set instruksi adalah down-ward-
compatible, artinya bahwa instruksi yang bekerja pada prosesor level yang lebih rendah akan
bekerja juga pada prosesor yang lebih tinggi. Contohnya : instruksi MOV bekerja pada 8088
dan oleh karena itu harus bekerja pula pada 80286. Akan tetapi, terdapat instruksi yang lebih
maju dalam 80286 yang tidak dapat bekerja pada 8088.

2. #epre8enta8i Data
Oleh karena kita bersentuhan dengan computer pada level mesin , kita perlu untuk memeriksa
isi memori dan register. Computer yang ada saat ini adalah computer biner yang system
bilangannya terdiri angka 1 dan 0, dan kita kenal dengan istilah logic digital.

1. SIS%EM BILANGAN
System bilangan (number system) adalah suatu cara untuk mewakili besaran dari suatu item
Iisik. Sistem bilanan yang banyak dipergunakan oleh manusia adalah system biilangan
desimal, yaitu sisitem bilangan yang menggunakan 10 macam symbol untuk mewakili suatu
besaran.Sistem ini banyak digunakan karena manusia mempunyai sepuluh jari untuk dapat
membantu perhitungan. Lain halnya dengan komputer, logika di komputer diwakili oleh
bentuk elemen dua keadaan yaitu off (tidak ada arus) dan on (ada arus). Konsep inilah yang
dipakai dalam sistem bilangan binary yang mempunyai dua macam nilai untuk mewakili
suatu besaran nilai.
Selain system bilangan biner, komputer juga menggunakan system bilangan octal dan
hexadesimal.

Bilangan -iner
Komputer menyimpan semua instruksi dan data sebagai rangkaian digit biner, tanpa
perbedaan antara keduanya. Contoh, tiga huruI pertama alIabet akan disimpan dalam IBM-
PC sebagai:
010000010100001000011 'ABC
Pada saat yang sama, instruksi untuk menjumlahkan dua buah bilangan akan disimpan di
memori sebagai:
0000010000000101
Setiap digit dalam angka biner disebut bit. Kemudian, 8 buah bit disebut byte, yang
merupakan unit terkecil penyimpanan computer saat ini. Setiap lokasi dalam computer
menyimpan 1 byte, atau 8 bit. Tipe penyimpan yang lebih besar adalah word yang
panjangnya 16 bit (2 byte)
Byte byte

101101011011010
Word

Setiap system penulisan angka mempunyai basis, yaitu jumlah maximum nilai pada
suatu digit, yang disebut radix atau basis
sistem Basis/radix Digit yng mungkin
Biner
oktal
Desimal
heksadesimal
2
8
10
16
01
0123567
012356789
012356789ABCDEF

Dalam sistem bilangan heksadesimal, huruI A sampai F mewakili nilai decimal 10
sampai 15.Pada saat mengacu pada bilangan biner, octal atau heksadesimal, sebuah huruI
kecil akan ditambahkan pada akhir setiap bilangan pada akhir setiap bilangan untuk
menunjukkan basisnya contoh bilangan 5 heksadesimal akan ditulis sebagai 5h, 76 oktal
ditulis 76o atau 76q, dan biner 11010011 akan terlihat 11010011b.
Computer pribadi IBM disebut 16-bit karena instruksinya dapat mengoperasikan sejumlah
16-bit bilangan. Integer biasanya disimpan dalam memori sebagai byte, word atau double
word. Masing-masing mempunyai batasan bawah dan atas sebagai berikut:



Tipe penyimpan Bit Range
Byte
Word
Double word
8
16
32
0-225
0-65,535
0-,29,967,295

Walaupun masing-masing bilangan membutuhkan jumlah bit yang berbeda-beda, pada
kenyataannya semua bilangan disimpan di memori sebagai nilai biner karena arsitektur
computer adalah biner. Setiap bit memori adalah1 atau 0, tetapi lokasi terkecil memori yang
diberi alamat adalah byte.

Bilangan hek8ade8i2al
Bilangan biner yang banyak susah untuk dibaca sehingga biasanya digunakan bilangan
heksadesimal untuk menggambarkan memori computer atau instruksi. Setiap digit bilangan
heksadesimal mewakili bit bilangan biner, dan 2 digit bilangan heksadesimal mewakili satu
byte. Pada contoh berikut terlihat bahwa bilangan biner 000101100000011110010100
digambarkan oleh bilangan heksadesimal 16079:
0001 0110 0000 0111 1001 0100
1 6 0 7 9
Sebuah digit heksadesimal mungkin mempunyai nilai sampai 15 sehingga untuk angka 10-15
menggunakan huruI A-F. table berikut menunjukkan bagaimana setiap bit biner
diterjemahkan ke dalam decimal dan heksadesimal :
Biner Decimal Heksadesimal
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
0
1
2
3

5
6
7
8
9
10
11
12
13
1
15
0
1
2
3

5
6
7
8
9
A
B
C
D
E
F
Bilangan De8i2al
Sistem ini menggunakan 10 macam symbol yaitu 0,1,2,3,,5,6,7,8,dan 9. system ini
menggunakan basis 10. Bentuk nilai ini dapat berupa integer desimal atau pecahan.
Integer desimal :
adalah nilai desimal yang bulat, misalnya 8598 dapat diartikan :
8 x 10
3
8000
5 x 10
2
500
9 x 10
1
90
8 x 10
0
8
8598
position value/palce value absolute value


Absolue value merupakan nilai untuk masing-masing digit bilangan, sedangkan position
value adalah merupakan penimbang atau bobot dari masing-masing digit tergantung dari
letak posisinya, yaitu nernilai basis dipangkatkan dengan urutan posisinya.

Pecahan desimal :
Adalah nilai desimal yang mengandung nilai pecahan dibelakang koma, misalnya nilai
183,75 adalah pecahan desimal yang dapat diartikan :
1 x 10
2
100
8 x 10
1
80
3 x 10
0
3
7 x 10
1
0,7
5 x 10
2
0,05
183,75
Bilangan Oktal
Sistem bilangan Oktal menggunakan 8 macam symbol bilangan berbasis 8 digit angka, yaitu
0 ,1,2,3,,5,6,7.
Position value system bilangan octal adalah perpangkatan dari nilai 8.
Contoh :

12
(8)
..
(10)

2 x 8
0
2
1 x 8
1
8 10
Jadi 10
(10)


Konver8i Bilangan
Konversi bilangan adalah suatu proses dimana satu system bilangan dengan basis tertentu
akan dijadikan bilangan dengan basis yang alian. Dalam konversi bilangan terdapat istilah
Most SigniIicant Bit (MSB) atau bit yang paling berarti atau paling besar, dan Least
SigniIicant Bit (LSB) atau bit yang paling tidak berarti atau yang terkecil

Konversi dari bilangan Desimal
1. Konversi dari bilangan Desimal ke biner
Yaitu dengan cara membagi bilangan desimal dengan dua kemudian diambil sisa
pembagiannya.
Contoh :

5 (10) ...(2)
5 : 2 22 sisa 1
22 : 2 11 sisa 0
11 : 2 5 sisa 1
5 : 2 2 sisa 1
2 : 2 1 sisa 0 101101(2) ditulis dari bawah ke atas

MSB LSB

2. Konversi bilangan Desimal ke Oktal
Yaitu dengan cara membagi bilangan desimal dengan 8 kemudian diambil sisa
pembagiannya
Contoh :
385 ( 10 ) ..(8)
385 : 8 8 sisa 1
8 : 8 6 sisa 0
601 (8)

3. Konversi bilangan Desimal ke Hexadesimal
Yaitu dengan cara membagi bilangan desimal dengan 16 kemudian diambil sisa
pembagiannya
Contoh :
1583 ( 10 ) ..(16)
1583 : 16 98 sisa 15
96 : 16 6 sisa 2
62F (16)

Konversi dari system bilangan Biner
1. Konversi ke desimal
Yaitu dengan cara mengalikan masing-masing bit dalam bilangan dengan position
valuenya.
Contoh :
1 0 0 1
1 x 2
0
1
0 x 2
1
0
0 x 2
2
0
1 x 2
3
8
9
(10)





2. Konversi ke Oktal
Dapat dilakukan dengan mengkonversikan tiap-tiap tiga buah digit biner yang dimulai
dari bagian belakang.
Contoh :

11010100 (2) ...(8)
11 010 100

3 2
diperjelas :
100 0 x 2
0
0
0 x 2
1
0
1 x 2
2


Begitu seterusnya untuk yang lain.

3. Konversi ke Hexademial
Dapat dilakukan dengan mengkonversikan tiap-tiap empat buah digit biner yang
dimulai dari bagian belakang.
Contoh :
11010100
1101 0100
D


Konversi dari system bilangan Oktal
1. Konversi ke Desimal
Yaitu dengan cara mengalikan masing-masing bit dalam bilangan dengan position
valuenya.



Contoh :
12
(8)
..
(10)

2 x 8
0
2
1 x 8
1
8 10
Jadi 10
(10)


2. Konversi ke Biner
Dilakukan dengan mengkonversikan masing-masing digit octal ke tiga digit biner.
Contoh :
6502 (8) ... (2)

2 010
0 000
5 101
6 110
jadi 110101000010

3. Konversi ke Hexadesimal
Dilakukan dengan cara merubah dari bilangan octal menjadi bilangan biner kemudian
dikonversikan ke hexadesimal.
Contoh :
2537 (8) ...(16)
2537 (8) 010101011111
010101010000(2) 55F (16)
Konversi dari bilangan Hexadesimal

1. Konversi ke Desimal
Yaitu dengan cara mengalikan masing-masing bit dalam bilangan dengan position
valuenya.



Contoh :
C7
(16)
..
(10)

7 x 16
0
7
C x 16
1
192 199
Jadi 199
(10)


2. Konversi ke Oktal
Dilakukan dengan cara merubah dari bilangan hexadesimal menjadi biner terlebih
dahulu kemudian dikonversikan ke octal.
Contoh :
55F (16) ...(8)
55F(16) 010101011111(2)
010101011111 (2) 2537 (8)
Bilangan Bertanda
Bilangan biner mungkin bertanda atau tidak bertanda. Byte bertanda menggunakan 8 bit
seluruhnya untuk nilai angkanya. Contoh, 11111111 255. Oleh karena itu, 255 adalah nilai
tertinggi yang dapat disimpan dalam byte tidak bertanda. Nilai terbesar yang dapat disimpan
dalam word tidak bertanda adalah 65,535.
Byte bertanda hanya menggunakan 7 bit untuk nilai, sedangkan bit paling kiri digunakan
sebagai tanda. Bilangan mungkin positiI atau negative. Jika tanda sama dengan satu maka
bilangan negative. Sebaliknya, jika tanda bernilai 0 maka bilangan positiI.:

Bit tanda

10001010 (bilangan negative)
00001010 (bilangan positiI)

ne complement. Untuk menghitung bilangan one complement dari suatu bilangan maka
balikkan seluruh nilai bitnya. Contoh, ones complement dari 11110000b adalah 00001111b.
Twos complement. Untuk menyimpan nilai negative maka digunakan bilangan twos
complement. Twos complement diperoleh dengan menambahkan satu pada bilangan ones
complement.
Contoh twos complement dari 6 (00000110b), balikkan nilai bitnya untuk mendapatkan
ones complement menjadi 11111001b, untuk memperoleh twos complementnya ditambah
satu menjadi 11111010b (ini nilai twos complement untuk -6). Untuk mendapatkan kembali
nilai 6 sebagai berikut:
11111010 -6
00000101 ones complement
1 tambah 1
00000110 6
la maksmum dan mnmum. Oleh karena nilai paling kiri pada bilangan bertanda
digunakan untuk tanda bilangan, maka ukuran bilangan akan berkurang; yang digunakan
hanya 7 bit sehingga nilai paling besar yang bisa dicapai adalah 127. Table berikut
menunjukkan nilai maksimum dan minimum untuk byte, word dan double word bertanda:


Tipe penyimpan Nilai terendah Nilai tertinggi
Byte
Word
Double word
-127
-32,767
-2,17,83,67
127
32,767
2,17,83,67

Penyi2pan karakter
komputer hanya dapat menyimpan bilangan biner, jadi bagaimana menyimpan karakter
seperti: 'A dan '$? Telah dibuat suatu system menerjemahkan karakter ke dalam bilangan
biner, yaitu American Standart Code Ior InIormation Interchange (ASCII). sistem lainnya,
Extended Binery Code Ior Decimal Interchange (EBCDIC), digunakan oleh mini dan
mainIrame computer IBM.







kode
ascii
ctrl mnemonic penjelasan
00
01
02
03
0
05
06
07
08
09
0A
0B
0C
0D
0E
0F
10
11
12
13

ctrl-a
ctrl-b
ctrl-c
ctrl-d
ctrl-e
ctrl-I
ctrl-g
ctrl-h
ctrl-i
ctrl-j
ctrl-k
ctrl-l
ctrl-m
ctrl-n
ctrl-o
ctrl-p
ctrl-q
ctrl-r
ctrl-s
nul
soh
stx
etx
eot
enq
ack
bel
bs
ht
lI
vt
II
cr
so
si
dle
dc1
dc2
dc3
Karakter kosong
Awal header
Awal teks
Akhir teks
Akhir transmisi
Pertanyaan(enquiry)
Pemberitahuan
Bel
Backspace
Tab horison
Line Ieed
Tab vertical
Form Ieed
Carriage return
ShiIt out
ShiIt in
Data link escape
Device control 1
Device control 2
Device control 3
1
15
16
17
18
19
1A
1B
1C
1D
1E
1F
ctrl-t
ctrl-u
ctrl-v
ctrl-w
ctrl-x
ctrl-y
ctrl-z
ctrl-|
ctrl-\
ctrl-|
ctrl-`
ctrl- -
dc
nak
syn
etb
can
em
sub
esc
Is
gs
rs
us

Device control
Pemberitahuan negative
Synchronous idle
Akhir transmisi blok
Batal
Akhir medium
Pengurangan(substitusi)
Escape
Pemisah Iile
Pemisah grup
Pemisah record
Pemisah unit
standart kode ASCII hanya menggunakan 7- bit kode, sedangkan nilai selebihnya yang
mungkin 7Fh. 8-bit lainnya adalah pilihan, digunakan oleh IBM-PC untuk memperluas
kumpulan karakter. Nilai 80h-FFh menggambarkan symbol graIik dan karakter yunani. Nilai
0-1Fh adalah kode kendali untuk printer, komunikasi dan keluaran layar.
Semua karakter, termasuk bilangan dan huruI, dibuat unik pada kode ASCII. Contoh kode
untuk karakter string 'ABC123 adalah:
Karakter A B C 1 2 3
Kode ASCII 1h 2h 3h 30h 31h 32h

Lalu bagaiman halnya dengan penyimpanan bilangan? Setiap huruI atau digit memerlukan I
byte memori. Namun, ketika menyimpan bilangan, kita bias lebih eIisien. Contohnya,
bilangan 123 dapat disimpan dalam memorisebagai satu byte, yaitu 01111011b.


3. ELEMEN DASA# BAHASA ASSEMBLY
In8tr:k8i -aha8a a88e2-ly
Instruksi bahasa assembly adalah representasi simbolik instruksi mesin tunggal. Dalam
bentuknya yang paling sederhana, yang terdiri dari satu mnemonic, kode alphabet singkat
yang secara harIiah 'membantu memori dalam mengingat instruksi CPU. Mnemonic
mungkin diikuti oleh operand contoh berikut:
clc ; hanya sebuah mnemonic
inc ax ; operand tunggal
mov ax, bx ; dua operand
stiap instruksi dapat diikuti oleh komentar, yang selalu diawali dengan titik koma(;). Operand
mungkin berupa register, variable, lokasi memori atau nilai immediate. Contoh :
10 (nilai immediate)
count (variable)
AX (register)
|0200| (lokasi memori)
Contoh progra2
Program bahasa assembly dibangun oleh instruksi dan operand. Instruksi memerintahkan
CPU untuk melaksanakan aksi, sedang variable adalah lokasi memori dimana dat disimpan.
Variable juga disebut operand memori. Operand langsung adalah konstanta seperti 5 dan 10.
Berikut ini contoh program untuk menjumlahkan 3 bilangan dan menyimpannya dalam
variable yang disebut sum. Sum diasumsikan dalam heksadesimal.
mov ax, 5 ; memindahkan 5 ke dalam register ax
add ax, 10 ; menambahkan nilai 10h terhadap register ax
add ax, 20 ; menambahkan nilai 20h terhadap register ax
mov sum, ax ; menyimpan ax dalam variable sum
int 20 ; akhir program
instruksi MOV memerintahkan CPU untuk memindahkan atau menyalin data, dari operand
sumber ke operand tujuan. Baris 1 memindahkan 5 ke dalam register AX. Baris 2
memindahkan 10 (heksa) ke dalam AX, membuatnya sama dengan 15. Baris 3 menambahkan
20 ke AX, membuatnya sama dengan 35, dan baris menyalin AX ke dalam variable dalam
memori yang disebut SUM. Baris terakhir menghentikan program.
Perintah DEBUG untuk menyusun dan menguji program adalah sebagi berikut:
Perintah Komentar
A 100
Mov ax, 5
Add ax,10
Add ax,20
Mov |0120|, ax
Int 20

R
T
T
T
Assembly dimulai pada lokasi 100h
Perintah program yang pertama


Hasil jumlah pada lokasi 0120h
Akhir program
(tekan Enter untuk mengakhiri assembly)
Menampilkan register
Trace satu instruksi


G
Q
Eksekusi sisa program
Keluar dari Debug kembaali ke DOS
Setelah instruksi yang kedua, akan diperoleh tampilan hasil sebagai berikut:
1. mov ax, 5 ax : 05
2. add ax, 10 ax : 10
3. add ax, 20 ax : 20
. mov sum, ax ax : 35 sum : 35
AX 0015 BX 0000 CX 0000 DX 0000 SP FFEE
BP 0000 SI 0000 DI 0000 DS 23AD ES 23AD
SS 23AD CS 23AD IP 0106 NV UP EI PL NZ NA PO NC
23AD : 0106 052000 ADD AX, 0020

Register AX merupakan hasil penjumlahan 5 dan 10 sehingga AX 15. Register IP
menyimpan alamat instruksi berikutnya yang akan dieksekusi (0106). Instruksi berikutnya
yang akan dieksekusi adalah ADD AX, 0020.

Ele2en da8ar -aha8a a88e2-ly
Karakter- karakter dasar assembler mungkin digunakan untuk membentuk nomor, nama,
perintah, dan parameter.

Kon8tanta
Konstanta adalah nilai yang diketahui dan dikalkulasikan pada saat penyusunan program.
Konstanta mungkin nomor atau karakter string. Dia tidak dapat diubah pada saat program
dijalankan.
Kumpulan karakter dalam assembly
Letter : A-Z, a-z
Digit : 0-9
Karakter khusus:
? , (koma)
'
&
$
: !
.
|| ~
() ,
}
#
O `
/ ;
* `
'aria-le, sebaliknya, adalah lokasi memori yang dapat berubah pada saat program
dijalankan. Contoh berikut adalah konstanta:
ABC`
213
5*6
(12)/3
Iteger. Integer dibangun oleh digit-digit angka tanpa decimal,diikuti oleh karakter radix
(ddecimal, hhexa, qoctal, bbiner)
Contoh Radix
11110000b
200
300d
A6Bh
207q
207o
Biner
Decimal
Decimal
Heksadesimal
Octal
oktal
Bilangan riil. Angka riil mengandung digit, titikdesimal tunggal, eksponen (opsional) dan
tanda awal (opsional). Sintaknya:
|/-}| digit.digit |E/-}| digit
Contoh:
2.3
200.576 E 05
0.23526E 05
6.08 e3
Nota8i 8intak. Dalam contoh sebelumnya dan pada contoh yang akan dating, elemen
opsional akan ditutup dengan kurung siku. Tanda kurung besar mengidentiIikasikan pilihan
yang diperlukan. Kata kunci yang diperlukan ditulis dalam huruI capital. Kata dengan huruI
kecil miring adalah istilah- istilah yang dideIinisikan sebelumnya seperti identiIier, operand,
dan register.
Karakter ata: kon8tanta 8tring. Karakter ASCII tunggal atau string karakter yang ditutup
oleh tanda quotasi tunggal (`) atau ganda ('), contoh:
'a
B`
'Stack OverIlow
012#?&`
Konstanta karakter panjangnya 1 byte. Panjang sebuah string ditentukan oleh jumlah karakter
yang ada di dalamnya. Konstanta berikut panjangnya 5 byte:
ABCDE`
ApostroI () ditutup diantara dua tanda quotasi ('), atau tanda quotasi ganda (') ditutup
oleh tanda quotasi tunggal (`). Contoh berikut adalah benar:
'That`s not all...
The Iile 'First was not Iound`
'The Iile First` was not Iound
Pernyataan
Pernyataan/perintah bahasa assembly terdiri dari nama, mnemonic, operand dan komentar.
Pernyataan secara umum dibagi menjadi dua kelas, yaitu instruksi dan perintah. Instruksi
adalah pernyataan yang dapat dieksekusi, sementara perintah adalah pernyataan yang
menyediakan inIormasi untuk membantu assembler dalam menghasilkan kode yang dapat
dieksekusi. Format umum sebuah kalimat:
|name||mnemonic||operand||;coment|
Kalimat harus ditulis pada baris tunggal dan tidak melebihi 128 kolom.
Perintah, atau pseudo op, adalah pernyataan yang bereIek pada daItar program atau cara kode
mesin dibuat. Contoh, perintah DG memerintah assembler untuk membuat memori untuk
variable bernama count dan member nilai awal 50.
Count DB 50
Instruksi dieksekusi oleh mikroprosesor pada saat dijalankan. Instruksi dibagi ke dalam tipe-
tipe umum, seperti: kendali program, transIer data, aritmetik, logic, dan I/O. Instruksi-
instruksi selalu diterjemahkan langsung ke dalam kode mesin oleh assembler. Setiap satu
instruksi bahasa assembly diterjemahkan langsung ke dalam satu instruksi bahasa mesin.

Na2a
Nama mengidentiIikasikan label, variable, symbol atau kata kunci. Nama mungkin
mengandung salah satu karakter berikut:
Karakter penjelasan
A.Z, a.z
0-9
?


$
.
HuruI
Angka
Tanda Tanya
Underscore
Tanda
Tanda dollar
Titik

Nama mempunyai batasan sebagai berikut:
1. Hanya 31 karakter pertama yang dikenali,
2. Tidak ada perbedaan antara huruI capital dan huruI kecil,
3. Karakter pertama tidak boleh angka,
. Jika digunakan, tanda (.) hanya bisa digunakan sebagai karakter pertama,
5. Tidak boleh memilih nama yang samadengan kata kunci (perintah/direktiI).
'aria-le dan kon8tanta. Nama digunakan sebelum perintah alokasi memori
mengidentiIikasikan lokasi diman data disimpan dalam memori. Atau, mungkin juga
digunakan untuk mengidentiIikasikan konstanta, sebagai berikut:
Count 1 db 50 ; variable (alokasi memori)
Count 2 equ 100 ; konstanta
La-el. Jika nama tampil disamping instruksi program, ini disebut label.
Label berIungsi sebagai penanda kapan saja program mau meloncat atau looping dari satu
lokasi ke lokasi lain. Sperti contoh berikut dimana label 1 dan label 2 adalah label yang
mengidentiIikasikan lokasi dalam program:
Label 1 mov ax, 0
Label 2 mov ax, 0
.
.
Label 2
Jmp label 1
Kata k:nci. Kata kunci atau reserved word selalu mempunyai arti yang sebelumnya telah
dideIinisikan. Keyword mungkin instruksi atau direktiI. Contohnya, MOV, ADD, AX, dan
END. Kata kunci tidak dapat digunakan keluar dari konteksnya atau sebagai identiIier.
Contoh kekeliruan penggunaan ADD sebagai label adalah berikut:
add : mov ax, 10

. CON%OH P#OG#AM HELLO
Program Hello pada gambar 1.3 yang menempilkan pesan `Hello, world ! pada layar .
Baris 1 mengandung perintah title; semua karakter sisanya pada baris 1 dianggap komentar ,
seperti pada baris 3. Sebelum menyelesaikan lebih lanjut kita jelaskan dulu segmen ,yaitu
bagian-bagian yang membangun program .
Segmen code adalah bagian dimana intruksi program di simpan ; segmen data adalah bagian
dimana variable di simpan ; dan segmen stack adalah tempat menyimpan stack . stack sendiri
merupakan daItar dalam memori dimana program dijaga dalam variable sementara, kembali
dari subrutin , dan semacamnya .
DirektiI dosseg menunjukkan segmen standar untuk code , data dan segmen stack . perintah
model small mengindiIikasikan bahwa program menggunakan MicrosoIt assembler memory
'small . DirektiI stack menset 100 H (256) byte stack untuk program.

Title program hello word |1|
|2|
; program ini menampilkan pesan 'hello,word |3|
||
Dosseg |5|
. model small |6|
. stack 100h |7|
|8|
. data |9|
. hellomessage db hello, world !`,0dh,0ah, $` |10|
|11|
. code |12|
main proc |13|
mov ax, data |1|
mov ds,ax |15|
|16|
mov ah ,9 |17|
mov dx, oIIset hellomessage |18|
int 21 h |19|
|20|
mov ax,000h |21|
int 21h |22|
main endp |23|
endp main |2|

GAMBAR 1.3 Program hello.asm

DirecktiI . code menandai awal segmen code . perintah data menandai awal segmen data ,
dimana variable dideklarasikan .
Baris 9-10 mengandung segmen data, dimana variable diberi nama hellomessage
dideklarasikan . huruI db adalah direktiI deIine byte yang meminta assembler
mengalokasikan serangkaian byte memori untk data yang mengikutinya .
Baris 13 mengunakan perintah proc untuk mendeklarasikan prosedur main (mungkin juga
menggunakan nama lain ) . Baris 1-15 menyalin alamat segmen data ke dalam reg DS .
intruksi MOV selalu mempunyai 2 operand: tujuan dan sumber .
Baris 17-19 menyebabkan string karakter dituliskan kekonsole . Mereka melakukannya
dengan memnggil Iungsi DOS yang menampilkan string yang beralamat dalam register
DX.Nomor Iungsi diletakkan dalam register AH.
Baris 21-22 adalah perintah untuk berhenti dan kembali ke DOS. Baris 23 akhir dari prosedur
main dan baris 2 baris terakhir di assembly.






-a- iii
pen:t:p


.1. Ke8i2p:lan.
Bahasa Assembly adalah bahasa yang memudahkan pemahaman bagian computer yang
paling rendah, mendekati mesin. Bahasa assembly sebaiknya dipelajari secara kontektual
sehingga interaksi perangkat keras dan perangkat lunak computer mungkin lebih mudah
dipahami.
Bahasa assembly adalah bahasa pemrograman dengan korespondensi satu-satu antara
perintah-perintah/pertanyaannya dan bahasa mesin computer.
Assembler adalah program yang mengonversi kode program sumber ke dalam bahasa
mesin
System bilangan (number system) adalah suatu cara untuk mewakili besaran dari suatu
item Iisik. System bilangan terdiri dari: bilangan biner, bilangan decimal, bilangan octal dan
hexadesimal.
Kumpulan karakter dalam assembly
Letter : A-Z, a-z
Digit : 0-9
Karakter khusus:
? , (koma)
'
&
$
: !
.
|| ~
() ,
}
#
O `
/ ;
* `
DAF%A# PUS%AKA

Abdurohman, Maman. !emrograman bahasa assembly- konsep dasar dan
mplementasnya. ANDI. Yogyakarta . 2010





2

Anda mungkin juga menyukai