Top Banner
Tipe-Tipe Instruksi MCS-51 (Arithmatika) Instruksi Arithmatika
22

Tipe-Tipe Instruksi MCS-51 (Arithmatika)

Jan 15, 2016

Download

Documents

mikkel isaksen

Tipe-Tipe Instruksi MCS-51 (Arithmatika). Instruksi Arithmatika. Tipe-Tipe Instruksi MCS-51 (Arithmatika). Penjumlahan ADD A, 7Fh ; a diisi dg a+isi dari memori lokasi 7Fh ; (pengalamatan langsung) - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Tipe-Tipe Instruksi MCS-51 (Arithmatika)

Tipe-Tipe Instruksi MCS-51(Arithmatika)

Instruksi Arithmatika

Page 2: Tipe-Tipe Instruksi MCS-51 (Arithmatika)

Tipe-Tipe Instruksi MCS-51(Arithmatika)

1. Penjumlahan

ADD A, 7Fh ; a diisi dg a+isi dari memori lokasi 7Fh ; (pengalamatan langsung) ADD A, @R1 ; a diisi dg a+isidari memori yang alamatnya ; disimpan di R1 (pengalamatan tak langsung) ADD A, R7 ; a diisi dg a+isi dari R7 ADD A, #127 ; a diisi dg a+127 (pengalamatan segera) 2. Incremental dan Decremental Data di dalam memori internal dapat dinaikkan atau diturunkan

tanpa melalui akumulator.

Page 3: Tipe-Tipe Instruksi MCS-51 (Arithmatika)

Tipe-Tipe Instruksi MCS-51(Arithmatika)

3. Perkalian Instruksi MUL AB, mengalikan akumulator dg data yang ada

pada register B dan meletakkan hasil 16 bit ke dalam register A dan B

4. Pembagian Instruksi DIV AB membagi isi akumulator dg data dalam reg. B

dan meletakkan hasil bagi 8 bit dalam akumulator dan sisanya 8 bit dalam reg. B

5. Decimal Ajust Instruksi DA A, untuk operasi aritmatik BCD

Page 4: Tipe-Tipe Instruksi MCS-51 (Arithmatika)

Tipe-Tipe Instruksi MCS-51(Instruksi Logika)

Page 5: Tipe-Tipe Instruksi MCS-51 (Arithmatika)

Tipe-Tipe Instruksi MCS-51(Instruksi Logika)

1. Operasi AND, OR dan XOR

2. SWAP Mov a, #0Fah ; isi a dengan Fah Swap a ; isi a menjadi Afh

Page 6: Tipe-Tipe Instruksi MCS-51 (Arithmatika)

Tipe-Tipe Instruksi MCS-51(Transfer Data)

Mov adalah proses move (pindah) data dari sumber ke tujuan adalah Proses mengcopy

Page 7: Tipe-Tipe Instruksi MCS-51 (Arithmatika)

Tipe-Tipe Instruksi MCS-51(Transfer Data)

1. Memori internal ; keadaan awal isi RAM dg alamat 30h adalah 40h, lokasi 40h ; berisi 10h, P1 berisi 11001010b

mov R0,#30h ; R0 berisi 30h mov A,@R0 ; A berisi 40h mov R1, A ; R1 berisi 40h mov B,@R1 ; B berisi 10h mov @R1,P1 ; RAM lokasi 40h berisi 11001010b mov P2,P1 ; P2=P1= 11001010b

2. Program Memori MOVC adalah perintah move code bit,mengcopy isi dari program memori dilokasi yang ditunjukkan oleh DPTR atau PC. Contoh :

Page 8: Tipe-Tipe Instruksi MCS-51 (Arithmatika)

Tipe-Tipe Instruksi MCS-51(Transfer Data)

mov A,@A+DPTR ; copy isi program memori lokasi <A+DPTR> ke A, ; Jika mula-mula A berisi 23h dan DPTR berisi 123Eh, ; maka perintah ini mengcopy isi programmemori lokasi ; 1261h ke A mov A,@A+PC ; copy isi program memori lokasi <A+PC> ke A 3. Data Memori MOVX adalah perintah move eksternal, digunakan untuk mengcopy isi dari dan ke data memori. movx A,@R1 ; copy isi data memori lokasi <R1> ke A movx @R0,A ; copy A ke data memory lokasi <R0> movx A,@DPTR ; copy isi data memori lokasi <DPTR> ke A movx @DPTR,A ; copy A ke data memory lokasi <DPTR>

Page 9: Tipe-Tipe Instruksi MCS-51 (Arithmatika)

Tipe-Tipe Instruksi MCS-51(Transfer Data)

4. Proses Stack PUSH (pushing berarti mendorong) dan POP (poping berartimenyembulkan kembali) adalah perintah yg digunakan utk menyelamatkan data karena register yang bersangkutan akan digunakan utk proses lain, atau utk mengingat alamat yang ditinggalkannya akibat adanya pemanggilan subrutin atau adanya interupsi. mov SP,#2Fh ; isi SP dg 2Fh, menunjukkan bahwa stack pointer pada posisi ; memori internal alamat 2F mov a,#0Aah ; isi a dg AAh mov b,#0BBh ; isi b dg BBh PUSH Acc ; memori lokasi 30h berisi Aah, SP=31h PUSH b ; memori lokasi 31h berisi BBh, SP=31h push b ; memori lokasi 32h berisi BBh, SP=32h Pop Acc ; a=memori lokasi 32h=BBh, SP=31h Pop b ; b=memori lokasi 31h=aah, SP=30h

Page 10: Tipe-Tipe Instruksi MCS-51 (Arithmatika)

Tipe-Tipe Instruksi MCS-51(Transfer Data)

Proses PUSH akan menaikkan isi SP menjadi SP+1, kemudian mendorong datadirect ke lokasi memori yg ditunjukkan oleh SP. Proses POP akan menarik kembali data dari lokasi memori yg ditunjukkan oleh SP, kemudian isi SP dikurangi 1. Prosesini seperti proses menumpuk data di memori dg cara ‘yg masuk terakhir keluar dulu’atau dalam istilah LIFO (Last In First Out).

Page 11: Tipe-Tipe Instruksi MCS-51 (Arithmatika)

Tipe-Tipe Instruksi MCS-51(Transfer Data)

5. Pertukaran Data XCH adalah pertukaran data antara akumulator dg <byte> yang ragam pengalamatnnya bisa secara direct, register atau indirect. mov a,#0Aah ; isi a dg AAh mov b,#0BBh ; isi b dg BBh XCH a,b ; isi a=BBh, isi b=Aah XCHD adalah pertukaran nibble rendah antara akumulator dg memori dg pengalamatan indirect dg Rn, sementara nibble tinggi tdk berubah. mov a,#0Aah ; isi a dg AAh mov 20h,#0CCh ; memori lokasi 20h berisi CCh mov R1,#20h ; R1 berisi 20h XCHD a,@R1 ; tukar nibble rendah antara A dg memori lokasi ;020h, A=Cah dan memori lokasi 20h berisi 0ACh

Page 12: Tipe-Tipe Instruksi MCS-51 (Arithmatika)

Tipe-Tipe Instruksi MCS-51(Pencabangan Program)

Page 13: Tipe-Tipe Instruksi MCS-51 (Arithmatika)

Tipe-Tipe Instruksi MCS-51(Pencabangan Program)

1. Subrutin adalah penggal program yang dapat dipakai berulang-ulang tanpa harus menulis ulang perintahnya. Ada 2 cara memanggil subrutin yang terdapat pada program memori yaitu ACALL yang maksimum hanya bisa mengakses hingga 2K (11 address line) saja dan LCALL yang dapat mengakses hingga 64K.

Acall Hitung ; memanggil subrutin hitung

Hitung : mov a,#0Aah mov b,#0BBh add a,b ret

Page 14: Tipe-Tipe Instruksi MCS-51 (Arithmatika)

Tipe-Tipe Instruksi MCS-51(Pencabangan Program)

2. Pencabangan tak bersyarat Pencabangan dalam asembler biasanya ada huruf J, berarti jump, atau lompat, subrutin adalah lompat dan kembali lagi, kalau hanya lompat tak bersyarat, biasanya tdk kembali ke tempat semula (seperti GOTO). AJMP bisamelompat dalam program memori maks 2K saja. dan LJMP dapat melompat 64K. Pencabangan relatif menggunakan perintah SJMP. Instruksi JMP

@A+DPTR adalah lompat absolut ke lokasi memori yg alamatnya ditunjukkan pada DPTR+isi A, lompatan ini biasanya utk pencabangan ke lokasi tertentu yang ditentukan oleh isi A.

Page 15: Tipe-Tipe Instruksi MCS-51 (Arithmatika)

Tipe-Tipe Instruksi MCS-51(Pencabangan Program)

MOV DPTR,#JMP_TABLE JMP @A+DPTR

JMP_TABLE :

AJMP LABEL0 AJMP LABEL1 AJMP LABEL2 AJMP LABEL3

Jika isi a mula-mula = 0, maka akan mencabang ke LABEL0, jika a=1 akan mencabang ke LABEL1 dst

Page 16: Tipe-Tipe Instruksi MCS-51 (Arithmatika)

Tipe-Tipe Instruksi MCS-51(Pencabangan Program)

3. Pencabangan bersyarat yaitu lompat ke alamat tertentu bila persyaratan terpenuhi. instruksinya CJNE <dest-

byte>,<src-byte>, rel ; artinya compare destination byte dan source byte, Jump if not equal along rel(ative). Source byte adalah A, yang dibandingkan dg destination byte berupa direct memori atau immediate constant. Source dapat juga berupadirect Rn atau indirect @Rn yang dibandingkan dg immediate constant.

START : CJNE A,#040h,LABEL1 ; bandingkan a dg 40h, jika tak sama lompat ke LABEL1 CJNE A, P1, LABEL1 ; bandingkan a dg P1, jika tak sama lompat ke LABEL1 CJNE R1,#040h,LABEL1 ; bandingkan R1 dg 40h, jika tak sama lompat ke ; LABEL1 CJNE @R1,#0CCh,LABEL1 ; bandingkan indirect R1 dg CCh, jika tak sama ; lompat LABEL1 LABEL! : _______ ________

Page 17: Tipe-Tipe Instruksi MCS-51 (Arithmatika)

Tipe-Tipe Instruksi MCS-51(Pencabangan Program)

Instruksi DJNZ direct, rel, adalah decrement jump if not zero, artinya kurangi satu dahulu data di direct, kemudian bila isinya nol, maka lompatlah ke rel. Biasanya instruksi ini dipakai untuk pencacah

Start : Mov R0,#5 ; isi R0 dg 5 Mov R1,#40h ; isi R1 dg 40h LOOP : Mov @R1,#0Aah ; isi memori di <R1> dg Aah Inc R1 ; R1=R1+1 DJNZ R0, LOOP ; R0=R0-1, jika belum 0 kembali ke loop Sjmp $ ; selesai

di sini R0 digunakan utk pencacah sebanyak 5 kali,sedangkan R1 dipakai sebagai pointer memori dg alamat awal 40h.

Page 18: Tipe-Tipe Instruksi MCS-51 (Arithmatika)

Tipe-Tipe Instruksi MCS-51(Pencabangan Program)

4. No operation (NOP) yaitu memrintahkan CPU tdk mengerjakan apa-apa, proses ini hanya menunda kerja dari CPU, karena satu instruksi NOP membutuhkan waktu 1 µS.

Page 19: Tipe-Tipe Instruksi MCS-51 (Arithmatika)

Tipe-Tipe Instruksi MCS-51(Manipulasi dan Operasi Variabel Boolean)

Manipulasi dan Operasi Boolean

Page 20: Tipe-Tipe Instruksi MCS-51 (Arithmatika)

Tipe-Tipe Instruksi MCS-51(Manipulasi dan Operasi Variabel Boolean)

1. Operasi SET, CLEAR dan Komplemen SET berarti menjadikan '1', apapun mulanya, CLR berarti menjadikan '0', apapun mulanya sedangkan CPL berarti membalikkan status bit

CLR C ; Carry =‘0’ SETB P1.3 ; P1.3 menjadi ‘1’ CLR P1.4 ; P1.4 menjadi ‘0’ Mov a,#10101010b ; isi a menjadi AAh CLR Acc,3 ; a menjadi 10100010b SETB Acc,6 ; a menjadi 11100010b CPL 0E0h ; lokasi bit 0E0h dikomplemenkan.

Page 21: Tipe-Tipe Instruksi MCS-51 (Arithmatika)

Tipe-Tipe Instruksi MCS-51(Manipulasi dan Operasi Variabel Boolean)

2. Operasi Logika Perintah tanda /(slash) adalah operasi NOT, jadi bitnya dikomplemenkan dahulu baru di operasikan logikanya.

Set P1.1 ; P1.1 = ‘1’ Set C ; C = ‘1’ ANL C,/P1.1 ; C= ‘1’ AND ‘0’, jadi C = ‘0’

3. Pencabangan Pencabangan program pada operasi boolean hanya pencabangan bersyarat, yaitu persyaratan jika carry bernilai ‘1’ atau ‘0’, seperti pada JC (Jump if Carry set) dan JNC (Jump if No Carry), No carry berarti carry =‘0’. Instruksi JB adalah Jump if Bit artinya bila bit = ‘1’, maka lompat, kebalikannya adalah JNB (Jump if No Bit), atau bit=‘0’.

Page 22: Tipe-Tipe Instruksi MCS-51 (Arithmatika)

Tipe-Tipe Instruksi MCS-51(Manipulasi dan Operasi Variabel Boolean)

Bit adalah semua memori yg dapat dialamati secara bit. Perintah ini dapat digunakan utk mendeteksi port bit berstatus ‘1’ atau ‘0’ Loop : JB P1.3, kebakaran Sjmp aman kebakaran : Setb P1.1 Setb P1.2 ___ ___ ajmp loop aman : clr P1.1 clr P1.2 ___ ___ ajmp loop