07-Instruksi Aritmatika
07-Instruksi Aritmatika
INSTRUKSI ARITMETIKA
Terdiri atas : 1. Intruksi Aritmetika 8 bit Menambahkan Isi Akumulator dengan data 8 bit, isi register serba guna, data pada alamat memori. Menambahkan dengan carry isi Akumulator dengan data 8 bit, isi register serba guna, data pada alamat memori. Menambah satu isi register dan data pada alamat memori Mengurangi Isi Akumulator dengan data 8 bit, isi register serba guna, data pada alamat memori. Mengurangi dengan carry isi Akumulator dengan data 8 bit, isi register serba guna, data pada alamat memori. Mengurangi satu isi register dan data pada alamat memori
INSTRUKSI ARITMETIKA
2. Intruksi Aritmetika 16 bit Menambahkan isi register HL, IX, dan IY dengan data pada register 16 bit Menambahkan dengan carry isi register HL dengan data pada register 16 bit Menambahkan satu isi register HL, IX, dan IY Mengurangi dengan carry isi register HL dengan data pada register 16 bit Mengurangi satu isi register HL, IX, dan IY
Note : Pada operasi penambahan dan pengurangan akan menset/mereset isi dari register bendera.
INSTRUKSI ARITMETIKA
MENAMBAH ISI AKUMULATOR DENGAN DATA DARI REGISTER 8 BIT
ADD A,n
ADD A, (HL) ADD A, (Ix+d) ADD A, (Iy+d)
=>
=> => =>
C6 , n
86 DD, 86, d FD, 86, d
INSTRUKSI ARITMETIKA
Contoh : Isi Register A adalah 7EH. Isi Register C adalah B9. Tambahkan isi Akumulator dengan isi dari register C. START
LD A, 7E H
3E 7E 0E B9 81
0111 1110
LD C, B9 H
ADD A, C
STOP
10
INSTRUKSI ARITMETIKA
Hasil Eksekusi Dissambler File
Memory Editor
11
INSTRUKSI ARITMETIKA
MENAMBAHKAN DENGAN CARRY ISI AKUMULATOR DENGAN DATA 8 BIT
=> Menambahkan dengan carry isi akumulator dengan data dari (Iy + d)
9
INSTRUKSI ARITMETIKA
Contoh : Isi Register A adalah BEH. Isi Register D Adela 5F. Tambahkan dengan carry isi Akumulator dengan isi dari register D. START
LD A, BE H
3E BE 16 5F 82
1011 1110
LD D, 5F H
ADC A, D
STOP
INSTRUKSI ARITMETIKA
MENAMBAHKAN SATU ISI REGISTER 8 BIT
Instruksi penambahan satu isi register 8 bit yaitu : INC r => 00 rrr 100 => Menambahkan satu isi register 8 bit => Menambahkan satu data pada (HL) => Menambahkan satu data pada (Ix+d) => Menambahkan satu data pada (Iy+d)
9
INC (HL) => 34 INC (Ix +d) => DD, 34, d INC (Iy +d) => FD, 34, d
INSTRUKSI ARITMETIKA
MENGURANGI ISI AKUMULATOR DENGAN DATA DARI REGISTER 8 BIT
SUB n
SUB r SUB (HL)
=> D6 , n
=> 10 010 rrr => 96
INSTRUKSI ARITMETIKA
MENGURANGI DENGAN CARRY ISI AKUMULATOR DENGAN DATA DARI REGISTER 8 BIT
INSTRUKSI ARITMETIKA
MENGURANGI SATU ISI REGISTER 8 BIT
DEC r
DEC (HL) => 35 DEC (Ix +d) => DD, 35, d DEC (Iy +d) => FD, 35, d
1
2 3 4 5 6 7 8 9 10 11 12 13 14
ADD A,n
ADD A,r ADD A, (HL) ADD A, (Ix+d) ADD A, (Iy+d) ADC A, n ADC A,r ADC A, (HL) ADC A, (Ix+d) ADC A, (Iy+d) INC r INC (HL) INC (Ix +d) INC (Iy +d)
C6 , n
10 000 rrr 86 DD, 86, d FD, 86, d CE, n 10 001 rrr 8E DD, 8E, d FD, 8E, d 00 rrr 100 34 DD, 34, d FD, 34, d
1
2 3 4 5 6
SUB n
SUB r SUB (HL) SUB (Ix+d) SUB (Iy+d) SBC A, n
D6 , n
10 010 rrr 96 DD, 96, d FD, 96, d DE, n
7
8 9
SBC A,r
SBC A, (HL) SBC A, (Ix+d)
10 011 rrr
9E DD, 9E, d
10
11 12 13 14
SBC A, (Iy+d)
DEC r DEC (HL) DEC (Ix +d) DEC (Iy +d)
FD, 9E, d
00 rrr 101 35 DD, 35, d FD, 35, d
Opcode + Operands
00 ss 1001 DD, 00 pp 1001 FD, 00 rr 1001 00 ss 0011
Keterangan
Menambahkan isi HL dengan isi reg. 16 bit. (ss bisa BC, DE, HL, SP) Menambahkan isi IX dgn isi reg. 16 bit. (pp bisa BC, DE, Ix, SP) Menambahkan isi IY dgn isi reg. 16 bit. (rr bisa BC, DE, Iy, SP) Menambahkan satu isi register 16 bit Menambahkan satu isi register Ix Menambahkan satu isi register Iy Menambahkan dengan carry isi HL dengan isi reg. 16 bit
5
6 7
INC Ix
INC Iy ADC HL,ss
DD, 23
FD, 23 ED, 01 ss 0010
N o 1 2 3 4
Keterangan
Mengurangi isi HL dengan data dari register 16 bit. (ss bisa berupa BC, DE, HL, SP) Mengurangi satu isi register 16 bit Mengurangi satu isi Ix Mengurangi satu isi Iy
INSTRUKSI ARITMETIKA
Latihan :
Buat Flowchartnya, tentukan kode operasi dari setiap intruksi, dan tentukan isi akumulator di akhir program ! 1. Isi Akumulator XYH. Tambahkan ke Akumulator data 16H. Incrementkan regiter A. Jumlahkan dengan carry isi Akumulator dengan data XYH.
2.
Isi BC dengan data 1XY5 H. Jumlahkan dengan carry isi Akumulator dengan isi reg. C. Memory Address 1XYAH berisi data 87H. Tambahkan isi Akumulator dengan isi dari memory address 1XYAH.
Isi Reg. C adalah FDH. Pindahkan isi Reg. C ke Akumulator. DE berisi 1XYB H. Kurangkan isi Akumulator dengan data XYH. Kurangkan dengan carry isi Akumulator dengan data dari reg. D. Isi register B dengan data XY H. Isi akumulator dengan data 67H. Decrementkan isi regiater B. Jumlahkan isi register B dengan akumulator. Isi regiter H dengan data 98H, regiater L dengan data XYH. Isi register BC dengan data 23XYH. Incrementkan register BC. Kurangkan dengan carry isi register HL dengan data dari register BC.
3.
4. 5.