2 3 2 instruksi operasi aritmatika
This presentation is the property of its rightful owner.
Sponsored Links
1 / 53

2.3.2. Instruksi Operasi Aritmatika PowerPoint PPT Presentation


  • 175 Views
  • Uploaded on
  • Presentation posted in: General

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

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


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


2 3 2 instruksi operasi aritmatika

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


2 3 2 instruksi operasi aritmatika

Contoh Instruksi:

ADDA,R0

Isi register A = [ A ] + [ R0 ]

List instruksi adalah sebagai berikut:

InstruksiADDA,Rn

Jumlah byte1

Cycle1

OperasiADD

[ A ] = [ A ] + [ Rn ]


2 3 2 instruksi operasi aritmatika

ADDA,direct

Isi register A = [ A ] + [ direct ]

List instruksi adalah sebagai berikut:

InstruksiADDA,direct

Jumlah byte2

Cycle1

OperasiADD

[ A ] = [ A ] + [ direct ]


2 3 2 instruksi operasi aritmatika

ADDA,@Ri

Isi register A = [ A ] + [ (Ri) ]

List instruksi adalah sebagai berikut:

InstruksiADDA,@Ri

Jumlah byte1

Cycle1

OperasiADD

[ A ] = [ A ] + [ (Ri) ]


2 3 2 instruksi operasi aritmatika

ADDA,#data

Isi register A = [ A ] + #data

List instruksi adalah sebagai berikut:

InstruksiADDA,#data

Jumlah byte1

Cycle1

OperasiADD

[ A ] = [ A ] + #data


2 3 2 instruksi operasi aritmatika

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


2 3 2 instruksi operasi aritmatika

Contoh Instruksi:

ADDCA,R0

Isi register A = [ A ] + [ R0 ] + [ Carry ]

List instruksi adalah sebagai berikut:

InstruksiADDCA,Rn

Jumlah byte1

Cycle1

OperasiADDC

[ A ] = [ A ] + [ Rn ] + [ Carry ]


2 3 2 instruksi operasi aritmatika

ADDCA,direct

Isi register A = [ A ] + [ direct ] + [ Carry ]

List instruksi adalah sebagai berikut:

InstruksiADDCA,direct

Jumlah byte2

Cycle1

OperasiADDC

[ A ] = [ A ] + [ direct ] + [ Carry ]


2 3 2 instruksi operasi aritmatika

ADDCA,@Ri

Isi register A = [ A ] + [ (Ri) ] + [ Carry ]

List instruksi adalah sebagai berikut:

InstruksiADDCA,@Ri

Jumlah byte1

Cycle1

OperasiADDC

[ A ] = [ A ] + [ (Ri) ] + [ Carry ]


2 3 2 instruksi operasi aritmatika

ADDCA,#data

Isi register A = [ A ] + #data + [ Carry ]

List instruksi adalah sebagai berikut:

InstruksiADDCA,#data

Jumlah byte2

Cycle1

OperasiADDC

[ A ] = [ A ] + #data + [ Carry ]


2 3 2 instruksi operasi aritmatika

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


2 3 2 instruksi operasi aritmatika

Contoh Instruksi:

SUBBA,R0

Isi register A = [ A ] - [ R0 ] - [ Carry ]

List instruksi adalah sebagai berikut:

InstruksiSUBBA,Rn

Jumlah byte1

Cycle1

OperasiSUBB

[ A ] = [ A ] - [ Rn ] - [ Carry ]


2 3 2 instruksi operasi aritmatika

SUBBA,direct

Isi register A = [ A ] - [ direct ] - [ Carry ]

List instruksi adalah sebagai berikut:

InstruksiSUBBA,direct

Jumlah byte2

Cycle1

OperasiSUBB

[ A ] = [ A ] - [ direct ] - [ Carry ]


2 3 2 instruksi operasi aritmatika

SUBBA,@Ri

Isi register A = [ A ] - [ (Ri) ] - [ Carry ]

List instruksi adalah sebagai berikut:

InstruksiSUBBA,@Ri

Jumlah byte1

Cycle1

OperasiSUBB

[ A ] = [ A ] - [ (Ri) ] - [ Carry ]


2 3 2 instruksi operasi aritmatika

SUBBA,#data

Isi register A = [ A ] - #data - [ Carry ]

List instruksi adalah sebagai berikut:

InstruksiSUBBA,#data

Jumlah byte1

Cycle1

OperasiSUBB

[ A ] = [ A ] - #data - [ Carry ]


2 3 2 instruksi operasi aritmatika

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:INCA----[A] = [A] +1

INCRn

INCDirect

[email protected]


2 3 2 instruksi operasi aritmatika

Contoh instruksi:

ORG0H

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


2 3 2 instruksi operasi aritmatika

INCA

Isi register A = [ A ] + 1

List instruksi adalah sebagai berikut:

InstruksiINCA

Jumlah byte1

Cycle1

OperasiINC

[ A ] = [ A ] + 1


2 3 2 instruksi operasi aritmatika

INCRn

Isi register Rn = [ Rn ] + 1

List instruksi adalah sebagai berikut:

InstruksiINCRn

Jumlah byte1

Cycle1

OperasiINC

[ Rn ] = [ Rn ] + 1


2 3 2 instruksi operasi aritmatika

INCdirect

Isi register direct = [ direct ] + 1

List instruksi adalah sebagai berikut:

InstruksiINCdirect

Jumlah byte2

Cycle1

OperasiINC

[ direct ] = [ direct ] + 1


2 3 2 instruksi operasi aritmatika

[email protected]

[ (Ri) ] = [ (Ri) ] + 1

List instruksi adalah sebagai berikut:

[email protected]

Jumlah byte1

Cycle1

OperasiINC

[ (Ri) ] = [ (Ri) ] + 1


2 3 2 instruksi operasi aritmatika

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


2 3 2 instruksi operasi aritmatika

Contoh Instruksi:

Jika isi data pada register DPTR adalah 1230H

ORG0H

MOVDPTR,#1230H; DPTR berisi 1230HINCDPTR; DPTR = 1230H + 1

INCDPTR; DPTR = 1231H + 1

INCDPTR; DPTR = 1232H + 1

INCDPTR; DPTR = 1233H + 1

END

Setelah program dijalankan maka isi register DPTR adalah

[ DPTR ] = 1230H + 1 + 1 + 1 + 1

= 1234H


2 3 2 instruksi operasi aritmatika

INCDPTR

Isi register DPTR = [ DPTR ] + 1

List instruksi adalah sebagai berikut:

InstruksiINCDPTR

Jumlah byte1

Cycle2

OperasiINC

[ DPTR ] = [ DPTR ] + 1


2 3 2 instruksi operasi aritmatika

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:DECA

DECRn

DECDirect

[email protected]


2 3 2 instruksi operasi aritmatika

Contoh instruksi:

ORG0H

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


2 3 2 instruksi operasi aritmatika

DECA

Isi register A = [ A ] - 1

List instruksi adalah sebagai berikut:

InstruksiDEC A

Jumlah byte1

Cycle1

OperasiDEC

[ A ] = [ A ] - 1


2 3 2 instruksi operasi aritmatika

DECRn

Isi register Rn = [ Rn ] - 1

List instruksi adalah sebagai berikut:

InstruksiDEC Rn

Jumlah byte1

Cycle1

OperasiDEC

[ Rn ] = [ Rn ] - 1


2 3 2 instruksi operasi aritmatika

DECdirect

Isi register direct = [ direct ] - 1

List instruksi adalah sebagai berikut:

InstruksiDEC direct

Jumlah byte2

Cycle1

OperasiDEC

[ direct ] = [ direct ] - 1


2 3 2 instruksi operasi aritmatika

[email protected]

[ (Ri) ] = [ (Ri) ] - 1

List instruksi adalah sebagai berikut:

InstruksiDEC @Ri

Jumlah byte1

Cycle1

OperasiDEC

[ (Ri) ] = [ (Ri) ] - 1


2 3 2 instruksi operasi aritmatika

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.


2 3 2 instruksi operasi aritmatika

Contoh :

ORG0H

MOVA,#50H

MOVB,#0A0H

MULAB

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).


2 3 2 instruksi operasi aritmatika

MULAB

List instruksi adalah sebagai berikut:

InstruksiMULAB

Jumlah byte1

Cycle4

OperasiMUL

[ A ] = Hasil perkalian Byte rendah

[ B ] = Hasil perkalian Byte tinggi


2 3 2 instruksi operasi aritmatika

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.


2 3 2 instruksi operasi aritmatika

Contoh :

ORG0H

MOVA,#0FEH

MOVB,#12H

DIVAB

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).


2 3 2 instruksi operasi aritmatika

DIV AB

List instruksi adalah sebagai berikut:

InstruksiDIVAB

Jumlah byte1

Cycle4

OperasiDIV

[ A ] = Hasil dari Pembagian

[ B ] = Sisa hasil pembagian


2 3 2 instruksi operasi aritmatika

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


2 3 2 instruksi operasi aritmatika

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


2 3 2 instruksi operasi aritmatika

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

Tabel kebenaran logika OR


2 3 2 instruksi operasi aritmatika

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


2 3 2 instruksi operasi aritmatika

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


2 3 2 instruksi operasi aritmatika

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


2 3 2 instruksi operasi aritmatika

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


2 3 2 instruksi operasi aritmatika

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


Msb lsb

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


2 3 2 instruksi operasi aritmatika

  • 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


Msb lsb1

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


2 3 2 instruksi operasi aritmatika

  • 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


Msb lsb2

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


2 3 2 instruksi operasi aritmatika

  • Contoh:

  • Register A ( Akumulator ) : 0111 1010B

  • sementara Carry Flag berisi : 1B

  • Instruksi RLC A akan menyebabkan isi

  • register A bergeser ke kiri dengan Carry

  • nya sehingga menjadi :

  • Register A ( Akumulator ) : 1111 0101B

  • sementara Carry Flag nya berisi 0B


Msb lsb3

Carry

d. Pergeseran ke KANAN dengan CARRY ( RRC : Rotate Right with Carry )Instruksi ini akan menggeser isi akumulator satu bit ke KANAN (memutar setiap bit dalam akumulator satu posisi ke KANAN) dengan ikut menyertakan isi dari Carry Flag.Isi Carry Flag akan mengisi bagian MSB, sementara isi bagian LSB akan mengisi bagian Carry Flag.

MSB LSB


2 3 2 instruksi operasi aritmatika

  • Contoh:

  • Register A ( Akumulator ) : 1010 0101B

  • sementara Carry Flag berisi : 0B

  • Instruksi RRC A akan menyebabkan isi

  • register A bergeser ke kanan dengan Carry

  • nya sehingga menjadi :

  • Register A ( Akumulator ) : 0101 0010B

  • sementara Carry Flag nya berisi 1B


  • Login