Minggu Ke 4 Operasi Arithmnatik
-
Upload
neysa-pucciinkk -
Category
Documents
-
view
216 -
download
3
description
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 -