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 -
3.3
Komen o menerangkan makna aturcara o tidak diterjemah atau dilaksanakan (tidak memberi kesan kepada operasi aturcara) o hanya disalin ke penyenaraian aturcara 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]
o o o o o
mnemonic
[kendalian]
[;komen]
Medan – medan yang dikelilingi dengan tanda pengikat [ ] tidak semestinya wujud Medan mnemonic (mnemonic field) mesti ada bagi setiap suruhan Medan label (label field) perlu jika suruhan ini dirujuk oleh bahagian lain aturcara Medan komen (comment field) membolehkan pengaturcara menuliskan catatan pendek mengenai suruhan. Medan ini dimulakan dengan aksara koma bernoktah dan diabaikan oleh komputer 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 Kod arahan pemindahan data
#$10,D0 operand
Oleh kerana setiap mikropemproses mempunyai set suruhan tersendiri. Dengan itu mnemonics yang digunakan adalah berbeza. Contoh suruhan bagi pemindahan data. 8085 LDA
68000 MOVE
6800 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 move.b
assembler
103C
Penyahkod
Operasi campur
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) LDA B6 8 bit ( 1 byte)
68000 (16 bit bas data) move.b 103C 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 00000050
D1
D1
Selepas 00000072
Contoh 2 MOVE.B
D0,D1
;pindahkan data 8 bit dari data register D0 ke D1 Selepas Sebelum Data Register Data register 00002222 D0 00002222
D0 D1
3.3.2
-
00004444
D1
000004422
Hanya 8 bit data berubah yang lain kekal
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 Data Register 00002222 + 00004444
D0 D1
D0
Selepas Data register 00002222
D1
000004466
Oleh kerana saiz data hanya 8 bit (B) maka hanya 2 nombor akan berubah yang lain kekal
Contoh 2 : ADD.W $2000,D2
b)
;suruhan berikut menunjukkan bagaimana kandungan daftar D2 dalam pemproses ditambah dengan nilai dari kedudukan ingatan 200016
Operasi Tolak (SUB)
Contoh 1 : SUB.W #$02,D1
;data di data register D1 ditolak 0216 keputusan disimpan di data register D1 Sebelum Data Register 12345678 0002
D1
Selepas Data register 12345676
D1
Oleh kerana saiz data hanya 16 bit (W) maka hanya 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 Data Register 12345678 98765432
D1 D0
3.3.3 -
-
D1
Selepas Data register 12340246
D0
98765432
Oleh kerana saiz data hanya 16 bit (W) maka hanya 4 nombor hex akan berubah, yang lain kekal
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 Data Register 12345678 AND 3E
D3
0 0 0
1 0 0
Selepas Data register 12345634
D3
1 1 1
AND (darab) 1 0 1 1 1 0 3 4
1 1 1
0 1 0
hanya 2 nombor hex berubah
0 0 0
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 Data Register 1234563E OR 98765474
D1 D0
0 0 0
0 1 1
1 1 1
D1
Selepas Data register 1234567E
D0
98765474
OR (+) 1 1 1 0 1 1 7 E (14)
1 1 1
1 0 1
Oleh kerana saiz data 8 bit (B) maka 2 nombor Hex akan berubah yang lain kekal
0 0 0
Contoh 3 : NOT.B D1
;kandungan D1 di NOT dan keputusan disimpan di D1)
D1
Sebelum Data Register 12345655
0 1
3.3.4
1 0
Selepas Data register D1 123456AA
0 1
NOT 1 0 1 0 1 0 A (10) A (10)
0 1
Oleh kerana saiz data 8 bit (B) maka 2 nom. Hex akan berubah yang lain kekal
1 0
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) Operasi Branch Always Branch If Carry Clear Branch If Carry Set Branch If = Zero Branch If Higher Branch If Lower Or Same Branch If Not Equal Zero Jump Jump To Subroutine
$8A50 Mnemonic BRA BCC BCS BEQ BHI BLS BNE JMP JSR
3.4
Perubahan Daftar Bendera Terhadap Suruhan Yang Dilaksanakan
1)
Carry (C)
Branch Test None C=0 C=1 Z=1 C+Z=0 C+Z=1 Z=0
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
5)
ZF (zero flag) / bendera sifar – Bendera ini akan disetkan jika hasil operasi arithmetic dan logic adalah sifar.
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 0 CF = 0 NF = 0 VF = 0 ZF = 0
0 0 1
1 1 1
1 0 0
1 1 0
0 1 1
0 1 1
0 1 1
;tiada bawa dari d7 ;d7 menunjukkan nombor positif ;tiada bit pada d8 ;hasil bukan sifar
Contoh 2 Tunjukkan nilai bendera (CF, NF, VF dan ZF) dalam daftar bendera selepas operasi tambah 9CH dan 64H dilaksanakan.
1 CF = 1 NF = 0 VF = 1 ZF = 1
1 0 0
0 1 0
0 1 0
1 0 0
1 0 0
1 1 0
0 0 0
0 0 0
;berlaku bawa dari d7 ;d7 menunjukkan nombor positif ;terdapat bit pada d8 ;hasil sifar
Contoh 3 Tunjukkan nilai bendera (CF, NF, VF dan ZF) dalam daftar bendera selepas operasi tambah 9CH dan 64H dilaksanakan.
1 CF = 1 NF = 0 VF = 1 ZF = 0
1 0 0
1 1 1
1 1 0
0 1 1
1 0 1
1 0 1
1 0 1
0 0 0
;kerana berlaku bawa dari d7 ;d7 menunjukkan nombor positif ;terdapat bit pada d8 ;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
1 CF = 1 NF = 1 VF = 1 ZF = 0 Contoh 5
1 1 1
1 1 0
0 1 1
1 0 1
1 0 1
1 0 1
0 0 0
;berlaku bawa dari d7 ;d7 menunjukkan nombor negatif ;terdapat bit pada d8 ;hasil bukan sifar
Tunjukkan nilai bendera (CF, NF, VF dan ZF) dalam daftar bendera selepas operasi tambah 94C2H dan 323EH dilaksanakan. 1 0 1
0 0 1
CF = 0 NF = 1 VF = 0 ZF = 0
0 1 0
1 1 0
0 0 0
1 0 0
0 1 0
0 0 0
1 0 0
1 0 0
0 1 0
0 1 0
0 1 0
0 1 0
1 1 0
1 0 0
;tidak berlaku bawa dari d15 ;d15 menunjukkan nombor negatif ;tidak terdapat bit pada d16 ;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
8