Anda di halaman 1dari 8

BAB 3.

0 : PENGENALAN KEPADA BAHASA PENGHIMPUN (SET SURUHAN)

3.1 Bahasa Tahap Tinggi, Bahasa Penghimpun dan Bahasa Mesin

- Bahasa Tahap Tinggi


o membolehkan pengaturcara menumpukan perhatian kepada masalah yang ingin diselesaikan
bukan kepada langkah-langkah yang komputer perlu lakukan
o bahasa tahap tinggi biasanya ditukarkan kepada beberapa bahasa mesin
o Pengkompil atau penafsir menterjemahkan aturcara dalam bahasa tahap tinggi ke bentuk yang
difahami oleh komputer

- Bahasa Penghimpun
o arahan–arahan bahasa mesin di tulis menggunakan bentuk simbolik yang lebih senang difahami
oleh pengaturcara

- Bahasa Mesin
o aturcara yang boleh dilaksanakan terus oleh komputer
o terdiri dari pola – pola 0 dan 1 (nombor perduaan)
o aturcara bahasa mesin terdiri dari suruhan–suruhan berbentuk kod perduaan (pola 0 dan 1)
o sebarang aturcara dalam bahasa pengaturcaraan lain mesti diterjemah ke bahasa mesin sebelum
boleh dilaksanakan oleh komputer
o setiap jenis pemproses mempunyai bahasa mesinnya yang tersendiri

3.2 Takrifan Istilah : mnemonik, operasi kendalian, kod mesin, label, komen, operasi pseudo dan operan

- Mnemonic
o kod senang ingat
o nama simbolik bagi suatu suruhan, daftar, atau kedudukan ingatan yang membayangkan
kegunaan atau fungsi sebenarnya
o mewakili maksud sesuatu suruhan dalam Bahasa Inggeris.

- Operasi Kendalian
o bahagian suatu suruhan bahasa mesin yang menyatakan operasi yang akan dilakukan oleh
pemproses)

- Kod Mesin
o bahasa yang boleh dilaksanakan terus oleh komputer tanpa perubahan (nombor perduaan - 0 dan
1)

- Label
o nama yang dikaitkan ke suatu suruhan dalam aturcara untuk mengenalpasti kedudukan suruhan
tersebut dalam ingatan

- Komen
o menerangkan makna aturcara
o tidak diterjemah atau dilaksanakan (tidak memberi kesan kepada operasi aturcara)
o hanya disalin ke penyenaraian aturcara

3.3 Set Arahan/Suruhan

Senarai suruhan-suruhan yang boleh dilaksanakan oleh sesuatu pemproses dinamakan set suruhan. Turutan
suruhan-suruhan yang dipilih bagi pelaksanaan dalam sesuatu masa dinamakan aturcara. Kesemua pemproses
mempunyai set suruhan yang berbeza kerana model pengaturcaraan masing-masing adalah berbeza. Bagi

1
memudahkan pengaturcaraan, bahasa penghimpun (assembly language) digunakan. Bahasa ini terdiri daripada
satu senarai kod senang ingat atau mnemonic yang mewakili maksud sesuatu suruhan dalam bahasa Inggeris.
Mnemonik ini tidak difahami oleh komputer. Setelah aturcara bahasa penghimpun ditulis, ia diterjemah ke bahasa
mesin berbentuk kod-kod perduaan yang dapat difahami oleh pemproses.

Secara am, sebarang suruhan bahasa penghimpun menuruti format berikut tidak kira jenis pemproses.

[ label] mnemonic [kendalian] [;komen]

o Medan – medan yang dikelilingi dengan tanda pengikat [ ] tidak semestinya wujud
o Medan mnemonic (mnemonic field) mesti ada bagi setiap suruhan
o Medan label (label field) perlu jika suruhan ini dirujuk oleh bahagian lain aturcara
o Medan komen (comment field) membolehkan pengaturcara menuliskan catatan pendek mengenai suruhan.
Medan ini dimulakan dengan aksara koma bernoktah dan diabaikan oleh komputer
o Medan kendalian (operand field) mungkin diperlukan atau mungkin tidak diperlukan bergantung kepada
kehendak suruhan. Jika dua atau lebih kendalian diperlukan, masing-masing diasingkan dengan aksara
koma.

Format Suruhan

Setiap perkataan suruhan (instruction word) mempunyai dua bahagian iaitu kod arahan dan diikuti dengan
operand (data dan alamat). Kod arahan di dalam bentuk mnemonics iaitu singkatan perkataan yang mewakili
suruhan tertentu.

Contoh :
move.b #$10,D0
Kod arahan pemindahan data operand

Oleh kerana setiap mikropemproses mempunyai set suruhan tersendiri. Dengan itu mnemonics yang digunakan
adalah berbeza. Contoh suruhan bagi pemindahan data.

8085 68000 6800


LDA MOVE MOV

Program yang ditulis menggunakan mnemonics dipanggil program bahasa penghimpun (assembly language).
Apabila assembly language ini ditukarkan ke bahasa mesin, setiap mnemonic (kod arahan AND, LOAD dll) akan
ditukarkan kepada satu kod binary. Kod ini dikenali sebagai Kod Kendalian (OPCODE – operation kod) iaitu kod
yang menentukan operasi yang akan dilakukan oleh komputer.

Kod arahan akan ditukarkan oleh assembler ke kod binary. Kod binary ini akan diterjemahkan oleh Litar Penyahkod
ke bentuk operasi, ia memberitahu mikropemproses apa yang perlu dilakukan.

Kod arahan assembler 103C Penyahkod Operasi campur


move.b

Operand di dalam sesuatu perkataan suruhan boleh merupakan data yang akan diambil / baca / read dari ingatan
ataupun alamat ingatan dimana data yang hendak diproses diperolehi. Terdapat juga perkataan suruhan yang
hanya mempunyai opcode sahaja.

Contoh : clear, RTS

Saiz kod kendalian (opcode) / bilangan bit kod kendalian adalah sama dengan panjang kata (word length) sesuatu
mikropemproses. Panjang kata atau saiz perkataan bagi mikropemproses adalah sama dengan saiz data bus.

Contoh

6800 (8 bit bas data) 68000 (16 bit bas data)


LDA B6 move.b 103C
8 bit ( 1 byte) 16 bit (1 word)

2
Bagi mikropemproses 6800 (8 bit kod kendalian) ia akan menghasilkan 256 suruhan.
28 = 256
jika m bit maka jumlah kod suruhan = 2m

3.3.1 Operasi Pemindahan Data (MOVE)

- suruhan–suruhan bagi pemindahan data membolehkan data dialihkan dari satu punca ke satu destinasi
- bahasa penghimpun, suruhan-suruhan ini biasanya dinamakan suruhan MOVE
- jenis-jenis :
o daftar ke daftar
o ingatan ke daftar
o daftar ke ingatan
o data terdekat ke daftar
- suruhan pemindahan data mikropemproses 68000 :
MOVE. B (pemindahan data 8 bit)
MOVE.W (pemindahan data 16 bit)

Nota :
• Bila data dihantar dari satu register ke register, data dalam register pertama tidak akan hilang
• Register pertama merupakan source dan register kedua destination.

Contoh 1

MOVE.W #$72,D1 ;pindahkan data 7216 ke D1

Sebelum Selepas
D1 00000050 D1 00000072

Contoh 2

MOVE.B D0,D1 ;pindahkan data 8 bit dari data register D0 ke D1


Selepas
Sebelum
Data Register Data register
D0 00002222 D0 00002222
Hanya 8 bit data
D1 00004444 D1 000004422 berubah yang
lain kekal

3.3.2 Operasi Arithmetik

- operasi–operasi asas bagi sebarang pemproses adalah penambahan dan penolakan. Dengan dua operasi
asas ini, operasi pendarapan dan pembahagian boleh diwujudkan
- data yang diproses termasuk nilai-nilai perduaan, perpuluhan dan ASCII
- operasi-operasi arithmetik melibatkan ALU dalam pemproses

a) Operasi campur (ADD)

- Mikropemproses 68000 boleh mencampur dalam 3 saiz iaitu 8 bit (.B), 16 bit (.W) dan 32 bit (.L).
- Data diperolehi dari register (D0 hingga D7), memori, dan I/O port.

Contoh 1 :

ADD.B D0,D1 ;data 8 bit dan data register D0 dicampur dengan data dari D1 dan hasilnya disimpan di D1

3
Sebelum Selepas
Data Register Data register Oleh kerana saiz data
D0 00002222 D0 00002222 hanya 8 bit (B) maka
+ hanya 2 nombor akan
D1 00004444 D1 000004466 berubah yang lain
kekal

Contoh 2 :

ADD.W $2000,D2 ;suruhan berikut menunjukkan bagaimana kandungan daftar D2 dalam pemproses
ditambah dengan nilai dari kedudukan ingatan 200016

b) Operasi Tolak (SUB)

Contoh 1 :

SUB.W #$02,D1 ;data di data register D1 ditolak 0216 keputusan disimpan di data register D1

Sebelum Selepas
Data Register Data register Oleh kerana saiz
D1 12345678 D1 12345676 data hanya 16 bit
- (W) maka hanya
0002 4 nombor akan
berubah, yang
lain kekal

Contoh 2 :

SUB.W D0,D1 ;data 16 bit di data register D1 ditolak dengan data 16 bit di D0 keputusan
disimpan di data register D1

Sebelum Selepas
Data Register Data register Oleh kerana saiz
D1 12345678 D1 12340246 data hanya 16 bit
- (W) maka hanya
D0 98765432 D0 98765432 4 nombor hex
akan berubah,
yang lain kekal

3.3.3 Suruhan Logikal

- Antara suruhan logical ialah AND, OR dan NOT


- Kandungan data register dan data di memori boleh dibandingkan dengan menggunakan suruhan logikal
- operasi ini di lakukan oleh ALU.

Contoh 1 :

AND.B #$3E,D3 ;kandungan D3 di AND dengan data 3E, keputusan disimpan di data register D3
4
Sebelum Selepas
Data Register Data register
D3 12345678 D3 12345634 hanya 2 nombor
AND hex berubah
3E

AND (darab)
0 1 1 1 0 1 0 0
0 0 1 1 1 1 1 0
0 0 1 1 0 1 0 0
3 4
Contoh 2 :

OR.B D0,D1 ;data 8 bit di data register D1 di OR dengan data 8 bit di D0 keputusan disimpan di data
register D1)

Sebelum Selepas
Data Register Data register Oleh kerana saiz
D1 1234563E D1 1234567E data 8 bit (B)
OR maka 2 nombor
D0 98765474 D0 98765474 Hex akan
berubah yang
lain kekal

OR (+)
0 0 1 1 1 1 1 0
0 1 1 1 0 1 0 0
0 1 1 1 1 1 1 0
7 E (14)

Contoh 3 :

NOT.B D1 ;kandungan D1 di NOT dan keputusan disimpan di D1)

Sebelum Selepas
Data Register Data register Oleh kerana saiz
D1 12345655 D1 123456AA data 8 bit (B)
maka 2 nom.
Hex akan
berubah yang
lain kekal
NOT
0 1 0 1 0 1 0 1
1 0 1 0 1 0 1 0
A (10) A (10)

3.3.4 Suruhan Cabang

5
Pemproses pada asasnya melaksanakan suruhan-suruhan dalam aturcara secara berturutan. Suruhan-suruhan
alihan aturcara/ bercabang digunakan bagi menukarkan aliran aturcara supaya pemproses melaksanakan suruhan
yang tidak berturutan. Suruhan-suruhan begini termasuk suruhan-suruhan cabang atau lompat, panggil, dan
kembali.Suruhan cabang dan lompat ialah suruhan alihan aturcarayang asas.

Suruhan ini akan mengubah kandungan Program Counter. Mikropemproses akan lompat beberapa nombor lokasi
ingatan bagi melaksanakan program baru (subroutine) atau kembali kepada kedudukan asal. (main program)

Suruhan bercabang terdiri dari suruhan tak bersyarat dan suruhan bersyarat (unconditional and conditional).
Suruhan cabang tak bersyarat sentiasa dilaksanakan. Suruhan berikut menyruh pemproses 68000 melompat ke
suruhan seterusnya di alamat $8A50. Apabila suruhan tak bersyarat dilaksanakan PC akan ditukar.

JMP $8A50 (melompat ke suruhan seterusnya di alamat $8A50)

Suruhan cabang bersyarat hanya dilaksanakan apabila sesuatu bendera mempunyai nilai yang ditetapkan dalam
suruhan (syarat dipenuhi). Suruhan berikut menyebabkan pemproses 6800 dan 68000 melompat ke alamat 8A50
jika bendera C bernilai 1 (carry set C = 1)

BCS (Branch If Carry Set) $8A50

Operasi Mnemonic Branch Test


Branch Always BRA None
Branch If Carry Clear BCC C=0
Branch If Carry Set BCS C=1
Branch If = Zero BEQ Z=1
Branch If Higher BHI C+Z=0
Branch If Lower Or Same BLS C+Z=1
Branch If Not Equal Zero BNE Z=0

Jump JMP
Jump To Subroutine JSR

3.4 Perubahan Daftar Bendera Terhadap Suruhan Yang Dilaksanakan

1) Carry (C)

 C = 1, carry flag is set if a carry is generated out of the MSB of the result of an instruction
operation.
 CF (Carry Flag) / bendera bawa - Bendera ini disetkan (1) apabila terjadinya bawa daripada bit
paling bererti (MSB) samada dari d7 selepas operasi 8 bit atau d 15 & d 31 selepas operasi 16 bit
dan 32 bit.

2) Negative (N)
 N = 1, negative flag is set, when the result is negative
 N = 0, negative flag is cleared, when the results is positive
 NF (negative Flag) / bendera negative – Bendera ini akan disetkan (1) apabila d7, d15 dan d31
bagi operasi 8 bit, 16 bit dan 32 bit nilainya bersamaan 1.

3) Overflow (V)
 The overflow (V) flag is set when the result exceeds the maximum number
 VF (overflow flag) / bendera limpahan – Bendera ini akan disetkan apabila hasil yang didapati
adalah terlampau besar atau luar daripada julat yang ditetapkan

4) Zero (Z)
 Z = 1, zero flag is set, when the result is zero
 Z = 0, zero flag cleared, when the result is non-zero
6
 ZF (zero flag) / bendera sifar – Bendera ini akan disetkan jika hasil operasi arithmetic dan logic
adalah sifar.

5) Extend (X)****
 Multiprecision arithmetic operations. Apabila bendera ini disetkan, ia membenarkan aturcara untuk
melaksanakan suruhan satu demi satu suruhan (single – stepping). Ini biasa digunakan semasa
kerja debugging dilakukan.
 The extend flag is set the same way as the carry (C) flag.

Contoh 1

Tunjukkan nilai bendera (CF, NF, VF dan ZF) dalam daftar bendera selepas operasi tambah 38H dan 2FH
dilaksanakan.

0 0 1 1 1 0 0 0
0 0 1 0 1 1 1 1
0 1 1 0 0 1 1 1

CF = 0 ;tiada bawa dari d7


NF = 0 ;d7 menunjukkan nombor positif
VF = 0 ;tiada bit pada d8
ZF = 0 ;hasil bukan sifar

Contoh 2

Tunjukkan nilai bendera (CF, NF, VF dan ZF) dalam daftar bendera selepas operasi tambah 9CH dan 64H
dilaksanakan.

1 0 0 1 1 1 0 0
0 1 1 0 0 1 0 0
1 0 0 0 0 0 0 0 0

CF = 1 ;berlaku bawa dari d7


NF = 0 ;d7 menunjukkan nombor positif
VF = 1 ;terdapat bit pada d8
ZF = 1 ;hasil sifar

Contoh 3

Tunjukkan nilai bendera (CF, NF, VF dan ZF) dalam daftar bendera selepas operasi tambah 9CH dan 64H
dilaksanakan.

1 1 1 0 1 1 1 0
0 1 1 1 0 0 0 0
1 0 1 0 1 1 1 1 0

CF = 1 ;kerana berlaku bawa dari d7


NF = 0 ;d7 menunjukkan nombor positif
VF = 1 ;terdapat bit pada d8
ZF = 0 ;hasil bukan sifar

7
Contoh 4

Tunjukkan nilai bendera (CF, NF, VF dan ZF) dalam daftar bendera selepas operasi tambah H dan H dilaksanakan.

1 1 1 0 1 1 1 0
1 1 1 1 0 0 0 0
1 1 1 0 1 1 1 1 0

CF = 1 ;berlaku bawa dari d7


NF = 1 ;d7 menunjukkan nombor negatif
VF = 1 ;terdapat bit pada d8
ZF = 0 ;hasil bukan sifar
Contoh 5

Tunjukkan nilai bendera (CF, NF, VF dan ZF) dalam daftar bendera selepas operasi tambah 94C2H dan 323EH
dilaksanakan.

1 0 0 1 0 1 0 0 1 1 0 0 0 0 1 1
0 0 1 1 0 0 1 0 0 0 1 1 1 1 1 0
1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0

CF = 0 ;tidak berlaku bawa dari d15


NF = 1 ;d15 menunjukkan nombor negatif
VF = 0 ;tidak terdapat bit pada d16
ZF = 0 ;hasil bukan sifar

 Data dan aturcara berbentuk nombor perduaan


@ menandakan nilai berikutnya ialah perlapanan @ 783
% menandakan nilai berikutnya ialah perduaan % 1011011
$ menandakan nilai berikutnya ialah perenambelasan @ F00D
# menandakan nilai berikutnya ialah nilai terdekat # 123
 ASCII (American Standard Code For Information Interchange) – Kod aksara 7 bit; digunakan
bagi menyimpan teks dalam komputer
 Kesemua pemproses beroperasi dengan cara yang sama. Kesemuanya berfungsi dengan
melaksanakan suruhan yang dipungut dari ingatan. Masa perlaksanaan setiap suruhan
dinamai kitar suruhan. Kitar suruhan terdiri daripada tiga kitar.
(i) pungut – ambil suruhan dari ingatan
(ii) nyahkod – tafsir suruhan
(iii) laksana – laksana suruhan
 Ingatan digunakan untuk menyimpan aturcara dan data
 Daftar digunakan untuk menyimpan data

Anda mungkin juga menyukai