PENGENALAN BAHASA
ASSEMBLY
Apa itu
bahasa assembly 
Adalah bahasa pemograman dengan korespondensi
satu-satu antara perintah-perintah/pernyataan dan bahasa mesin komputer. Bahasa
assembly tidak satu jenis sebagaimana CPU komputer yang bermacam-macam. Setiap
bahasa assembly secara langsung dipengaruhi oleh set intruksi mesin komputer
dan arsitektur HARDWARE. Misalnya, bahasa assembly IBM-PC adalah bahasa
assembly yang mengacu pada intruksi-intruksi yang dikenali oleh keluarga
microprosesor intel 8086-80486.
Apa itu
assembler?
Assembler
adalah program yang mengkonversi kode program sumber ke dalam bahasa assembly.
Tulisan ini mengacu pada assembler yang membuat instruksi mesin untuk
microkomputer IBM yang sesuai. Jadi bahasa assembly itu adalah kumpulan
instruksi yang           spesifik untuk
sistem komputer tertentu. Dan assembler adalah    programan
yang menerjemahkan program yang ditulis dalam bahasa assembly kedalam bahasa
mesin, yang depat dieksekusi         oleh
komputer
Mengapa Mempelajari Bahasa Assembly
?
Alasan
mengapa mempelajari bahasa assembly:
1.      
Untuk
mempelajari arsitektur komputer dan sistem operasi.
2.      
Kegunaan
program tertentu sulit atau tidak mungkin dikerjakan oleh bahasa tingkat tinggi
3.      
Membuat
programer dapat memngembangkan cara berpikir secara sistematis 
Aplikasi Bahasa Assembly
Biasanya kita membuat subrutin datam bahasa assembly
dan memanggilnya dari program bahasatingkat tinggi. Keuntungan dapat diperoleh
karena ketanya bahasa tingkat tinggi, dengan menggunakan bahasa tingkat rendah
dalam membuat aplikasi. Subrutin bahasa assembly menangani operasi-operasi yang
tidak tersedia dalam bahasa tingkat tinggi. Misai kita menulis program aplikasi
bisnis dalam Cobol untuk IBM-PC, Kita memerlukan aplikasi untuk mengecek ruang
bebas disk, membuat subdirektory, menulis proteksi file, dan membuat window
yang overlap semuanya dalam satu program. Misal kompilator Cobol tidak dapat
melakukan  semuanya, kita dapat membuat
subrutin bahasa assembly, untuk menangani tugas-tugas tersebut
Bahasa Mesin
Sebelum
lebih jauh secara rinci membahas bahasa assembly. Mari kita bahasa assembly.
Dia hanya mengikuti bahasa mesin. Bahasa mesin adalah bahasa yang dibangun Oleh
sejumlah angka yang dapat diinterprestasikan oleh CPU komputer. CPU biasanya
mempunyai program kecil yang ditambahkan langsung ke dalam chip, disebut
microcode. Bahasa mesin memungkinkan untuk melaksanakan tugas-tugas umum oleh
CPU, seperti pemindahan bilangan atau perhitungan aritmatik. 
Contoh
intruksi bahasa mesin yang memindahkan angka 5 kedalam register AL
1011000000000101
Register
adalah memori kecepatan tinggi yang berada dalam CPU.
REPRENTASI DATA
Bilangan
Biner
Komputer menyimpan semua instruksi dan data
sebagai rangkaian digit biner, tanpa perbedaan antara keduanya. Contoh, tiga
huruf pertama alfabet akan disimpan dalam IBM-PC sebagai: 
0100 0001 0100 0010 00011 = "ABC" 
Pada saat yang sama, instruksi untuk menjumlahkan
dua buah bilangan akan disimpan di memori sebagai :
Setiap digit dalam angka biner disebut bit. Kemudian, 8 buah bit disebut byte, yang merupakan unit terkecil penyimpanan pada komputer saat ini. Setiap lokasi dalam komputer menyimpan 1 byte, atau 8 bit. Tipe penyimpan yang lebih besar adalah word yang panjangnya 16 bit (2 byte).
 byte                                       byte
1 0 1 1 0 1 0 1 1 0 1 1 0 1 0
                        word 
 Setiap
sistem penulisan angka mempuyai basis, yaitu jumlah maksimum nilai pada suatu
digit, yang disebut radix alau basis. 
Tabel I.I sistem bilangan
Sistem 
 | 
  
Basis/Radix 
 | 
  
Digit Yang Mungkin 
 | 
 
Biner 
 | 
  
2 
 | 
  
01 
 | 
 
Oktal 
 | 
  
8 
 | 
  
01234567 
 | 
 
Desimal 
 | 
  
10 
 | 
  
0123456789 
 | 
 
Heksadesimal 
 | 
  
16 
 | 
  
0123456789ABCDEF 
 | 
 
Dalam sistem bilangan heksadesimal, huruf
A sampai F mewakili nilai desimal 10 sampai 15.
Pada
saat mengacu pada bilangan biner, oktal atau heksadesimal, sebuah huruf kecil
akan ditambahkan pada akhir setiap bilangan untuk menunjukkan basisnya. Contoh
bilangan 45 heksadesimal akan ditulis sebagai 45h, 76 oktal akan ditulis 76o
atau 76q, dan biner 11010011 akan terlihat 11010011b.
Komputer
pribadi IBM disebut komputer 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:
Tabel I.2 tipe penyimpan
Tipe Penyimpanan 
 | 
  
Bit 
 | 
  
Range (bawah-atas) 
 | 
 
Byte 
 | 
  
8 
 | 
  
0-225 
 | 
 
Word 
 | 
  
16 
 | 
  
0-65,535 
 | 
 
Double word 
 | 
  
32 
 | 
  
0-4,294,967,295 
 | 
 
Walaupun masing-masing bilangan membutuhkan
jumlah bit yang berbeda-beda, pada kenyataannya semua bilangan disimpan di
memori sebagai nilai biner karena arsitektur komputer adalah biner
Pengubahan Bilangan Biner ke Desimal
Oleh
karena berbagai keperluan, mungkin kita perlu mengubah bilangan dari biner ke
desimal. Setiap posisi bit dalam bilangan biner adalah pangkat dari 2, seperti
gambar berikut:
                        128      64        32        16        8          4          2          1
Untuk
mendapatkan nilai desimal dari sebuah bilangan biner,kita harus menjumlahkan
nilai setiap bit yang bernilai 1 dan memperoleh jumlah keseluruhannya. Misalkan
terdapat bilangan biner 00001001:
 Desimal                                              8                                  1  = 9 d
Bilangan Heksadesimal
Bilangan biner yang
banyak susah untuk dibaca sehingga biasanya 
digunakan bilangan heksadesimal untuk menggambarkan memori  komputer atau instruksi. Setiap digit
bilangan heksadesimal mewakili 4  bit
bilangan biner, dan 2 digit bilangan heksadesimal mewakili satu byte.  pada contoh berikut terlihat bahwa bilangan
biner  0001011000000111 10010100
digambarkan oleh bilangan heksadesimal 
160794  
0001 0110 0000 0111
1001 0100  
1      6       
0       7       9     
4  
Sebuah digit
heksadesimal mungkin mempunyai nilai sampai 15 
sehingga untuk angka 10-15 menggunakan huruf A-F. Tabel berikut  menunjukkan bagaimana setiap 4 bit biner
diterjemahkan ke dalam  desimal dan
heksadesimal:
Biner 
 | 
  
Desimal 
 | 
  
Heksadesimal 
 | 
 
0000 
 | 
  
0 
 | 
  
0 
 | 
 
0001 
 | 
  
1 
 | 
  
1 
 | 
 
0010 
 | 
  
2 
 | 
  
2 
 | 
 
0011 
 | 
  
3 
 | 
  
3 
 | 
 
0100 
 | 
  
4 
 | 
  
4 
 | 
 
0101 
 | 
  
5 
 | 
  
5 
 | 
 
0110 
 | 
  
6 
 | 
  
6 
 | 
 
0111 
 | 
  
7 
 | 
  
7 
 | 
 
1000 
 | 
  
8 
 | 
  
8 
 | 
 
1001 
 | 
  
9 
 | 
  
9 
 | 
 
1010 
 | 
  
10 
 | 
  
A 
 | 
 
1011 
 | 
  
11 
 | 
  
B 
 | 
 
1100 
 | 
  
12 
 | 
  
C 
 | 
 
1101 
 | 
  
13 
 | 
  
D 
 | 
 
1110 
 | 
  
14 
 | 
  
E 
 | 
 
1111 
 | 
  
15 
 | 
  
F 
 | 
 
Setiap
posisi digit heksadesimal mewakili bilangan pangkat dari 16.
            163                         162                         161                         160
Bilangan
dapat dikonversi dari heksadesimal ke desimal dengan mengalikan masing-masing
digit dengan nilai posisinya. Misalnya, bilangan 3BA4h, hasilnya:
Nilai
posisi      4096                256                  16                    1
Hasil
kali         12,288             2,816               160                  4 = 15,268d
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 word tidak
bertanda adalah 65,535
One complement :Untuk menghitung bilangan One
complement dari suatu bilangan maka balikan seluruh nilai bitnya. Contoh, One
complement dari 11110000b adalah 00001111b
Twos complement :Untuk menyimpan nilai
negatif maka digunakan bilangan Twos complement. Twos complement diperoleh
dengan menambah satu pada bilangan ones complement 
Nilai maksimum minimum :Oleh karna 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.
Tabel berikut menunjukkan  nilai
maksimum. Dan minimum untuk byte, word dan double word  bertanda
Penyimpanan Karakter
Komputer hanya bisa menyimpan bilangan biner, jadi bagai mana menyimpan
karakter seperti “A” dan “$”? Telah di buat suatu sistem menerjemahkan karakter
ke dalam bilangan biner, yaitu ASCII dan EBCDIC.
Standar kode ASCII
hanya menggunakan 7-bit kode, sedangkan nilai 
selebihnya yang mungkin  7Fh.
8-bit lainnya adalah pilihan  di gunakan
oleh IBM-PC untuk memperluas kumpulan karakter. Nilai 80h-FFh menggambarkan
simbol grafik dan karakter Yunani. Nilai 0-1Fh adalah kode kendali untuk
printer, komunikasi dan keluaran layar.  
Semua karakter,
termasuk bilangan dan hunif, dibuat unik pada kode  ASCII. Contoh, kode untuk karakter
string"ABC123"adalah  
Karakter
                A          B          C          1         
2          3  
Kode
ASCII           41h       42h      43h      30h     
31h      32h  
ELEMEN DASAR ASSEMBLY
Intruksi  Bahasa Assembly
Instruksi  bahasa assembly adalah representasi simbolik
instruksi mesin tunggal.  Dalam bentuknya
yang paling sederhana, yang terdiri dan satu 
mnemonic, kode alfabet singkat yang secara harfiah"membantu
memori"  dalam mengingat instruksi
CPU. Mnemonic mungkin diikuti oleh 
operand contoh berikut :
clc ;                  hanya sebuah ninemonic  
inc ax;              operand tunggal  
mov ax, bx ;     dua operand 
Elemen
Dasar Bahasa Assembly
Krakter-krakter tersebut digunakan
untuk membentuk nomor, nama, perintah dan parameter. 
KARAKTER
  KHUSUS  
 | 
 |
? 
@ 
_ 
$ 
: 
. 
[] 
() 
<> 
{} 
+ 
- 
/ 
*  
 | 
  
,(KOMA) 
“ 
& 
% 
! 
‘ 
~ 
| 
/ 
= 
# 
^ 
; 
‘ 
 | 
 
Konstanta
Konstanta adalah nilai yang di
ketahui dan di kalkulasikan pada saat penyusunan program. Konstanta mungkin
nomor atau karakter string. Diaa tidak dapat di ubah saat program di jalankan.
Variable sebaliknya adalah lokasi
memori yang dapat berubah pada saat program dijalankan. Contoh berikut adalah
konstanta:
‘ABC’
2134
5*6
(1+2)/3
Integer
Dibangun
oleh digit – digit angka tanpa titik decimal, diikuti oleh karakter radix (d=
decimal,h= hexa, q= octal, b=biner)
CONTOH 
 | 
  
RADIX 
 | 
 
1111 0000b 
200 
300d 
4A6Bh 
2047q 
2047o 
 | 
  
Biner 
Decimal 
Decimal 
Heksadecimal 
Oktal 
Oktal 
 | 
 
Bilangan
Riil
Angka rill mengandung digit, titik desimal
tunggal, eksponen dan tanda awal.
syntax nya berupa: [{+/-}]
digit.digit[E{+/-}]digit
CONTOH:
2.3
+200.567E+05
0.243526E-5
6.08 e3
Notasi
Sintak
Dalam contoh sebelumnya dan pada contoh yang akan
datang, elemen opsional akan di tutup dengan kurung siku. Tanda kurang besar
mengidentifikasi pilihan yang di perlukan ,kata kunci yang diprlukan ditulis
dalam huruf kapital, kata dengan huruf kecil adalah istilah-istilah yang telah
di defenisikan sebelumnya .
Karakter
dan Konstanta String
Karakter ASCII tunggal atau string karakter yang
ditutup oleh tanda quotasi tunggal 
(’ ’)/ganda(“ ”), 
konstanta karakter panjangnya 1 byte, panjang sebuah string ditentukan
oleh jumlah karakter yang ada di dalamnya
contoh :
“a”
‘B’
 “stack
overflow” 
‘012#?%&’
Tidak ada komentar:
Posting Komentar