View
2.280
Download
1
Embed Size (px)
DESCRIPTION
bahasa penghimpun (set suruhan)
Citation preview
BAB 3.0 : PENGENALAN KEPADA BAHASA PENGHIMPUN (SET SURUHAN)
3.1 Bahasa Tahap Tinggi, Bahasa Penghimpun dan Bahasa Mesin
- Bahasa Tahap Tinggio membolehkan pengaturcara menumpukan perhatian kepada masalah yang ingin diselesaikan bukan
kepada langkah-langkah yang komputer perlu lakukano bahasa tahap tinggi biasanya ditukarkan kepada beberapa bahasa mesino Pengkompil atau penafsir menterjemahkan aturcara dalam bahasa tahap tinggi ke bentuk yang
difahami oleh komputer
- Bahasa Penghimpuno arahan–arahan bahasa mesin di tulis menggunakan bentuk simbolik yang lebih senang difahami oleh
pengaturcara
- Bahasa Mesino aturcara yang boleh dilaksanakan terus oleh komputero 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 komputero setiap jenis pemproses mempunyai bahasa mesinnya yang tersendiri
3.2 Takrifan Istilah : mnemonik, operasi kendalian, kod mesin, label, komen, operasi pseudo dan operan
- Mnemonico kod senang ingato nama simbolik bagi suatu suruhan, daftar, atau kedudukan ingatan yang membayangkan kegunaan
atau fungsi sebenarnyao mewakili maksud sesuatu suruhan dalam Bahasa Inggeris.
- Operasi Kendaliano bahagian suatu suruhan bahasa mesin yang menyatakan operasi yang akan dilakukan oleh
pemproses)
- Kod Mesino bahasa yang boleh dilaksanakan terus oleh komputer tanpa perubahan (nombor perduaan - 0 dan 1)
- Labelo nama yang dikaitkan ke suatu suruhan dalam aturcara untuk mengenalpasti kedudukan suruhan
tersebut dalam ingatan
- Komeno menerangkan makna aturcarao 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 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.
1
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 wujudo Medan mnemonic (mnemonic field) mesti ada bagi setiap suruhano Medan label (label field) perlu jika suruhan ini dirujuk oleh bahagian lain aturcarao Medan komen (comment field) membolehkan pengaturcara menuliskan catatan pendek mengenai suruhan.
Medan ini dimulakan dengan aksara koma bernoktah dan diabaikan oleh komputero 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 6800LDA 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 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) 68000 (16 bit bas data)LDA B6 move.b 103C
8 bit ( 1 byte) 16 bit (1 word)
Bagi mikropemproses 6800 (8 bit kod kendalian) ia akan menghasilkan 256 suruhan.28 = 256
jika m bit maka jumlah kod suruhan = 2m
2
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 daftaro ingatan ke daftaro daftar ke ingatano 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 SelepasD1 00000050 D1 00000072
Contoh 2
MOVE.B D0,D1 ;pindahkan data 8 bit dari data register D0 ke D1
Sebelum Selepas
Data Register Data registerD0 00002222 D0 00002222
Hanya 8 bit data berubah yang lain kekal
D1 00004444 D1 000004422
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
Sebelum Selepas Data Register Data register Oleh kerana saiz data
hanya 8 bit (B) maka hanya 2 nombor akan berubah yang lain kekal
D0 00002222 D0 00002222+
D1 00004444 D1 000004466
3
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
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
data hanya 16 bit (W) maka hanya 4 nombor hex akan berubah, yang lain kekal
D1 12345678 D1 12340246-
D0 98765432 D0 98765432
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
Sebelum Selepas Data Register Data register
hanya 2 nombor hex berubah
D3 12345678 D3 12345634AND 3E
AND (darab)0 1 1 1 0 1 0 00 0 1 1 1 1 1 00 0 1 1 0 1 0 0
Sebelum Selepas Data Register Data register Oleh kerana saiz
data hanya 16 bit (W) maka hanya 4 nombor akan berubah, yang lain kekal
D1 12345678 D1 12345676-
0002
4
3 4Contoh 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
data 8 bit (B) maka 2 nombor Hex akan berubah yang lain kekal
D1 1234563E D1 1234567EOR
D0 98765474 D0 98765474
OR (+)0 0 1 1 1 1 1 00 1 1 1 0 1 0 00 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
data 8 bit (B) maka 2 nom. Hex akan berubah yang lain kekal
D1 12345655 D1 123456AA
NOT0 1 0 1 0 1 0 11 0 1 0 1 0 1 0
A (10) A (10)
3.3.4 Suruhan Cabang
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)
5
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 TestBranch Always BRA NoneBranch If Carry Clear BCC C = 0Branch If Carry Set BCS C = 1Branch If = Zero BEQ Z = 1Branch If Higher BHI C + Z = 0Branch If Lower Or Same BLS C + Z = 1Branch If Not Equal Zero BNE Z = 0
Jump JMPJump 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 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.
6
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 00 0 1 0 1 1 1 10 1 1 0 0 1 1 1
CF = 0 ;tiada bawa dari d7NF = 0 ;d7 menunjukkan nombor positifVF = 0 ;tiada bit pada d8ZF = 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 00 1 1 0 0 1 0 0
1 0 0 0 0 0 0 0 0
CF = 1 ;berlaku bawa dari d7NF = 0 ;d7 menunjukkan nombor positifVF = 1 ;terdapat bit pada d8ZF = 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 00 1 1 1 0 0 0 0
1 0 1 0 1 1 1 1 0
CF = 1 ;kerana berlaku bawa dari d7NF = 0 ;d7 menunjukkan nombor positifVF = 1 ;terdapat bit pada d8ZF = 0 ;hasil bukan sifar
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 01 1 1 1 0 0 0 0
1 1 1 0 1 1 1 1 0
CF = 1 ;berlaku bawa dari d7NF = 1 ;d7 menunjukkan nombor negatifVF = 1 ;terdapat bit pada d8ZF = 0 ;hasil bukan sifar
Contoh 5
7
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 10 0 1 1 0 0 1 0 0 0 1 1 1 1 1 01 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
CF = 0 ;tidak berlaku bawa dari d15NF = 1 ;d15 menunjukkan nombor negatifVF = 0 ;tidak terdapat bit pada d16ZF = 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
8