BAB 3 SET ARAHAN - kingdiaw85.files.wordpress.com · Î Format arahan: MOV Î pemindahan ... INC A...
Transcript of BAB 3 SET ARAHAN - kingdiaw85.files.wordpress.com · Î Format arahan: MOV Î pemindahan ... INC A...
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
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
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
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)
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
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
**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
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
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
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
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
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
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)
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
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
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
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.
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
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
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