Minggu Ke 4 Operasi Arithmnatik

22
PRATIKUM MICROCONTROLLER MINGGU KE - 4 OPERASI ARITHMATIK Tujuan Mahasiswa dapat mengetahui instruksi Arithmatik serta membuat program dasar serta aplikasi berbasis microcontroller AT89S51 Materi Penjumlahan dan pengurangan data register dengan konstanta Penjumlahan dan pengurangan data register dengan data di register lain Penjumlahan dan pengurangan data register dengan data di lokasi memori Penjumlahan dan pengurangan data memori dengan data di register Perkalian dan pembagian data register dengan konstanta Perkalian dan pembagian data register dengan data di register lain Perkalian dan pembagian data register dengan data di lokasi memori Perkalian dan pembagian data memori dengan data di register Dasar Teori Operasi Arithmatik OPERASI PENJUMLAHAN OPERASI PENGURANGAN - 1 -

description

ke 4

Transcript of Minggu Ke 4 Operasi Arithmnatik

MODUL-1

PRATIKUM MICROCONTROLLER

MINGGU KE - 4OPERASI ARITHMATIK

Tujuan

Mahasiswa dapat mengetahui instruksi Arithmatik serta membuat program dasar serta aplikasi berbasis microcontroller AT89S51

Materi

Penjumlahan dan pengurangan data register dengan konstanta

Penjumlahan dan pengurangan data register dengan data di register lain

Penjumlahan dan pengurangan data register dengan data di lokasi memori

Penjumlahan dan pengurangan data memori dengan data di register

Perkalian dan pembagian data register dengan konstanta

Perkalian dan pembagian data register dengan data di register lain

Perkalian dan pembagian data register dengan data di lokasi memori

Perkalian dan pembagian data memori dengan data di register

Dasar Teori

Operasi Arithmatik OPERASI PENJUMLAHAN

OPERASI PENGURANGAN

OPERASI PERKALIAN

OPERASI PEMBAGIAN

OPERASI INCREMENT DAN DECREMENT

Instruksi Arithmatik ADD, ADDC

SUBB

MUL

DIV

INC

DEC2. Penjelasan Instruksi Aritmatika

Penjumlahan ( ADD )

ADD ( Immediatae data )

Instruksi ini digunakan untuk menambah data langsung kedalam isi akumulator dan menyimpan hasilnya pada acumulator

Format :

ADD A,# data

ADD ( Indirect Address )

Instruksi ini digunakan untuk menambahkan isi data memori yang lokasinya ditunjukan oleh nilai register r1 ke isi akumulator dan menyimpan hasilnya dalam akumulator

Format :

ADD A @ R1

ADD ( ADD register )

Instruksi ini menambahkan isi register r6 dengan isi di akumulator dan menyimpan hasilnya dalam akumulator

Format :

ADD A,R6

ADD ( ADD memory )

Instruksi ini digunakan untuk menambahkan isi alamat data (32H ) ke isi akumulator dan menyimpan hasilnya dalam akumulator

Format : ADD A, Alamat data

Contoh :

ADD A , 32 H

Penjumlahan dengan Carry ( ADDC )

ADDC ( Add Carry Plus Indirect Address to Accumulator )

Instruksi ini digunakan untuk menambahkan isi carry flag ( 0 atau 1 ) dengan isi acumulator. Isi data memori pada lokasi yang ditunjukan oleh register Rr ditambahkan da hasilnya disimpan pada acumulator

Format :

ADDC A, @ R1

ADDC ( Add carry Plus register to Acumulator )

Instruksi ini menambahkan isi carry flag dengan isi akumulator. Isi register r ditambahkan dan hasilnya disimpan dalam akumulator

Format :

ADDC A,R7

ADDC ( Add Carry Plus Memory to Accumulator )

Instruksi ini digunakan untuk menambahkan isi carry flag dengan isi akumulator dari alamat data tertentu ditambahkan pula. Hasilnya disimpan dalam acumulator

Format :

ADDC A, 25Pengurangan ( SUBB )

Subtract Indirect Address fromAccmulator with borrow

Instruksi in akan mengurangkan isi accumulator dengan carry flag dan isi lokasi memori yang ditunjukan oleh isi register r. hasilnya disimpan dalam u labter

Format : SUBB A, @Rr

SUBB ( Subtract Immediate data from Accumatlator with Borrow Indirect Address

from Accmulator with borrow)

Instruksi in akan mengurangkan isi carry flag dan data langsung dari isi u labter, Hasilnya disimpan dalam akumulator. Hasilnya disimpan dalam u labter

Format : SUBB A, # data

Contoh : SUBB A, # 0C1 H

SUBB (Subtract register from Accmulator with borrow )

Instruksi in akan mengurangkan isi accumulator dengan isi carry flag dan isi register r , hasilnya disimpan dalam u labter. Hasilnya disimpan dalam u labter

Format : SUBB A, Rr

Contoh : SUBB A, R6

SUBB ( Subtract memory from accumulator with Borrow )

Instruksi in akan mengurangkan isi accumulator dengan carry flag dan isi suatu suatu alamat data . Hasilnya disimpan dalam u labter

Format : SUBB A, Alamat data

Contoh : SUBB A,32 H

Operasi Perkalian

MUL( MUL = Multiply Accumulator )

Instruksi ini akan mengalikan isi u labter dengan isi register pengali ( B ). Byte bawah hasil perkalian dimasukan ke u labter dan byte atas dimasukan ke register pengali

Format : MUL AB ( A * B = AB )

Contoh : MOV B,#10

: MUL AB

Pembagian ( DIV )

Pembagian data register A dengan B

Instruksi ini digunakan untuk membagi isi u labter dengan isi register B. kedua operand adalah bilangan integer tak bertanda. Acumulator berisi hasil bagi, register B berisi sisa pembagian

Format : DIV AB

Contoh : MOV B,#5H

DIV AB

Penjumlahan

Mnemonic Operation

ADD A,#n

Tambahkan A dengan angka n, simpan hasilnya di A

ADD A,Rr

Tambahkan A dengan register Rr, simpan hasilnya di A

ADD A,add

Tambahkan A dengan isi address, simpan hasilnya di A

ADD A,@Rp Tambahkan A dengan isi address dalam Rp, simpan hasilnya di A

ADDC A,#n

Tambahkan A, angka n dan Carry, simpan hasilnya di A.

ADDC A,Rr

Tambahkan A, isi register Rr dan Carry, simpan hasilnya di A.

ADDC A,add Tambahkan A, isi address dan Carry, simpan hasilnya di A.

ADDC A,@Rp Tambahkan A, isi address dalam Rp dan Carry, simpan

hasilnya di A.

Catatan :

Carry flag (C) akan 1 jika terdapat carry pada bit ke-7.

Auxilliary Carry flag (AC) akan 1 jika terdapat carry pada bit ke-3. Over Flow flag (OV) akan 1 jika terdapat carry pada bit ke-7, tapi tidak terdapat carry pada bit ke-6 atau terdapat carry pada bit ke-6 tetapi tidak pada bit ke-7, dimana dapat dieksperikan dengan operasi logika sbb :

PenguranganMnemonic Operation

SUBB A,#n Kurangi A dengan angka n dan C flag, simpan hasilnya di A

SUBB A,Rr Kurangi A dengan register Rr dan C flag, simpan hasilnya di A

SUBB A,add Kurangi A dengan isi address dan C flag, simpan hasilnya di A

SUBB A,@Rp Kurangi A dengan isi address dalam Rp dan C flag, simpan hasilnya di A

Catatan :

Carry flag (C) akan 1 jika terdapat borrow pada bit ke-7. Auxilliary Carry flag (AC) akan 1 jika terdapat borrow pada bit ke-3. Over Flow flag (OV) akan 1 jika terdapat borrow pada bit ke-7, tapi tidak terdapat borrow pada bit ke-6 atau terdapat borrow pada bit ke-6 tetapi tidak pada bit ke-7, dimana dapat dieksperikan dengan operasi logika sbb : OV = C7 XOR C6

Perkalian

Mnemonic Operation

MUL AB Kalikan isi A dengan isi B, simpan lower byte di A dan high byte di B.

Catatan :

Over Flow flag (OV) akan 1 jika A X B > FFh. Carry flag (C) selalu 0. Nilai maksimum hasil perkalian antara A dan B adalah FE01h, jika A dan B berisi FFh.

Contoh :

MOV A,#7Bh ; A=7Bh

MOV B,#02h ; B=02h

MUL AB

; A=F6h dan B=00h; OV=0

MOV A,#0FEh ; A=FEh

MUL AB

; A=00h dan B=00h; OV=0

Pembagian

Mnemonic Operation

DIV AB Bagi isi A dengan isi B, simpan hasilnya di A dan simpan sisanya di B.

Catatan :

Over Flow flag (OV) akan 1 jika terjadi pembagian dengan 0.

Carry flag (C) selalu 0.

Contoh :

MOV A,#0FFh ; A=FFh

MOV B,#2Ch ; B=2Ch

DIV AB

; A=05h dan B=23h

DIV AB

; A=00h dan B=05h

DIV AB

; A=00h dan B=00h

DIV AB

; A=?? Dan B=??, OV=1Increment & DecrementIncrement : Tambah satu isi register

Decrement : Turunkan satu isi register

Mnemonic Operation

INC A Tambah satu isi register A

INC Rr Tambah satu isi register Rr

INC add Tambah satu isi direct address

INC @Rp Tambah satu isi address dalam Rp

INC DPTR Tambah satu isi register 16 bit DPTR

DEC A Kurangi satu isi register A

DEC Rr Kurangi satu isi register Rr

DEC add Kurangi satu isi dirrect address

DEC @Rp Kurangi satu isi address dalam Rp

Contoh

MOV A,#3Ah ;

A = 3Ah

DEC A ;

A = 39h

MOV R0,#15h ;

R0 = 15h

MOV 15h,#12h ;

Internal RAM 15h = 12h

INC @R0 ;

Internal RAM 15h = 13h

DEC 15h ;

Internal RAM 15h = 12h

INC R0 ;

R0 = 16h

MOV 16h,A ;

Internal RAM 16h = 39h

INC @R0 ;

Internal RAM 16h = 3Ah

MOV DPTR,#12FFh ;

DPTR = 12FFh

INC DPTR ;

DPTR = 1300h

DEC 83h ;

DPTR = 1200h(SFR 83h adalah byte DPH

PEMOGRAMAN MENGGUNAKAN INSTRUKSI ARITHMATIKProgram-1 ( Penjumlahan Data)org 0h

mov r1,#22h

r1 diisi data 22h

mov r3,#44h

r3 diisi data 44h

mov a,#55h

register A diisi data 55

mov 22h,#33h

Memori 22h diisi data 33h

ADD a,#11h

Data register A ditambah dengan data 11

A=55+11= 66

mov r4,a

Hasil disimpan deregister r4= 66

ADD A,R3

Data Register A ditambah dengan data

Register R3 A=66+44=AA

MOV R5,AHasil Disimpan di Register R5=AA

ADD A,22H Data Register A ditambah dengan data dimemori 22h A=AA+33=DDMOV 23H,AHasil disimpan di memori 23= DDADD A,@R1Data register A ditambah dengan data di lokasi memori yang ditunjukkan oleh 1 ( 22h ) A=DD+22= 10

MOV 24H,A Hasil disimpan di lokasi memori 24h=10

END

Program-2

Operasi Pengurangan dataOrg 0h

mov r1,#25h

mov r3,#14h

mov a,#99h

mov 22h,#18h

mov 25h,#23h

subb a,#11h

mov r4,a

subb a,r3

mov r5,a

subb a,22h

mov 23h,A

subb a,@r1

mov 24h,a

end

Operasi Perkalian

org 0h

mov a,#05h

mov b,#04h

mul ab

end

org 0h

mov a,#05h

mov 22h,#02h

mov b,22h

mul ab

endOperasi Pembagian

Program-1

org 0h

mov a,#19h

mov b,#05h

div ab

END

Program-2

org 0h

mov a,#19h

mov 22h,#05h

mov b,22h

div ab

ENDTugas pratikum Tulislah program berikut

Operasikan Program

Catat hasil program

Analisa hasil program

Buat kesimpulan

Program-1ORG 0H

MOV R3,#23H

MOV R4,#25H

MOV A,R4

ADD A,R3

MOV R5,A

MOV 35H,A

ENDPROGRAM-2ORG 0H

MOV 34h,#23H

MOV 35h,#25H

MOV A,35h

ADD A,34h

MOV 36h,A

END

PROGRAM-3ORG 0H

MOV 34h,#23H

MOV 35h,#25H

MOV A,35h

MOV R1,#34H

ADD A,@R1

MOV 36h,A

END

Program-4

MOV R3,#38H

MOV R4,#12H

MOV A,R3

SUBB A,R4

MOV R5,A

END

Program-5

MOV 56H,#38H

MOV 57H,#12H

MOV A,56H

SUBB A,57H

MOV 58H,A

END

Program6

ORG 0H

MOV R3,#07H

MOV R4,#08H

MOV A,R3

MOV B,R4

MUL AB

MOV R5,A

END

Program-7

ORG 0H

MOV R3,#2DH

MOV R4,#05H

MOV A,R3

MOV B,R4

DIV AB

MOV R5,A

ENDProgram -1 ( Penjumlahan Data )org 0h

mov a,#12h

Reg a=12

mov r3,#13h

Reg r3=13

mov 34h,#14h

memori 34=14

mov 35h,#15h

memori 35=15

mov r1,#35h

Reg R1=35

add a,r3

A= A+R3= 12+ 13 = 25

mov r5,a

R5=25

add a,34h

A= A+ M(34=14)= 25+14=39

mov 45h,a

M(45)=39

add a,@r1

A= A+M(r1=35)15) = a=39+15= 4E

mov 46h,a

M(46)=4E

endprogram-2 ( pengurangan Data )org 0h

mov a,#86h

mov r3,#13h

mov 34h,#14h

mov 35h,#15h

mov r1,#35h

subb a,r3

A=A-R3=86-13=73

mov r5,a

R5=73

subb a,34h

A=A-m(34)= 73-14= 5F

mov 45h,a

M(45)=5F

subb a,@r1

A=A-M(R1=35)15= 5F-15=4A

mov 46h,a

M(46)=4A

end

Program-3 ( Perkalian ) org 0h

mov a,#05h

mov r3,#06h

mov 34h,#07h

mov 35h,#08h

mov b,r3

mul ab

A=AxB= 5x6= 30 Decimal= 1E

mov r5,a

mov a,34h

mov b,35h

mul ab

A=AxB= 7x8=56 Decimal=38 Hex

mov 46h,a

endProgram 4 Pembagian Data org 0h

mov a,#19h

mov r3,#05h

mov 34h,#2Ah

mov 35h,#06h

mov b,r3

DIV ab

A=19/05=05

mov r5,a

mov a,34h

mov b,35h

DIV ab

A=2A/06 =07

mov 46h,a

end

Program- 5 ( increment dan decrement )

org 0h

mov a,#36h

inc a

A=A+1= 36+1=37

mov r1,a

mov a,#56h

dec a

A=A-1 = 56-1 = 55

mov r2,a

end- 14 -