bab 3 set arahan - kingdiaw85.files.wordpress.com · Î format arahan: mov Î pemindahan ... inc a...

20
BAB 3 SET ARAHAN 3.1 Tiga Jenis Bahasa Pengaturcaraan Bahasa tahap tinggi Bahasa Penghimpunan Bahasa Tahap Rendah Bahasa Mesin 3.1.1 Bahasa Tahap Tinggi Bahasa yang memudahkan pengaturcaraan tanpa memikirkan bagaimana data diolah (pindah- memindah) dalam komputer. Contoh : Bahasa C, C++ dan Basic Bahasa tahap tinggi tidak bergantung kepada senibina CPU. Aturcara bahasa tahap tinggi diterjemahkan ke bahasa mesin oleh pentafsir (interpreter) atau pengkompil (compiler). 3.1.2 Bahasa Penghimpunan Ia menggunakan kod-kod senang ingat (mnemonic) yang memudahkan pengaturcaraan bahasa mesin. Setiap mnemonic melambangkan satu arahan bahasa mesin. Aturcara bahasa penghimpunan diterjemah ke bahasa mesin oleh penghimpun. 3.1.3 Bahasa Mesin Ia ditulis dalam kod mesin yang berbentuk binari “0” dan “1" yang difahami oleh komputer. Prepared by Tan KL 3-1

Upload: hacong

Post on 11-Mar-2019

251 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: BAB 3 SET ARAHAN - kingdiaw85.files.wordpress.com · Î Format arahan: MOV Î pemindahan ... INC A : tambah satu langkah ... Decrement and jump if not zero (undur satu langkah dan

BAB 3

SET ARAHAN

3.1 Tiga Jenis Bahasa Pengaturcaraan

• Bahasa tahap tinggi

• Bahasa Penghimpunan Bahasa Tahap Rendah

• Bahasa Mesin

3.1.1 Bahasa Tahap Tinggi

Bahasa yang memudahkan pengaturcaraan tanpa memikirkan bagaimana data diolah (pindah-

memindah) dalam komputer.

Contoh : Bahasa C, C++ dan Basic

Bahasa tahap tinggi tidak bergantung kepada senibina CPU. Aturcara bahasa tahap tinggi

diterjemahkan ke bahasa mesin oleh pentafsir (interpreter) atau pengkompil (compiler).

3.1.2 Bahasa Penghimpunan

Ia menggunakan kod-kod senang ingat (mnemonic) yang memudahkan pengaturcaraan bahasa

mesin.

Setiap mnemonic melambangkan satu arahan bahasa mesin. Aturcara bahasa penghimpunan

diterjemah ke bahasa mesin oleh penghimpun.

3.1.3 Bahasa Mesin

Ia ditulis dalam kod mesin yang berbentuk binari “0” dan “1" yang difahami oleh komputer.

Prepared by Tan KL

3-1

Page 2: BAB 3 SET ARAHAN - kingdiaw85.files.wordpress.com · Î Format arahan: MOV Î pemindahan ... INC A : tambah satu langkah ... Decrement and jump if not zero (undur satu langkah dan

Ia tidak perlu diterjemahkan untuk menjalankan tugas dan ia adalah satu-satunya bahasa

yang difahami oleh pemproses.

Bahasa Mesin (cth: 11001110)

Interpreter or Compiler Assembler

Bahasa Mesin (cth: 11001110)

Bahasa Tahap Tinggi

(cth: Cin, Cout, If, else)

Bahasa Penghimpunan (cth: MOV, ADD)

3.2 Mengaturcara Pengawal Mikro dan Komputer

Dalam mengaturcara sesuatu pengaturcaraan, setiap arahan dan data mesti ditukar ke dalam

kod-kod binari. Kod-kod ini dikenali sebagai kod mesin.

3.2.1 Batas-batas Menggunakan Kod Mesin

a. Aturcara susah untuk difahami

b. Aturcara lambat untuk dikey-in ke dalam komputer disebabkan masukan satu bit demi

satu bit pada setiap masa.

c. Aturcara tidak menyatakan tugas yang kita mengehendaki komputer laksanakan.

d. Aturcara panjang dan memenatkan untuk ditulis.

Bagi mengatasi masalah-masalah ini, penggunaan kod-kod senang ingat (mnemonic)

diperkenalkan. Dengan penggunaan mnemonic ini, batasan-batasan penggunaan kod mesin

sedikit sebanyak dapat diatasi.

Contohnya MOV A, #55H dalam kod mnemonic yang bererti ”pindahkan data 55H ke dalam

Accumulator”. Jika ditulis dalam bahasa mesin, ia bersamaan dengan 0111010001010101B

(7455H). Kod mesin ini memang susah difahami.

Setiap model CPU mempunyai set arahan mnemonic tersendiri.

Prepared by Tan KL

3-2

Page 3: BAB 3 SET ARAHAN - kingdiaw85.files.wordpress.com · Î Format arahan: MOV Î pemindahan ... INC A : tambah satu langkah ... Decrement and jump if not zero (undur satu langkah dan

3.2.2 Penulisan Aturcara Menggunakan Bahasa Penghimpunan

Setiap suruhan yang ditulis mempunyai medan-medan suruhan berikut:

3-3

Medan Label

Ia mengandungi nama yang diberi kepada sesuatu kedudukan suruhan.

Kedudukan suruhan itu akan dirujuk oleh bahagian lain dalam aturcara jika diperlukan.

Medan Opkod Medan ini biasanya mengandungi kod arahan mnemonic.

Boleh juga mengandungi arahan direktif/pseudo walaupun tidak diterjemah

ke kod mesin.

Medan Operan/Alamat Medan ini mengandungi alamat/data ataupun dibiar kosong sahaja.

Medan Komen

Pendapat peribadi bagi menerangkan arahan yang ditulis untuk memudahkan aturcara

untuk dibaca.

Setiap komen yang ditulis mesti dimulakan dengan tanda ”;”

Medan ini tidak akan diproses oleh CPU apabila aturcara dilaksanakan

Medan

Label

Medan

Mnemonik/Opkod

Medan

Operan/Alamat

Medan Komen

;Program 1: Flashing the LEDs ORG 0000H ;Program start at 0000H

MOV A,#00 ;Load A with 00000000B FLASH: MOV P1, A ;Send to Port 1 CALL DELAY CPL A

JMP FLASH ;Flashing the LEDs DELAY: MOV R0,#00 MOV R1,#00 LOOP1: DJNZ R0, LOOP1 DJNZ R1, LOOP1 RET END

:100000003E02D3003E00D302CD14002FD302CD1404 :1000100000C30B00168C1EFF1DC2180015C216006F :01002000C916 :0000000000

Contoh Bahasa Mesin (dalam Hex)

Medan Label

Medan Mnemonik/Opkod

Contoh Bahasa Penghimpun

Medan Komen

Medan Operan/Alamat

Prepared by Tan KL

Page 4: BAB 3 SET ARAHAN - kingdiaw85.files.wordpress.com · Î Format arahan: MOV Î pemindahan ... INC A : tambah satu langkah ... Decrement and jump if not zero (undur satu langkah dan

3.3 Kumpulan Set Arahan

Arahan-arahan sesuatu MC boleh dikumpulkan kepada:

i. Pemindahan/pergerakan data

ii. Operasi arithmetik

iii. Operasi logik

iv. Cabang

v. Manipulasi bit

3.3.1 Permindahan/Pergerakan data

Ia melibatkan dua jenis pemindahan data iaitu pemindahan data dalaman sahaja (melibatkan

RAM dan ROM dalaman) dan pemindahan data dalaman dan luaran (melibatkan RAM dan

ROM luaran)

Format arahan:

MOV < destinasi >, < asal >

i. Pemindahan Data Dalaman

• MOV A, # 55H data 55H dipindah

• MOV 20H, # 01H data 01H dipindah

dengan “SETB 20H

• MOV P1, A Kandungan A disal

• MOV R1, #0FH data 0FH disalin k

ii. Pemindahan Data Dalaman dan Luaran

• MOVX A, @DPTR Memindahkan

yang ditunjuk

AccumulatorPrepared by Tan KL

MOV pemindahan data di dalam RAM dalaman,

MOVC pemindahan data antara RAM dan ROM dalaman

MOVX pemindahan data antara RAM danROM luaran

(rujuk gambarajah pada m.s. 2-8)

ke dalam Accumulator (A)

ke dalam alamat 20H; arahan ini sama

in ke dalam Port 1

e dalam register R1

3-4

kandungan ingatan luaran bagi alamat

kan oleh Data Pointer (DPTR) ke dalam

(“@” biasanya untuk alamat yang dirujuk)

Page 5: BAB 3 SET ARAHAN - kingdiaw85.files.wordpress.com · Î Format arahan: MOV Î pemindahan ... INC A : tambah satu langkah ... Decrement and jump if not zero (undur satu langkah dan

Contoh Suruhan:

MOV R0, # 69H

MOV R6, @R0

MOV R1, # 6BH

MOV R7, @R1

Sebelum MOV R0, # 69H Selepas MOV R0, # 69H

Sebelum MOV R6, @R0 Selepas MOV R6, @R0

Sebelum MOV R1, #6B Selepas MOV R1, #6B

00 H

00 H

00 H

R0

R1

R7

0068H AA H

0069H BB H

006AH CC H

006BH DD H

RAM luaran

00 H R6

69 H

00 H

00 H

R0

R1

R7

0068H AA H

0069H BB H

006AH CC H

006BH DD H

RAM luaran

00 H R6

69 H

00 H

00 H

R0

R1

R7

0068H AA H

0069H BB H

006AH CC H

006BH DD H

RAM luaran

00 H R6

69 H

00 H

00 H

R0

R1

R7

0068H AA H

0069H BB H

006AH CC H

006BH DD H

RAM luaran

BB H R6

0068H AA H

0069H BB H

006AH CC H

006BH DD H

RAM luaran 69 H

6B H

00 H

R0

R1

R7

0068H AA H

0069H BB H

006AH CC H

006BH DD H BB H R6

RAM luaran R0

R1

00 H

R6

BB H

R7

00 H

69 H

Prepared by Tan KL

3-5

Page 6: BAB 3 SET ARAHAN - kingdiaw85.files.wordpress.com · Î Format arahan: MOV Î pemindahan ... INC A : tambah satu langkah ... Decrement and jump if not zero (undur satu langkah dan

Sebelum MOV R7, @R1Sebelum MOV R7, @R1

3-6

Selepas MOV R7, @R1

69 H

6B H

00 H

R0

R1

R7

0068H AA H

0069H BB H

006AH CC H

006BH DD H

RAM luaran 69 H

6B H

DD H

R0

R1

R7

0068H AA H

0069H BB H

006AH CC H

006BH DD H

RAM luaran

BB H R6 R6

BB H

3.3.2 Operasi Arithmetik

Ia melibatkan semua arahan aritmetik seperti campur, tolak, darab, bahagi, tambah satu

langkah dan undur satu langkah.

Ia memberi kesan kepada daftar Program Statu Word (PSW).

Contoh: ADD A, R1 : kandungan R1 ditambah kepada Accumulator (A) dan keputusannya

simpan pada Accumulator (A)

ADD A, #55H : data 55H ditambah kepada A dan keputusan simpan di A

SUBB A, R1 : tolak kandungan R1 dan pinjamnya (bendera pembawa pada PSW)

dari A dan simpan keputusan pada A

INC A : tambah satu langkah

DEC A : undur satu langkah

Contoh Suruhan 1:

MOV R5, #69H

MOV A, #0ABH

ADD A, R5

Selesaian:

** ADD A (A) = (A) + (R5)

69H + ABH 1 1 4H

0110 10012

1010 10112

1 0001 01002

Carry, C = 1 Overflow, OV =0

Overflow, OV =0 (genap)

Auxiliary Carry, AC = 1

Pariti, P= 0 (jumlah bilangan “1” = genap)

A ABH ………..

………..

69H

…………

R4

R3

R5

R6

R7

……….. ADD “+”

Prepared by Tan KL

Page 7: BAB 3 SET ARAHAN - kingdiaw85.files.wordpress.com · Î Format arahan: MOV Î pemindahan ... INC A : tambah satu langkah ... Decrement and jump if not zero (undur satu langkah dan

**Bit Overflow, OV disetkan apabila terdapat carry dari Bit 6 ke Bit 7 tetapi tiada pada Bit 7 ke Bit carry, ataupun sebaliknya. Jika tiada, ia diresetkan.

Contoh Suruhan 2:

Tunjukkan keadaan bagi bendera CY, AC , OV dan P pada daftar PSW selepas aturcara di

bawah dilaksanakan.

MOV A, #88H

ADD A, #94H

88H + 94H 1 1 CH

1000 10002

1001 01002

Pariti, P= 1 (jumlah bilangan “1” = ganjil)

1 0001 11002

Carry, C = 1

Overflow, OV = 1 (ganjil)

Selesaian:

Auxiliary Carry, AC = 0

Contoh Suruhan 3:

Tunjukkan keadaan bagi bendera CY, AC , OV dan P pada daftar PSW selepas aturcara di

bawah dilaksanakan.

MOV PSW, #90H

MOV A, #9AH

SUBB A, #6CH

Selesaian:

**SUBB = (A) – CY - #DATA

9AH 1H -6CH 2DH

1001 10102

0000 00012

- 0110 11002

0010 11012

Overflow, OV = 1 (ganjil)

Pariti, P= 0 (jumlah bilangan “1” = genap)

Auxiliary Carry, AC = 1

Carry, C = 0

Prepared by Tan KL

3-7

Page 8: BAB 3 SET ARAHAN - kingdiaw85.files.wordpress.com · Î Format arahan: MOV Î pemindahan ... INC A : tambah satu langkah ... Decrement and jump if not zero (undur satu langkah dan

3.3.3 Operasi Logik

Ia melibatkan kendalian logik seperti DAN, ATAU, EKS-ATAU, bandingan (>, <,=);

anjakan/putaran ke kiri/kanan dan pelengkap/komplimen.

Cth : ANL A, #55H : ANDkan kandungan A dengan data 55H

ORL A, R4 : ORkan kandungan A dengan kandungan R4

XRL 2FH, A : XORkan kandungan di alamat 2FH dengan kandungan A

CPL A : COMPLEMENTkan kandungan A (“0” jadi “1” dan “1” jadi “0”)

RL A : Rotate Left A (Kandungan A diputar-kirikan) Contoh Suruhan 1:

Tentukan kandungan Accumulator (A) selepas aturcara di bawah dilaksanakan:

MOV A, #8CH

ANL A, #94H

Apakah keputusan jika ANL A ditukar dengan ORL A dan XRL A? Apakah keputusan jika

arahan CPL A ditambahkan selepas ANL A?

Selesaian:

1000 11002

ORL 1001 01002

1001 11002

1000 11002

XRL 1001 01002

0001 10002

1000 11002

AND 1001 01002

1000 01002

CPL A 0110 00112 CPL A 1110 01112CPL A 0111 10112

Contoh Suruhan 2:

Tentukan kandungan Accumulator (a) selepas aturcara di bawah dilaksanakan:

MOV A, #63H

RL A

Selesaian:

Kandungan A seperti berikut:

1 1 0 0 0 1 1 0

Prepared by Tan KL

3-8

Page 9: BAB 3 SET ARAHAN - kingdiaw85.files.wordpress.com · Î Format arahan: MOV Î pemindahan ... INC A : tambah satu langkah ... Decrement and jump if not zero (undur satu langkah dan

Selepas RL A:

3-9

1 1 0 0 0 1 1 0

**Jika RR A

1 0 1 1 0 0 0 1

Contoh Suruhan 3:

Tentukan kandungan Accumulator (a) selepas aturcara di bawah dilaksanakan:

MOV PSW, #80H

MOV A, #63H

RLC A

Selesaian:

Sebelum RLC A:

0 1 1 0 0 0 1 1

CY

1

CY

PSW 0 0 0 0 0 0 0

1

Selepas RLC A:

CY

0 1 1 1 0 0 0 1 1

**Bagaimana dengan RRC A???

Prepared by Tan KL

Page 10: BAB 3 SET ARAHAN - kingdiaw85.files.wordpress.com · Î Format arahan: MOV Î pemindahan ... INC A : tambah satu langkah ... Decrement and jump if not zero (undur satu langkah dan

3.3.4 Cabang

Ia melibatkan arahan melompat di mana kawalan aturcara akan berubah ke lokasi (alamat)

baru berbeza dari jujukan asal aliran aturcara.

Arahan lompat mungkin bersyarat atau tanpa bersyarat bergantung kepada kehendak

pengguna

Syarat yang dikenakan merujuk pada keadaan PSW.

• Cth “CJNE” = jika hasil bandingan tidak sama, maka melompat

• “JNZ” = melompat jika kandungan Accumulator (A) tidak kosong.

PROSES

PROSES SELESAI?

Ya

Tidak

TAMAT

MULA

i. Arahan Lompat Bersyarat:

PROSES 1

PROSES N

PROSES 2

TAMAT

MULA

ii. Arahan Lompat Tanpa Bersyarat:

Contoh Suruhan 1:

Berapa kali arahan ADD dilaksanakan jika aturcara di bawah dilaksanakan?

MOV A, #80H

LOOP: ADD A, #40H

JNZ LOOP

END

Selesaian:

1000 00002

ADD 0100 00002

00001100 2

Kandungan A tidak “0”, maka ia lompat kepada LOOP

Prepared by Tan KL

3-10

Page 11: BAB 3 SET ARAHAN - kingdiaw85.files.wordpress.com · Î Format arahan: MOV Î pemindahan ... INC A : tambah satu langkah ... Decrement and jump if not zero (undur satu langkah dan

1100 00002

ADD 0100 00002

00001 0000 2

Carry Flag Accumulator

(A)

Kandungan A “0”, maka ia teruskan aturcara

** Maka aturcara melakukan operasi ADD sebanyak 2 kali

Contoh Suruhan 2:

Berapa kali aturcara melakukan arahan DJNZ jika aturcara di bawah dilaksanakan?

MOV R5, # 07H

AGAIN: DJNZ R5, AGAIN

END

Selesaian:

DJNZ – Decrement and jump if not zero (undur satu langkah dan lompat jika tidak kosong)

07H

R5

06H

R5

05H

R5

04H

R5

03H

R5

02H

R5

01H

R5

00H

R5

1X 2X 3X

4X

5X 6X 7X

** Maka aturcara di atas melakukan 7 kali arahan DJNZ

(Fikirkan jika masa melakukan sekali arahan DJNZ memakan 1 saat, maka aturcara di atas

memakan masa 7 saat untuk berhenti. Lengah masa terhasil pada aturcara di atas)

Contoh Suruhan 3:

Cuba teka proses mana yang akan dilakukan apabila aturcara di bawah dilaksanakan.

MOV R5, # 07H

CJNE R5, #05, proses1

CALL proses2

END

Prepared by Tan KL

3-11

Page 12: BAB 3 SET ARAHAN - kingdiaw85.files.wordpress.com · Î Format arahan: MOV Î pemindahan ... INC A : tambah satu langkah ... Decrement and jump if not zero (undur satu langkah dan

Selesaian:

Proses1 dilakukan. Mengapa???

3.3.4 Manipulasi Bit

Ia melibatkan arahan yang menangani bit demi bit secara terus (sama ada men”set”kan

atau me”reset”kan ataupun memindahkan bit-bit tertentu ke komponen lain.)

Contoh: CLR P1.3 : Pin P1.3 diresetkan yakni pin itu menjadi logik ”0”

SETB P3.7 : Pin P3.7 disetkan yakni pin itu menjadi logik ”1”

ANL C, P2.5 : ANDkan bit CY dengan pin P2.5

JB P2.4, START : Jika pin P2.4 adalah set (logik “1”), maka lompat ke START

Contoh Suruhan:

Kaji aturcara di bawah dan terangkan apa yang berlaku.

SETB P2.3

MOV R1, #07H

LOOP: DJNZ R1, LOOP

CLR P2.3

Selesaian:

Pin P2.3 akan disetkan (logik ”1”). Ini bererti ia boleh menyalakan LED. Arahan ”MOV R1,

#07H” dan “LOOP: DJNZ R1, LOOP” merupakan masa lengah. Selepas habis masa lengah ini

pin P2.3 direset (logik “0”) pula. Ini bererti LED yang dipasangkan itu diOFFkan.

MC 8051

P2.3

1K ohm

CLR P2.3

“0”

LED OFF

MC 8051

P2.3

1K ohm

SETB P2.3

“1”

LED ON

Prepared by Tan KL

3-12

Page 13: BAB 3 SET ARAHAN - kingdiaw85.files.wordpress.com · Î Format arahan: MOV Î pemindahan ... INC A : tambah satu langkah ... Decrement and jump if not zero (undur satu langkah dan

3.4 Konsop LIFO Di Penunjuk Tindan (Stack Pointer)

Penunjuk Tindan (Stack Pointer) merupakan tempat khas dalam ingatan di mana alamat

data disimpan secara masuk terakhir-keluar dahulu (LIFO)

Ia diletakkan di dalam ingatan RAM Main

Program

CALL

Subrutin

RET

Lokasi RAM

Ia dicapai menerusi Penunjuk Tindanan

(Stack Pointer)

Cth arahan : PUSH, POP, CALL dan RET

3.4.1 Konsep LIFO

Satu konsep yang biasanya berlaku di Penunjuk Tindan (Stack Pointer) apabila arahan-

arahan seperti PUSH, POP, CALL dan RET digunakan.

Ia menerangkan data yang akhir dimasukkan ke dalam Penunjuk Tindan akan dikeluarkan

dahulu (Last In First Out).

Ia juga boleh diterangkan dengan data yang terdahulu dimasukkan ke dalam Penunjuk

Tindan akan dikeluarkan kemudian (First In Last Out).

Arahan yang digunakan untuk memasukkan alamat data ke dalam Penunjuk Tindan ialah

PUSH dan CALL manakala arahan POP dan RET ialah suruhan untuk mengeluarkan data dari

Penunjuk Tindan.

3-13 Prepared by Tan KL

PUSH/CALL: POP/RET:

220AH

(220AH)

226AH

(220AH)

(226AH)

RAM (Stack Pointer)

Bakul

(220AH)

226AH 220AH

(226AH)

(220AH)

Page 14: BAB 3 SET ARAHAN - kingdiaw85.files.wordpress.com · Î Format arahan: MOV Î pemindahan ... INC A : tambah satu langkah ... Decrement and jump if not zero (undur satu langkah dan

Contoh Arahan:

START: MOV A, P1

3-14

routine *** CALL DELAY

utama MOV A, #00H

JMP START

DELAY: MOV R1, #00H

Delay

subroutine

RET

END

1

3

5

2

4

6

Arahan dilaksana satu demi satu

Masa melompat

Keterangan:

1. Mula-mula aturcara dilaksanakan langkah demi langah dari “MOV A, P1” hingga ke arahan

sebelum “CALL DELAY”.

2. Pada arahan “CALL DELAY”, aturcara dikehendaki melompat ke subroutine yang bernama

“DELAY”. Maka alamat yang ditanda dengan “***” akan diletakkan pada Stack Pointer

supaya bila subroutine habis dibuat, alamat ini akan dirujuk semula.

3. Kerja pemprosesan akan diteruskan di subroutine pada masa ini, iaitu arahan ”MOV R1,

#00H” hingga arahan sebelum RET.

4. Apabila arahan ”RET” dijumpai (yakni bererti subroutine telah habis dibuat), maka kerja

pemprosesan akan diteruskan pada routine utama yang bertanda 5 (alamat ”***” dirujuk

semula dan arahan selepasnya dilaksanakan) dengan arahan bermula dengan ”MOV

A,#00H” hinggalah arahan ”JMP START”.

Prepared by Tan KL

Page 15: BAB 3 SET ARAHAN - kingdiaw85.files.wordpress.com · Î Format arahan: MOV Î pemindahan ... INC A : tambah satu langkah ... Decrement and jump if not zero (undur satu langkah dan

3.5 Masa Laksana Dan Subroutine Lengah Masa (Delay)

Masa untuk melaksanakan suatu arahan bergantung kepada frekuensi klok dan bilangan

kitaran mesin (machine cycle) yang digunakan.

Sebagai contoh: MOV RO, #00H (memerlukan 2 kitaran mesin)

Jika Krystal 12MHz digunakan pada litar pengayun dan setiap kitaran

mesin memerlukan 12 denyutan klok, maka arahan di atas memerlukan

24 denyutan klok (bersamaan dengan 2u saat) untuk melaksanakan

Secara kesimpulan:

3-15

1 kitaran mesin = 12 denyutan klok

= 12 x 1/12 MHz

= 1u saat

Masa pelaksanaan sesuatu arahan boleh digunakan sebagai lengahan masa sesuatu

aturcara.

2 kitaran mesin = 24 denyutan klok

= 24 x 1/12MHz

= 2u saat

3.5.1 Subroutine Untuk Lengah Masa (Delay)

Aturcara Subroutine merupakan satu aturcara yang direka untuk “membazirkan” masa.

Ia menggunakan satu atau lebih register (R0 – R7) untuk tujuan lengah masa ini.

Oleh kerana setiap register boleh memegang data 8 bit, maka data yang boleh dimasukkan

ke dalamnya ialah dari 0 hingga 255 (FFH = 11111111B).

Arahan DJNZ akan digunakan untuk mengurangkan kandungan register langkah demi

langkah sehingga nilai menjadi 0 (Arahan DJNZ ini akan menyebabkan aturcara sentiasa

patah balik kepadanya –looping - sehingga menjadi 0).

Contoh arahan:

DELAY: MOV R0, #255 ; data 255 diletak pada R0

LOOP: DJNZ RO, LOOP ; kandungan R0 – 1 sehingga R0 menjadi 0

RET ; jika R0 = 0, balik ke routine utama

(Perhatikan aturcara di atas akan sentiasa patah balik ke arahan “LOOP: DJNZ RO,

LOOP” sehinggalah kandungan R0 adalah 0. Ini bererti arahan tersebut telah diulang

sebanyak 255 kali. Masa lengah yang tercipta adalah 2u x 255 = 510u saat).

Prepared by Tan KL

Page 16: BAB 3 SET ARAHAN - kingdiaw85.files.wordpress.com · Î Format arahan: MOV Î pemindahan ... INC A : tambah satu langkah ... Decrement and jump if not zero (undur satu langkah dan

Jumlah masa lengah keseluruhan = 2u + 510u + 2u = 514u saat = 0.514m saat

RET

DJNZ RO, LOOP

MOV R0, #255

3-16

255

R0

254

R0

253

R0

03H

R0

02H

R0

01H

R0

00H

R0

1X 2X 3X

253X 254X 255X

Jika R0 diletak dengan data #00, maka ia boleh di loop” sebanyak 256 kali. Ini kerana bila

#00 diundurkan satu langkah, ia menjadi 255 (00000000B 11111111B 11111110B ...

0000001B 00000000B)

Contoh Arahan:

DELAY: MOV R0, #00 ; data 00 diletak pada R0

LOOP: DJNZ RO, LOOP ; kandungan R0 – 1 sehingga R0 menjadi 0

RET

00

R0

255

R0

254

R0

03H

R0

02H

R0

01H

R0

00H

R0

1X 2X 3X

254X 255X 256X

1 + 255

Untuk memanjangkan masa lengah, lebih daripada satu biji register digunakan.

Prepared by Tan KL

Page 17: BAB 3 SET ARAHAN - kingdiaw85.files.wordpress.com · Î Format arahan: MOV Î pemindahan ... INC A : tambah satu langkah ... Decrement and jump if not zero (undur satu langkah dan

Contoh Arahan:

DELAY: MOV R0, #00

MOV R1, #20

LOOP: DJNZ R0, LOOP ; 2u x 256 kali = 512u saat

DJNZ R1, LOOP ; 512u x 20 = 1024u saat

RET

* Jika R1 = 30, jumlah masa lengah ialah 512u x 30 =15360u saat

* Jika R1 = 255, jumlah masa lengah ialah 512u x 255 = 130560u saat = 0.13 saat

Latihan:

a. Nyatakan dan bezakan antara bahasa-bahasa berikut:

i. Bahasa Tahap Tinggi ii. Bahasa Penghimpun

iii. Bahasa Mesin

b. Apakah yang dimaksudkan dengan perkataan ”mnemonic”?

c. Nyatakan dan bezakan 4 medan yang mungkin wujud pada setiap arahan.

d. Apakah perbezaan di antara MOV A, #30H dengan MOV A, 30H?

e. Apakah perbezaan di antara MOV A, R1 dengan MOV A, @R1?

f. Apakah perbezaan di antara DEC R7 dengan INC R7?

g. Apakah perbezaan di antara ANL A, #30H denganXRL A, 30H?

h. Apakah perbezaan di antara DJNZ 30H, LOOP dengan DJNZ R0, LOOP?

i. Apakah perbezaan di antara RL A dengan RR A?

j. Apakah perbezaan di antara CLR C dengan SETB C?

k. Apa yang akan berlaku apabila aturcara-aturcara berikut dilaksanakan?

l. Tuliskan arahan bagi kenyataan

i. MOV 20H, #30H MOV 30H, 20H MOV R0, 20H MOV @RO, #00

i. Pindahkan kandungan Accum

ii. Pindahkan kandungan ingatan

iii. Tambahkan kandungan Accu

iv. Setkan bit ke-7 pada port 3

m. Tuliskan satu subroutine lenga

Prepared by Tan KL

ii. MOV 40H, #50H MOV 50H, #40H MOV R0, #30H MOV 30H, 40H MOV R1, #40H

3-17

di bawah:

ulator ke dalam register ke-5.

RAM pada lokasi 42H kepada Port1.

mulator dengan data 5FH.

.

h masa yang boleh melengahkan masa sebanyak 4 saat.

Page 18: BAB 3 SET ARAHAN - kingdiaw85.files.wordpress.com · Î Format arahan: MOV Î pemindahan ... INC A : tambah satu langkah ... Decrement and jump if not zero (undur satu langkah dan

CARA MENGHIMPUNKAN SURUHAN/ARAHAN DENGAN MENGGUNAKAN JADUAL OPCODE

A. Saiz suatu suruhan.

Contoh 1:

MOV A, #6DH

74 6D Hex (0111 0100 0110 11012)

Contoh 2:

XRL A, R7

6F Hex

(0110 11112)

Contoh 3:

CJNE A, #30H, PROSES1

B4 30 **alamat offset yang ditunjukkan

oleh PROSES1, bersaiz 1 byte

JADUAL OPCODE Hex Code Bytes Mnemonic Operands

6E 1 XRL A, R6 6F 1 XRL A, R7 70 2 JNZ offset

72 2 ORL C, bit 73 1 JMP @A+DPTR 74 2 MOV A, #immed 75 3 MOV direct,

#immed 76 2 MOV @R0,

#immed

B2 2 CPL bit B3 1 CPL C B4 3 CJNE A, #immed,

offset B5 3 CJNE A, direct,

offset

Bila dihimpunkan mengikut Jadual Opcode

Suruhan “MOV A, #6DH” ini bersaiz 2 byte

Bila dihimpunkan mengikut Jadual Opcode

Suruhan “XRL A, R7” ini bersaiz

1 byte

Suruhan “CJNE A, #30H,PROSES1” ini

bersaiz 3 byte

Prepared by Tan KL 3-18

Page 19: BAB 3 SET ARAHAN - kingdiaw85.files.wordpress.com · Î Format arahan: MOV Î pemindahan ... INC A : tambah satu langkah ... Decrement and jump if not zero (undur satu langkah dan

Contoh 4:

Kandungan ingatan RAM selepas aturcara di bawah dihimpunkan:

ORG 00F6H

MOV A, #2DH

ANL A, R1

ORL A, #3AH

MOV P1, A

KANDUNGAN RAM SELEPAS ATURCARA DIHIMPUN ALAMAT DATA 00F6H 74 00F7H 2D 00F8H 59 00F9H 44 00FAH 3A 00FBH F5 00FCH 90

Saiz/Jumlah byte : 7 byte

Aturcara mula di 00F6H

END

Contoh 5:

Kandungan ingatan RAM selepas aturcara di bawah dihimpunkan:

ORG 008DH KANDUNGAN RAM SELEPAS ATURCARA DIHIMPUN ALAMAT DATA 008DH 74 008EH 77 008FH 7A 0090H 3A 0091H F5 0092H 80 0093H F4 0094H DA 0095H FB 0096H

Saiz/Jumlah byte : 9 byte

FBH = 0091H – 0096H

(lokasi selepas suruhan ”DJNZ R2 REPEAT)

(lokasi di mana label REPEAT)

MOV A, #77H

MOV R2, #3AH

REPEAT: MOV P0, A

CPL A

DJNZ R2, REPEAT

END

Contoh 6:

Kandungan ingatan RAM selepas aturcara di bawah dihimpunkan:

ORG 00AAH KANDUNGAN RAM SELEPAS ATURCARA DIHIMPUN

ALAMAT DATA 00AAH 24 00ABH 45 00ACH 50 00ADH 04 00AEH 54 00AFH 0F 00B0H 70 00B1H F8 00B2H F5 00B3H 90

Saiz/Jumlah byte : 10 byte

F8H = 00AAH – 00B2H

(lokasi di mana Label ”ATAS”) (lokasi selepas

suruhan ”JNZ ATAS”)

04H = 00B2H – 00AEH

(lokasi di mana Label ”BAWAH”)

(lokasi selepas suruhan ”JNC BAWAH”)

ATAS: ADD A, #45H

JNC BAWAH

ANL A, #0FH

JNZ ATAS

BAWAH: MOV P1, A

END

Prepared by Tan KL 3-19

Page 20: BAB 3 SET ARAHAN - kingdiaw85.files.wordpress.com · Î Format arahan: MOV Î pemindahan ... INC A : tambah satu langkah ... Decrement and jump if not zero (undur satu langkah dan

LATIHAN:

Tunjukkan keadaan RAM apabila aturcara berikut dilaksanakan:

ii. ORG 0066H MOV A, #00 MOV P1, A ORL A, #1DH MOV P2, A ANL A, #0FFH MOV P3, A END

v. ORG 00EAH SETB P1.7 TURN: MOV A, P1 ANL A, #0FH JNZ STOP

ORL A, #1DH JZ TURN STOP: MOV P3, A MOV P1, #00H END

iii. ORG 0089H MOV A, P1 ON: ADD A, #1DH CPL A JNZ ON MOV P3, A MOV P1, A END

i. ORG 004AH MOV P3, #0FFH MOV P1, #00 MOV A, P3 XRL A, R4 CPL A MOV P2, A END

iv. ORG 00D6H MOV A, #0FFH MOV P1, A ORL A, #1DH JZ OFF MOV P0, A XRL A, #0FH OFF: MOV P3, A SETB P3.4 END

Prepared by Tan KL

ii. 0066 0066 7400 0068 F590 006A 441D 006C F5A0 006E 54FF 0070 F5B0 Saiz = 12 byte

ANS: i. 004A

004A 75B0FF 004D 759000 0050 E5B0 0052 6C 0053 F4 0054 F5A0

Saiz = 12 byte

iii. 0089 0089 E590 008B 241D 008D F4 008E 70FB 0090 F5B0 0092 F590

Saiz = 11 byte

iv. 00D6 00D6 74FF 00D8 F590 00DA 441D 00DC 6004 00DE F580 00E0 640F 00E2 F5B0 00E4 D2B4 Saiz = 16 byte

v. 00EA 00EA D297 00EC E590 00EE 540F 00F0 7004 00F2 441D 00F4 60F6 00F6 F5B0 00F8 759000 Saiz = 17 byte

3-20