Instruksi
mesin dinyatakan dengan pola 0 dan l. Pola semacam itu sangat sulit
untuk dijelaskan pada saat membahas atau menyiapkan program. Oleh karena
itu, kita menggunakan nama simbolik untuk menyatakan pola tersebut.
Sejauh ini kita telah menggunakan kata-kata biasa seperti Move, Add,
Increment, dan Branch, untuk instruksi operasi yang menyatakan pola kode
biner yang sesuai. Pada saat menulis program untuk komputer tertentu,
katakata tersebut biasanya diganti dengan akronim yang disebut mnemonic,
seperti MOV, ADD, INC, dan BR Serupa dengan kita menggunakan notasi R3
untuk mengacu pada register 3, dan LOC untuk mengacu pada lokasi memori.
Set lengkap nama simbolik semacam dan aturan penggunaannya
membentuk bahasa pemrograman, yang biasanya disebut sebagai bahasa assembly. Set aturan untuk menggunakan mnemonic dalam spesifikasi instruksi dan program lengkap disebut syntax bahasa.
Program
yang ditulis dalam bahasa assembly dapat secara otomatis ditranslasikan
ke rangkaian instruksi mesin oleh suatu program yang disebut assembler.
Program assembler adalah salah satu kumpulan program yang merupakan
bagian dari software sistem. Assembler, seperti halnya program yang
lain, disimpan sebagai rangkaian instruksi mesin dalam memori komputer.
Program user biasanya dimasukkan ke dalam komputer melalui keyboard dan
disimpan dalam memori atau disk magnetik. Pada
titik ini, program user hanyalah kumpulan baris karakter alfanumerik.
Pada saat program assembler dieksekusi, program tersebut membaca program
user, menganalisanya, dan kemudian menghasilkan program bahasa mesin
yang diinginkan. Bahasa mesin tersebut berisi pola 0 dan 1 yang
menetapkan instruksi yang akan dieksekusi oleh komputer tersebut.
Program user dalam format teks alfanumerik aslinya disebut source
program, dan program bahasa mesin yang diassemble disebut object
program.
Bahasa assembly untuk suatu komputer mungkin case sensitive atau mungkin
tidak, sehingga, komputer tersebut bisa membedakan antara huruf kapital dan huruf
kecil
atau tidak dapat. Kita akan menggunakan huruf kapital mark menunjukkan
semua nama dan label dalam contoh kita untuk dapat meningkatkan
kemudahan pembacaan teks. Misalnya, kita akan menuliskan instruksi Move
sebagai berikut MOVE R0, SUM MOVE mnemonic menyatakan pola biner, atau
OP code, untuk operasi yang dilakukan oleh instruksi tersebut. Assembler
mentranslasi rnnemonic ini menjadi OP code biner yang dipahatni
komputer. Mnemonic OP code diikuti oleh setidaknya satu karakter spasi
kosong. Kemudian informasi yang menyatakan operand ditetapkan. Dalam
contoh kita, source operand berada dalam register R0. Informasi ini
diikuti oleh spesifikasi destination operand, dipisah dari source
operand dengan koma, tanpa jeda kosong.
Destination
operand berada dalam lokasi memori yang alamat binernya dinyatakan
dengan nama SUM. Karena terdapat beberapa mode pengalamatan yang dapat
digunakan untuk menetapkan lokasi operand, maka bahasa assembly barns
mengindikasikan mode mana yang digunakan. Misalnya, nilai numerik atau
nama yang digunakannya, seperti SUM pada instruksi sebelumnya, dapat
digunakan untuk menunjukkan mode Absolute. Sehingga instruksi ADD #5, R3
menambahkan bilangan 5 ke isi register R3 dan meletakkan hasilnya
kembali ke register R3. tanda sharp bukanlah cara satu satunya untuk
menunjukkan mode pengalamatan Immediate. Dalam beberapa bahasa assembly,
mode pengalamatan yang dimaksud dinyatakan dalam mnemonic OPcode.
Dalam
hal ini, suatu instruksi memiliki mnonemonic OPcode yang berbeda untuk
mode peugalamatan yang berbeda. Misalnya, iustruksi Add sebelumnya dapat
ditulis sebagai berikut ADDI 5, R3 Akhiran I dalam mnemonic ADDI
menyatakan bahwa source operand dinyatakan dalam mode pengalamatan
Immediate. Pengalamatan Indirect biasanya dinyatakan dengan meletakkan
tanda kurung di sekitar nama atau simbol yang menunjukkan pointer ke
operand. Misalnya, jika nomor 5 ditempatkan dalam lokasi memori yang
alamatnya disimpan dalam register R2, maka aksi yang diinginkan dapat
ditetapkan sebagai berikut MOVE #5, (R2) atau mungkin MOVE 5, (R2)
OPERASI ARITMATIKA
8.1. OPERASI PERNAMBAHAN
8.1.1. 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(8bit), 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
8.2. OPERASI PENGURANGAN
8.2.1. 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.
8.2.2. 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).
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.
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
OPERASI STRING
Suatu
String dalam Bahasa Pascal dapat dioperasikan dengan berbagai macam
tujuan. Pascal menyediakan berbagai prosedur standar dan fungsi stanfar
untuk opersai string.
Prosedur Standar Fungsi Standar
- DELETE 1. CONCAT
- INSERT 2. COPY
- STR 3. POS
- VAL 4. LENGHT
Dalam
Operasinya String hanya mempunyai sebuah operator, yaitu operator ‘+’.
Bila operator ini digunakan untuk dua buah elemen string, maka akan
menjadi penggabungan dua buah string menjadi satu.
Panjang Maksimal suatu string yang diijinkan oleh Pascal adalah 255 karakter
Procedure Standart pada String
1. DELETE (Procedure)
ð menghapus substring dari suatu string, dimulai dari posisi i, sebanyak n à String
BU :

DELETE ( string, i, n)
Cat. Jika jumlah I lebih besar dari jumlah karakter dalam string, maka tidak ada karakter yang terhapus
2 INSERT ð insert (menyisipkan) substring (string1) dalam suatu string (string2), pada posisi I à String
BU :
INSERT (string1, string2, i)
Cat.
Apabila hasil penyisipan menjadi String yang panjangnya lebih dari 255
karakter, maka yang dianggap signifikan hanya sampai 255 karakter saja.
3 STR ð mengubah bentuk numerik (x) menjadi nilai string (s)
BU :

STR (x [ : n [ :m ] ], string)
Nilai ‘n’ menunjukkan format panjang dari nilai utuh dan nilai ‘m’ menunjukkan format panjang desimal (nilai dibelakang koma)
4 VAL ð mengubah nilai suatu argumen string menjadi nilai numerik
BU :

Val(Var_string_angka,Var_nilai,kode)

Cat. Var_string_angka berisi data string yang berupa angka
Var_nilai berisi data hasil konversi.
Jika terjadi kesalahan data maka akan posisi kesalahan disimpan pada
Kode
Fungsi Standar pada Operasi String
- CONCAT ð menggabungkan dua string secara berurut
BU :

ConCat(S1,S2[,S3,…, Sn])
Cat. Fungsi standar ini mempunyai operasi yang sama dengan operator string ‘+’, yaitu merangkai beberapa nilai string
2 COPY ð mengambil bagian string (substring) dari suatu string, dimulai dari posisi i, sebanyak n à String

COPY (String, i, n )
3 POS ð Mencari posisi letak dari suatu substring yang ada dalam suatu string à Interger

POS (subString, string)
Cat
: Jika SubString yang dicari terdiri dari beberapa karakter, maka dalam
pencariannya akan mencari deretan karakter yang sesuai.
2. LENGTH ð memberikan nilai panjang atau jumlah karakter dari suatu string à integer
![]() |
C/: VAR s : string[20];
i : word;
BEGIN
. s := ‘program pascal’;
i := LENGTH(s);
WriteLn(‘Panjang string : ’, ‘‘‘‘,s, ‘‘‘‘ ,‘ adalah ‘, I, ‘ karakter’); END.
Panjang string “program pascal” adalah 14 karakter
Tags
Kuliah