Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
Diterbitkan olehZaenal Puji Telah diubah "10 tahun yang lalu
1
Tipe-Tipe Instruksi MCS-51 (Arithmatika)
Instruksi Arithmatika
2
Tipe-Tipe Instruksi MCS-51 (Arithmatika)
Penjumlahan ADD A, 7Fh ; a diisi dg a+isi dari memori lokasi 7Fh ; (pengalamatan langsung) ADD ; a diisi dg a+isidari memori yang alamatnya ; disimpan di R1 (pengalamatan tak langsung) ADD A, R ; a diisi dg a+isi dari R7 ADD A, # ; a diisi dg a+127 (pengalamatan segera) 2. Incremental dan Decremental Data di dalam memori internal dapat dinaikkan atau diturunkan tanpa melalui akumulator.
3
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
4
Tipe-Tipe Instruksi MCS-51 (Instruksi Logika)
5
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
6
Tipe-Tipe Instruksi MCS-51 (Transfer Data)
Mov adalah proses move (pindah) data dari sumber ke tujuan adalah Proses mengcopy
7
Tipe-Tipe Instruksi MCS-51 (Transfer Data)
Memori internal ; keadaan awal isi RAM dg alamat 30h adalah 40h, lokasi 40h ; berisi 10h, P1 berisi b mov R0,#30h ; R0 berisi 30h mov ; A berisi 40h mov R1, A ; R1 berisi 40h mov ; B berisi 10h ; RAM lokasi 40h berisi b mov P2,P ; P2=P1= b 2. Program Memori MOVC adalah perintah move code bit,mengcopy isi dari program memori dilokasi yang ditunjukkan oleh DPTR atau PC. Contoh :
8
Tipe-Tipe Instruksi MCS-51 (Transfer Data)
mov ; 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 ; 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 ; copy isi data memori lokasi <R1> ke A ; copy A ke data memory lokasi <R0> movx ; copy isi data memori lokasi <DPTR> ke A ; copy A ke data memory lokasi <DPTR>
9
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
10
Tipe-Tipe Instruksi MCS-51 (Transfer Data)
Proses PUSH akan menaikkan isi SP menjadi SP+1, kemudian mendorong data direct 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. Proses ini seperti proses menumpuk data di memori dg cara ‘yg masuk terakhir keluar dulu’ atau dalam istilah LIFO (Last In First Out).
11
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 ; tukar nibble rendah antara A dg memori lokasi ;020h, A=Cah dan memori lokasi 20h berisi 0ACh
12
Tipe-Tipe Instruksi MCS-51 (Pencabangan Program)
13
Tipe-Tipe Instruksi MCS-51 (Pencabangan Program)
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
14
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 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.
15
Tipe-Tipe Instruksi MCS-51 (Pencabangan Program)
MOV DPTR,#JMP_TABLE 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
16
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 yang dibandingkan dg immediate constant. START : CJNE A,#040h,LABEL1 ; bandingkan a dg 40h, jika tak sama lompat ke LABEL1 CJNE A, P1, LABEL ; bandingkan a dg P1, jika tak sama lompat ke LABEL1 CJNE R1,#040h,LABEL1 ; bandingkan R1 dg 40h, jika tak sama lompat ke ; LABEL1 ; bandingkan indirect R1 dg CCh, jika tak sama ; lompat LABEL1 LABEL! : _______ ________
17
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,# ; isi R0 dg 5 Mov R1,#40h ; isi R1 dg 40h LOOP : ; isi memori di <R1> dg Aah Inc R ; 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.
18
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.
19
Tipe-Tipe Instruksi MCS-51 (Manipulasi dan Operasi Variabel Boolean)
Manipulasi dan Operasi Boolean
20
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 P ; P1.3 menjadi ‘1’ CLR P ; P1.4 menjadi ‘0’ Mov a,# b ; isi a menjadi AAh CLR Acc, ; a menjadi b SETB Acc, ; a menjadi b CPL 0E0h ; lokasi bit 0E0h dikomplemenkan.
21
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 P ; P1.1 = ‘1’ Set C ; C = ‘1’ ANL C,/P ; 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’.
22
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
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.