1 / 53

2.3.2. Instruksi Operasi Aritmatika

2.3.2. Instruksi Operasi Aritmatika. Instruksi Aritmatika ini digunakan untuk melakukan proses aritmatika (perhitungan) yang meliputi antara lain: - Penjumlahan - Perkalian - Pengurangan - Pembagian - Penjumlahan satu kali - Pengurangan satu kali. a. INSTRUKSI PENJUMLAHAN

laasya
Download Presentation

2.3.2. Instruksi Operasi Aritmatika

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 2.3.2. Instruksi Operasi Aritmatika • Instruksi Aritmatika ini digunakan untuk melakukan proses aritmatika (perhitungan) yang meliputi antara lain: - Penjumlahan - Perkalian - Pengurangan - Pembagian - Penjumlahan satu kali - Pengurangan satu kali

  2. a. INSTRUKSI PENJUMLAHAN a.1. Instruksi Penjumlahan Tanpa Carry ADD A,< src_byte > Fungsi : Penjumlahan Tanpa Carry Penjelasan: Instruksi ini akan melakukan penjumlahan isi register A dengan satu byte Source_byte dimana setelah proses penjumlahan hasilnya akan disimpan di register A. Instruksi ini akan mempengaruhi Carry Flag = 1 jika terdapat Carry pada bit ketiga atau bit ketujuh

  3. Contoh Instruksi: ADD A,R0 Isi register A = [ A ] + [ R0 ] List instruksi adalah sebagai berikut: Instruksi ADD A,Rn Jumlah byte 1 Cycle 1 Operasi ADD [ A ] = [ A ] + [ Rn ]

  4. ADD A,direct Isi register A = [ A ] + [ direct ] List instruksi adalah sebagai berikut: Instruksi ADD A,direct Jumlah byte 2 Cycle 1 Operasi ADD [ A ] = [ A ] + [ direct ]

  5. ADD A,@Ri Isi register A = [ A ] + [ (Ri) ] List instruksi adalah sebagai berikut: Instruksi ADD A,@Ri Jumlah byte 1 Cycle 1 Operasi ADD [ A ] = [ A ] + [ (Ri) ]

  6. ADD A,#data Isi register A = [ A ] + #data List instruksi adalah sebagai berikut: Instruksi ADD A,#data Jumlah byte 1 Cycle 1 Operasi ADD [ A ] = [ A ] + #data

  7. a.2. Instruksi Penjumlahan Dengan Carry ADDC A,< src_byte > Fungsi : Penjumlahan Dengan Carry Penjelasan: Instruksi ini akan melakukan penjumlahan isi register A dengan satu byte Source_byte dan ditambahkan lagi Carry pada saat itu dimana setelah proses penjumlahan hasilnya akan disimpan di register A. Instruksi ini akan mempengaruhi Carry Flag = 1 jika terdapat Carry pada bit ketiga atau bit ketujuh

  8. Contoh Instruksi: ADDC A,R0 Isi register A = [ A ] + [ R0 ] + [ Carry ] List instruksi adalah sebagai berikut: Instruksi ADDC A,Rn Jumlah byte 1 Cycle 1 Operasi ADDC [ A ] = [ A ] + [ Rn ] + [ Carry ]

  9. ADDC A,direct Isi register A = [ A ] + [ direct ] + [ Carry ] List instruksi adalah sebagai berikut: Instruksi ADDC A,direct Jumlah byte 2 Cycle 1 Operasi ADDC [ A ] = [ A ] + [ direct ] + [ Carry ]

  10. ADDC A,@Ri Isi register A = [ A ] + [ (Ri) ] + [ Carry ] List instruksi adalah sebagai berikut: Instruksi ADDC A,@Ri Jumlah byte 1 Cycle 1 Operasi ADDC [ A ] = [ A ] + [ (Ri) ] + [ Carry ]

  11. ADDC A,#data Isi register A = [ A ] + #data + [ Carry ] List instruksi adalah sebagai berikut: Instruksi ADDC A,#data Jumlah byte 2 Cycle 1 Operasi ADDC [ A ] = [ A ] + #data + [ Carry ]

  12. b. Instruksi Pengurangan Dengan Borrow SUBB A,< src_byte > Fungsi : Penjumlahan Dengan Borrow ( Carry Minus) Penjelasan: Instruksi ini akan melakukan pengurangan isi register A dengan satu byte Source_byte dan dikurangi lagi dengan Carry pada saat itu dimana setelah proses penjumlahan hasilnya akan disimpan di register A. Instruksi ini akan mempengaruhi Carry Flag = 1 jika terdapat Carry pada bit ketiga atau bit ketujuh

  13. Contoh Instruksi: SUBB A,R0 Isi register A = [ A ] - [ R0 ] - [ Carry ] List instruksi adalah sebagai berikut: Instruksi SUBB A,Rn Jumlah byte 1 Cycle 1 Operasi SUBB [ A ] = [ A ] - [ Rn ] - [ Carry ]

  14. SUBB A,direct Isi register A = [ A ] - [ direct ] - [ Carry ] List instruksi adalah sebagai berikut: Instruksi SUBB A,direct Jumlah byte 2 Cycle 1 Operasi SUBB [ A ] = [ A ] - [ direct ] - [ Carry ]

  15. SUBB A,@Ri Isi register A = [ A ] - [ (Ri) ] - [ Carry ] List instruksi adalah sebagai berikut: Instruksi SUBB A,@Ri Jumlah byte 1 Cycle 1 Operasi SUBB [ A ] = [ A ] - [ (Ri) ] - [ Carry ]

  16. SUBB A,#data Isi register A = [ A ] - #data - [ Carry ] List instruksi adalah sebagai berikut: Instruksi SUBB A,#data Jumlah byte 1 Cycle 1 Operasi SUBB [ A ] = [ A ] - #data - [ Carry ]

  17. c. Instruksi Penambahan Satu INC <Byte> Instruksi ini akan melakukan penambahan satu dari byte yang ada saat itu, apabila nilai telah menjadi FFH maka setelah instruksi ini akan menjadi 00H Instruksi ini tidak akan mempengaruhi Carry Flag Contoh: INC A ---- [A] = [A] +1 INC Rn INC Direct INC @Ri

  18. Contoh instruksi: ORG 0H MOV 7EH,#0FFH MOV 7FH,#40H MOV R0,#7EH INC @R0 INC R0 INC @R0 END Catatan: Setelah instruksi tersebut maka isi register R0 = 7FH, isi alamat 7EH = 00H dan alamat 7FH = 41H

  19. INC A Isi register A = [ A ] + 1 List instruksi adalah sebagai berikut: Instruksi INC A Jumlah byte 1 Cycle 1 Operasi INC [ A ] = [ A ] + 1

  20. INC Rn Isi register Rn = [ Rn ] + 1 List instruksi adalah sebagai berikut: Instruksi INC Rn Jumlah byte 1 Cycle 1 Operasi INC [ Rn ] = [ Rn ] + 1

  21. INC direct Isi register direct = [ direct ] + 1 List instruksi adalah sebagai berikut: Instruksi INC direct Jumlah byte 2 Cycle 1 Operasi INC [ direct ] = [ direct ] + 1

  22. INC @Ri [ (Ri) ] = [ (Ri) ] + 1 List instruksi adalah sebagai berikut: Instruksi INC @Ri Jumlah byte 1 Cycle 1 Operasi INC [ (Ri) ] = [ (Ri) ] + 1

  23. d. Instruksi Penambahan Satu pada Register DPTR INC DPTR Instruksi ini akan melakukan penambahan satu dari byte yang berada di register DPTR saat itu, apabila nilai telah menjadi FFFFH maka setelah instruksi ini akan menjadi 0000H Instruksi ini tidak akan mempengaruhi Carry Flag

  24. Contoh Instruksi: Jika isi data pada register DPTR adalah 1230H ORG 0H MOV DPTR,#1230H ; DPTR berisi 1230H INC DPTR ; DPTR = 1230H + 1 INC DPTR ; DPTR = 1231H + 1 INC DPTR ; DPTR = 1232H + 1 INC DPTR ; DPTR = 1233H + 1 END Setelah program dijalankan maka isi register DPTR adalah [ DPTR ] = 1230H + 1 + 1 + 1 + 1 = 1234H

  25. INC DPTR Isi register DPTR = [ DPTR ] + 1 List instruksi adalah sebagai berikut: Instruksi INC DPTR Jumlah byte 1 Cycle 2 Operasi INC [ DPTR ] = [ DPTR ] + 1

  26. e. Instruksi Pengurangan Satu DEC <Byte> Instruksi ini akan melakukan pengurangan satu dari byte yang ada saat itu, apabila nilai telah menjadi 00H maka setelah instruksi ini akan menjadi FFH Instruksi ini tidak akan mempengaruhi Carry Flag Contoh: DEC A DEC Rn DEC Direct DEC @Ri

  27. Contoh instruksi: ORG 0H MOV 2FH,#0FFH MOV 30H,#40H MOV R1,#30H DEC @R1 DEC R1 DEC @R1 END Catatan: Setelah instruksi tersebut maka isi register R1 = 2FH, isi alamat 2FH = 0FEH dan alamat 30H = 3FH

  28. DEC A Isi register A = [ A ] - 1 List instruksi adalah sebagai berikut: Instruksi DEC A Jumlah byte 1 Cycle 1 Operasi DEC [ A ] = [ A ] - 1

  29. DEC Rn Isi register Rn = [ Rn ] - 1 List instruksi adalah sebagai berikut: Instruksi DEC Rn Jumlah byte 1 Cycle 1 Operasi DEC [ Rn ] = [ Rn ] - 1

  30. DEC direct Isi register direct = [ direct ] - 1 List instruksi adalah sebagai berikut: Instruksi DEC direct Jumlah byte 2 Cycle 1 Operasi DEC [ direct ] = [ direct ] - 1

  31. DEC @Ri [ (Ri) ] = [ (Ri) ] - 1 List instruksi adalah sebagai berikut: Instruksi DEC @Ri Jumlah byte 1 Cycle 1 Operasi DEC [ (Ri) ] = [ (Ri) ] - 1

  32. f. Instruksi Perkalian MUL AB Instruksi ini akan melakukan perkalian antara isi akumulator ( A ) dan isi Register B, hasil dari perkalian disimpan di Akumulator ( A ) untuk byte yang rendah dan di Register B untk byte yang tinggi. Jika hasil perkalian lebih dari 255 (0FFH) flag overflow akan diset, sedangkan Carry akan selalu di clear.

  33. Contoh : ORG 0H MOV A,#50H MOV B,#0A0H MUL AB END Hasil perkalian dari 50H atau 80 desimal dengan 0A0H atau 160 desimal adalah 3200H atau 12800. Nilai yang disimpan di Akumulator (A) adalah 00H (Byte rendah) dan di Register B adalah 32H (Byte tinggi). Sedangkan Flag Overflow akan di set (1) karena hasil perkalian lebih besar daripada 255 (0FFH).

  34. MUL AB List instruksi adalah sebagai berikut: Instruksi MUL AB Jumlah byte 1 Cycle 4 Operasi MUL [ A ] = Hasil perkalian Byte rendah [ B ] = Hasil perkalian Byte tinggi

  35. g. Instruksi Pembagian DIV AB Instruksi ini akan melakukan pembagian antara isi akumulator ( A ) dan isi Register B, hasil dari pembagian akan disimpan di Akumulator ( A ) dan apabila ada sisa hasil pembagian akan disimpan di Register B. Flag overflow dan Carry akan selalu di clear.

  36. Contoh : ORG 0H MOV A,#0FEH MOV B,#12H DIV AB END Hasil pembagian dari 0FEH dengan 12H adalah 0EH dengan sisanya 02H. Nilai yang disimpan di Akumulator (A) adalah 0EH (Hasil dari proses pembagian) dan di Register B adalah 02H (Sisa hasil proses pembagian).

  37. DIV AB List instruksi adalah sebagai berikut: Instruksi DIV AB Jumlah byte 1 Cycle 4 Operasi DIV [ A ] = Hasil dari Pembagian [ B ] = Sisa hasil pembagian

  38. 2.3.3. INSTRUKSI LOGIKA- Instruksi ini selalu melibatkan register ACCUMULATOR ( A )a. Logika AND ( ANL ) Instruksi ini melakukan proses logika AND antara suatu register dengan register, register dengan data dll Tabel kebenaran logika AND

  39. Contoh : • Akumulator berisi data 1011 1011B dan register R0 berisi data 0100 1100B. Instruksi ANL A,R0 akan menyebabkan isi akumulator menjadi seperti berikut: A : 1011 1011B R0 : 0100 1100B ANL A,R0 ------------------------------- A : 0000 1000B = 08H

  40. b. Logika OR ( ORL ) Instruksi ini melakukan proses logika OR antara suatu register dengan register, register dengan data dll Tabel kebenaran logika OR

  41. Contoh : • Akumulator berisi data 1111 1010B dan register R0 berisi data 0010 1110B. Instruksi ORL A,R0 akan menyebabkan isi akumulator menjadi seperti berikut: A : 1111 1010B R0 : 0010 1110B ORL A,R0 ------------------------------- A : 1111 1110B = FEH

  42. c. Logika EXOR ( XRL ) Instruksi ini melakukan proses logika Exclusive-OR (EXOR) antara suatu register dengan register, register dengan data dll Tabel kebenaran logika Exclusive-OR

  43. Contoh : • Akumulator berisi data 1011 1011B dan register B berisi data 1111 0101B. Instruksi XRL A,B akan menyebabkan isi akumulator menjadi seperti berikut: A : 1011 1011B B : 1111 0101B XRL A,B ------------------------------- A : 0100 1110B = 4EH

  44. d. Logika NOT ( Komplemen - CPL ) Instruksi ini melakukan proses logika NOT (Komplemen) pada suatu register, carry flag, atau isi suatu alamat bit ( RAM ), dll Tabel kebenaran logika NOT

  45. Contoh : • Akumulator berisi data 0101 1100B Instruksi CPL A akan menyebabkan isi akumulator menjadi seperti berikut: A : 0101 1100B CPL A -------------------------- A : 1010 0011B = A3H

  46. 2.3.4. Instruksi Perperputaran ( Rotate )a. Pergeseran ke KIRI ( RL : Rotate Left )Instruksi ini akan menggeser isi akumulator satu bit ke kiri (memutar setiap bit dalam akumulator satu posisi ke kiri). Bagian MSB akan mengisi bagian LSB. MSB LSB

  47. Contoh: • 1. Register A ( Akumulator ) : 1011 1011B Instruksi RL A akan menyebabkan isi • register A bergeser ke kiri sehingga • menjadi : 0111 0111B • 2. Register A ( Akumulator ) : 0011 0011B Instruksi RL A akan menyebabkan isi • register A bergeser ke kiri sehingga • menjadi : 0110 0110B

  48. b. Perputaran ke KANAN ( RR : Rotate Right )Instruksi ini akan menggeser isi akumulator satu bit ke kanan (memutar setiap bit dalam akumulator satu posisi ke kanan). Bagian LSB akan mengisi bagian MSB. MSB LSB

  49. Contoh: • 1. Register A ( Akumulator ) : 1011 1011B Instruksi RR A akan menyebabkan isi • register A bergeser ke kanan sehingga • menjadi : 1101 1101B • 2. Register A ( Akumulator ) : 0011 0011B Instruksi RR A akan menyebabkan isi • register A bergeser ke kanan sehingga • menjadi : 1001 1001B

  50. Carry c. Perputaran ke KIRI dengan CARRY ( RLC : Rotate Left with Carry )Instruksi ini akan menggeser isi akumulator satu bit ke kiri (memutar setiap bit dalam akumulator satu posisi ke kiri) dengan ikut menyertakan isi dari Carry Flag.Isi Carry Flag akan mengisi bagian LSB, sementara isi bagian MSB akan mengisi bagian Carry Flag. MSB LSB

More Related