Minggu, 12 Juni 2011

ELEMEN DASAR BAHASA ASSEMBLY

Instruksi bahasa assembly
Instruksi bahasa assembly adalah representasi simbolik instruksi mesin tunggal. Dalam bentuknya yang paling sederhana, yang terdiri dari satu mnemonic, kode alphabet singkat yang secara harfiah “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 program
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 4 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
G
Q
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


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
  4. 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.

Elemen dasar bahasa assembly
Karakter- karakter dasar assembler mungkin digunakan untuk membentuk nomor, nama, perintah, dan parameter.

Konstanta
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)
                        @                               
                        _                                  &
                        $                                  %
                        :                                   !
                        .                                  
                        []                                  ~
                        ()                                  |
                        {}                                =
                        +                                  #
-                                        ^
                        /                                   ;          
                        *                                  `         
Variable, sebaliknya, adalah lokasi memori yang dapat berubah pada saat program dijalankan. Contoh berikut adalah konstanta:
            ‘ABC’
            2134
            5*6
            (1+2)/3
Iteger. Integer dibangun oleh digit-digit angka tanpa decimal,diikuti oleh karakter radix (d=decimal, h=hexa, q=octal, b=biner)
Contoh
Radix
11110000b
200
300d
4A6Bh
2047q
2047o
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.243526E – 05
            6.08 e3
Notasi sintak. Dalam contoh sebelumnya dan pada contoh yang akan dating, elemen opsional akan ditutup dengan kurung siku. Tanda kurung besar mengidentifikasikan pilihan yang diperlukan. Kata kunci yang diperlukan ditulis dalam huruf capital. Kata dengan huruf kecil miring adalah istilah- istilah yang didefinisikan sebelumnya seperti identifier, operand, dan register.
Karakter atau konstanta string. Karakter ASCII tunggal atau string karakter yang ditutup oleh tanda quotasi tunggal (‘’) atau ganda (“”), contoh:
            “a”
            ‘B’
            “Stack Overflow”
            ‘012#?%&’
Konstanta karakter panjangnya 1 byte. Panjang sebuah string ditentukan oleh jumlah karakter yang ada di dalamnya. Konstanta berikut panjangnya 5 byte:
            ‘ABCDE’
Apostrof (‘) ditutup diantara dua tanda quotasi (“”), atau tanda quotasi ganda (“”) ditutup oleh tanda quotasi tunggal (‘’). Contoh berikut adalah benar:
            “That’s not all………”
            ‘The file “First” was not found’
            “The file ‘First’ was not found”
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 informasi 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 berefek pada daftar 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, transfer 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.

Nama
Nama mengidentifikasikan label, variable, symbol atau kata kunci. Nama mungkin mengandung salah satu karakter berikut:
Karakter
penjelasan
A…Z, a…z
0-9
?
_
@
$
.
Huruf
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 huruf capital dan huruf kecil,
  3. Karakter pertama tidak boleh angka,
  4. Jika digunakan, tanda (.) hanya bisa digunakan sebagai karakter pertama,
  5. Tidak boleh memilih nama yang samadengan kata kunci (perintah/direktif).
Variable dan konstanta. Nama digunakan sebelum perintah alokasi memori mengidentifikasikan lokasi diman data disimpan dalam memori. Atau, mungkin juga digunakan untuk mengidentifikasikan konstanta, sebagai berikut:
            Count 1 db 50                         ; variable (alokasi memori)
            Count 2 equ 100                     ; konstanta
Label. Jika nama tampil disamping instruksi program, ini disebut label.
Label berfungsi 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 mengidentifikasikan lokasi dalam program:
            Label 1            mov ax, 0
            Label 2            mov ax, 0
                                   
                                   
            Label 2
                                    Jmp label 1
Kata kunci. Kata kunci atau reserved word selalu mempunyai arti yang sebelumnya telah didefinisikan. Keyword mungkin instruksi atau direktif. Contohnya, MOV, ADD, AX, dan END. Kata kunci tidak dapat digunakan keluar dari konteksnya atau sebagai identifier. Contoh kekeliruan penggunaan ADD sebagai label adalah berikut:
            add : mov ax, 10

1 komentar:

  1. minta izin buat repost kembali di blog saya untuk tugas. terimakasih

    BalasHapus