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 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] 1

modul E4160 unit 3 bahasa penghimpun

Embed Size (px)

DESCRIPTION

bahasa penghimpun (set suruhan)

Citation preview

Page 1: modul E4160 unit 3 bahasa penghimpun

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

Page 2: modul E4160 unit 3 bahasa penghimpun

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

Page 3: modul E4160 unit 3 bahasa penghimpun

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

Page 4: modul E4160 unit 3 bahasa penghimpun

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

Page 5: modul E4160 unit 3 bahasa penghimpun

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

Page 6: modul E4160 unit 3 bahasa penghimpun

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

Page 7: modul E4160 unit 3 bahasa penghimpun

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

Page 8: modul E4160 unit 3 bahasa penghimpun

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