Anda di halaman 1dari 40

OPERASI ARITMATIKA DAN

LOGIKA
Operasi Set Instruksi Untuk Transfer Control
1. JUMP (cabang) : pemindahan tidak bersyarat dan memuat
PC dengan alamat tertentu.
2. JUMP BERSYARAT : menguji persyaratan tertentu
danmemuat
PC dengan alamat tertentu atau tidak
melakukan apa tergantung dari
persyaratan.
3. JUMP SUBRUTIN : melompat ke alamat tertentu.
4. RETURN : mengganti isi PC dan register lainnya yang berasal
dari lokasi tertentu.
5. EXECUTE : mengambil operand dari lokasi tertentu dan
mengeksekusi sebagai instruksi
Operasi Set Instruksi Untuk Transfer Control
6. SKIP : menambah PC sehingga melompati instruksi
berikutnya.
7. SKIP BERSYARAT : melompat atau tidak melakukan
apa-apa berdasarkan pada persyaratan
8. HALT : menghentikan eksekusi program.
9. WAIT (HOLD) : melanjutkan eksekusi pada saat
persyaratan dipenuhi.
10. NO OPERATION : tidak ada operasi yang dilakukan.
Hanya dapat dieksekusi ketika prosesor berada
dalam keadaan khusus tertentu atau sedang
mengeksekusi suatu program yang berada dalam
area khusus, biasanya digunakan dalam sistem
operasi.
Contoh : membaca atau mengubah register kontrol.
Operasi Set Instruksi Untuk Transfer Data
MOVE : memindahkan word atau blok dari sumber
ke tujuan
STORE : memindahkan word dari prosesor ke
memori.
LOAD : memindahkan word dari memori ke
prosesor.
EXCHANGE : menukar isi sumber ke tujuan.
CLEAR / RESET : memindahkan word 0 ke tujuan.
SET : memindahkan word 1 ke tujuan.
PUSH : memindahkan word dari sumber ke bagian
paling atas stack.
POP : memindahkan word dari bagian paling atas
sumber
Operasi Set Instruksi Untuk Conversi
TRANSLATE : menterjemahkan nilai-nilai dalam
suatu bagian memori berdasarkan
tabel korespodensi.
CONVERT : mengkonversi isi suatu word dari
suatu bentuk ke bentuk lainnya.
Operasi Set Instruksi Untuk Operasi Logical

1. AND, OR, NOT, EXOR


2. COMPARE : melakukan perbandingan logika.
3. TEST : menguji kondisi tertentu.
4. SHIFT : operand menggeser ke kiri atau kanan
menyebabkan konstanta pada ujung bit.
5. ROTATE : operand menggeser ke kiri atau ke kanan
dengan ujung yang terjalin.
Operasi Aritmatika Dan Logika
Bagian ini akan membahas instruksi aritmatika
dan logika yang dapat ditemukan pada
mikroprosesor Intel 8086-80486. Instruksi-
instruksi aritmatika meliputi: penam-bahan
(addition), pengurangan (subtraction),
pembandingan (comparison), perkalian
(multiplication), pembagian (division). Instruksi-
instruksi logika meliputi: operasi dan (AND), atau
(OR), Exclusive-OR (XOR), pembandingan logika
(TEST), ingkaran (NOT), NEG, pergeseran (shift),
dan rotasi (rotate).
Penjumlahan (Addition)
Penjumlahan memiliki banyak bentuk untuk mikroprosesor
8086-80486. Ada lebih dari 1000 variasi penjumlahan yang
mungkin untuk mikroprosesor keluarga Intel. Instruksi yang
digunakan untuk keperluan ini adalah ADD, ADC (add with
carry), dan INC (increment). INC adalah sebuah opefasi
penjumlahan khusus yang banyak dipakai untuk keperluan
pemrograman.
Mode pengalamatan yang terjadi pada operasi
penjumlahan mencakup hampir semua mode
pengalamatan yang ada, kecuali penjumlahan dari memori
ke memori dan dari memori ke register segmen. Operasi
penjumlahan ini akan menyebabkan perubahan bit-bit
pada flag register, yaitu bit-bit: Z, C, A, S, P, dan 0 (lihat
kemb^li flag register). Berikut ini akan diperlihatkan
beberapa jenis penjumlahan yang ada.
Penjumlahan register
(register addition)
Adalah penjumlahan yang terjadi antara data
suatu register asal dan suatu register tujuan. Hasil
penjumlahan ini disimpan di register tujuan.
Sintaks:
ADD reg_tujuan,reg_asal
Contoh:
ADD BL, CL ; menjumlahkan isi register BL dan CL,
hasilnya disimpan di register BL
ADD CX, BX ; menjumlahkan isi register CX dan
BX, hasilnya disimpan di CX
Penjumlahan dengan data langsung
(immediate addition)
Adalah penjumlahan yang terjadi antara isi suatu
register dengan suatu data (mentah). Hasilnya
disimpan di register tersebut. .
Sintaks:
ADD reg,data
Contoh:
ADD AH,80h ; menjumlahkan isi register.AH dengan
80h, hasilnya disimpan di AH
ADD BX,100h ; menjumlahkan isi register BX dengan
l00h, hasil-nya disimpan di BX
Penjumlahan memori-register
(memory-register addition)
Penjumlahan dari memori-register (memory-
register addition) terjadi antara data suatu
lokasi memori (asal) ke suatu register (tujuan)
atau sebaliknya. Hasil penjumlahannya
disimpan di register tujuan tersebut,
Sintaks:
ADD reg, [alamat]
ADD [alamat] ,reg
Contoh
ADD AH,[AL] ;isi register AH dijumlahkan dengan data
pada lokasi memori ;beralamat
[DSxl0h+AL], hasilnya disimpan di register
AH
ADD [AL],AH ; data pada lokasi memori
beralamat[DSxl0h+AL]dijumlahkan ;
dengan isi register AH, hasilnya disimpan
memori tersebut
ADD AH,VAR1 ;isi register AH dijumlahkan dengan
variabel VAR1 (sebuah data; di lokasi
memori yang diwakili oleh VAR1) dan
hasilnya disimpan di register AH
INC (Increment)
Increment (penambahan 1) menyebabkan data pada
suatu lokasi memori atau suatu register bertambah 1.
Sintaks:
INC reg
INC [alamat]
Contoh:
INC A ; isi register A ditambah 1
INC [SI] ; isi lokasi memori beralamat [DSxl0h+SI]
ditambah 1
INC VAR2 ; isi VAR2 ditambah 1
ADC (Add with Carry)
ADC (add with carry) pada dasarnya similar (mirip) dengan
penjumlahan biasa (ADD). Bedanya, pada operasi ADC, bit
carry (C) turut dijumlahkan.
Sintaksnya juga mirip dengan operasi ADD (ADD diganti
dengan ADC).
Contoh
ADC AH,AL ; AH = AH + AL + carry, hasilnya disimpan
diregister AH
ADC BX,DX ; BX = BX + DX + carry, hasilnya disimpan
diregister BX
ADC [DI],CH ; menjumlahkan data pada lokasi memori
beralamat[DSxlOh+DI] dengan isi register CH
dan bit carry,hasilnya disimpan di lokasi
memori itu sendiri
Pengurangan (Subtraction)
Amat mirip dengan penjumlahan, pengurangan pun
memiliki banyak bentuk. Ada lebih dan 1000 variasi
pengurangan yang dimiliki mikroprosesor keluarga Intel.
Instruksi yang digunakan untuk keperluan ini adalah SUB,
SBB (sub with borrow), dan DEC (decrement). DEC adalah
sebuah operasi pengurangan khusus yang banyak dipakai
untuk keperluan pemrograman.
Mode pengalamatan yang terjadi pada operasi
pengurangan mencakup hampir semua mode
pengalamatan yang ada, kecuali pengurangan dari memori
ke memori dan dari memori ke register segmen. Seperti
pada operasi penjumlahan, operasi pengurangan juga akan
menyebabkan perubahan bit-bit pada flag register, yaitu
bit-bit: Z, C, A, S, P, dan 0 (lihat kembali tentang flag
register).
Pengurangan register
(register subtraction)
Pengurangan register (register"subtraction) merupakan
pengurangan data suatu register asal oleh isi register
tujuan. Hasil pengurangan ini disimpan di register
tujuan.
Sintaks: SUB reg_tujuan,reg_asal
Contoh:
SUB BL, CL ; mengurangkan. isi register BL dengan isi
CL, hasilnya disimpan di ; register BL
SUB CX, BX ; mengurangkan isi register CX dengan isi
BX, ha-; silnya disimpan di register CX
Pengurangan dengan data langsung
(immediate subtraction)
Pengurangan dengan data langsung (immediate
subtraction) merupakan pengurangan isi suatu register
oleh suatu data (mentah). Hasilnya disimpan di
register tersebut.
Sintaks:
SUB reg,data
Contoh:
SUB AH,80h ; mengurangkan isi register AH dengan
80h, hasilnya disimpan di AH
SUB .BX,100h ; mengurangkan isi register BX dengan
lOOh, hasil nya disimpan di BX
Pengurangan memori-register
(memory-register subtraction)
Pengurangan memori-register (memory-register subtraction)
merupakan pengurangan data suatu lokasi memori (asal) oleh suatu
register (tujuan) atau sebaliknya, dan hasilnya disimpan di register
tersebut.
Sintaks:
SUB reg, [alamat]
SUB [alamat],reg
Contoh:
SUB AH,[AL] ; mengurangkan isi register AH dengan data pada
lokasi memori beralamat [DS*10h+AL], hasilnya
disimpan di register AH
SUB [AL],AH ; mengurangkan data pada lokasi memori beralamat
[DSxlOh+AL] ;dikurangkan dengan isi register AH, ;
hasilnya disimpan di. lokasi memori tersebut SUB
AH,VAR1 ; mengurangkan isi register AH dengan
variabel ; VAR1, hasilnya disimpan di register AH
DEC (Decrement)
Decrement (pengurangan 1) merupakan kebalikan dari
increment, yang menyebabkan data suatu lokasi
memori atau suatu register berkurang 1.
Sintaks:
DEC reg
DEC [alamat]
Contoh:
DEC DL ; isi register DL dikurangi 1
DEC [SI] ; isi lokasi memori beralamat [DS:SI]
dikurang
DEC VAR2 ; isi VAR2 dikurangi 1
SBB (Sub with Borrow)
SBB (sub with borrow) pada dasarnya similar (mirip)
dengan pengurangan biasa (SUB). Pada operasi SBB ini, bit
carry (C) turut dijumlahkan.
Sintaksnya juga mirip dengan operasi SUB (SUB diganti
dengan SBB).
Contoh:
SBB AH,AL ; AH = AH - AL - carry, hasilnya disimpan di
register AH
SBB BX,DX ; BX = BX - DX - carry, hasilnya disimpan di
register BX
SBB [DI],CH ; data pada lokasi memori beralamat
[DS*10h+DI} dikurangkan dengan isi register
CH dan bit carry, hasilnya disimpan di lokasi
memori tersebut
SBB BP,VAR1 ; BP = BP - VAR1 - carry, hasilnya disimpan
di register BP
Pembandingan (Comparison)
Pada dasarnya, operasi pembandingan adalah operasi
pengurangan tetapi tidak mengubah isi lokasi memori
atau register tujuan (yang berubah adalah bit-bit flag
register C, Z, dan S). Operasi ini dijalankan dengan
instruksi CMP. Biasanya instruksi ini diikuti dengan
instruksi lompatan bersyarat untuk menindak-lanjuti
hasil pembandingan tersebut.
Sintaksnya adalah sebagai berikut:
CMP reg,reg
CMP reg,data
CMP reg, [alamat]
CMP [alamat], reg
Contoh
CMP DL,BL ; DL = DL - BL, tanpa mengubah isi DL maupun BL
CMP BX,[SI] ; isi register BX dikurangi dengan isi lokasi memori
beralamat [DS:SI] tanpa mengubah isi BX maupun isi
memori tersebut
CMP [BP],AX ; isi lokasi memori beralamat [SS:BP] dikurangi dengan
isi register AX tanpa mengubah isi register AX
maupun isi memori tersebut
CMP CX,,VAR3 ; isi register CX=CX-VAR3 tanpa mengubah isi register
CX dan VAR3
CMP DH,10h ; DH = DH l0h, tanpa mengubah isi register DH dan
10H
Oleh karena operasi pembandingan pada dasarnya adalah operasi
pengurangan, bila bilangan yang di sebelah kiri lebih kecil daripada
sebelah kanan, bit Sign akan diset NG (negatif) dan bit Carry akan
diset CY (ada carry). Sebaliknya, apabila bilangan di sebelah kiri
lebih besar daripada bilangan di sebelah kanan, bit Sign akan diset
PL (positif) dan bit Carry akan diset NC (tidak ada carry). Bila kedua
bilangan yang dibandingkan sama, bit Zero akan diset ZR (hasil
operasi 0), sebaliknya jika kedua bilangan berbeda akan diset NZ
(hasil operasi tidak 0).
Perkalian (Multiplication)
Operasi perkalian pada mikroprosesor keluarga Intel
baru dapat dilakukan sejak 8088 diluncurkan. Untuk
mikroprosesor terdahulu (8-bit), perkalian dilakukan
dengan menggunakan sederetan operasi pergeseran
(shifts) atau penambahan (addition).
Instruksi yang digunakan untuk perkalian ini adalah
MUL (untuk bilangan tidakbertanda/uttsignedwj6er)
dan IMUL (untuk bilangan integer). Perkalian dapat
dilakukan untuk bilangan 8-bit, 16 bit dan juga 32-bit.
Perkalian 8-bit
Perkalian 8-bit adalah perkalian antara sebuah
multiplicand (bilangan yang akan dikalikan, yang
tersimpan di register AL) dengan sebuah
multiplier (bilangan pengali, yang dapat
merupakan isi sebuah register 8-bit, atau data
pada lokasi memori tertentu, atau sebuah
variabel). Hasil perkalian ini disimpan di register
AX (perkalian 8-bit menghasilkan bilangan 16-bit).
Sintaks:
MUL reg
MUL [alamat]
Contoh
MUL VAR1,AL ; isi register AL dikalikan dengan
VAR1, ; hasilnya disimpan
di register AX MUL BYTE PTR [SI]
MUL DL,AL ; isi register AL dikalikan
dengan"isi register DL,
hasilnya disimpan di register AX
lokasi memori beralamat
[DS:SI], hasilnya ; disimpan di
register AX
Perkalian 16-bit
Perkalian 16-bit adalah perkalian antara sebuah
multiplicand (bilangan yang akan dikalikan, yang
tersimpan di register AX) dengan sebuah multiplier
(bilangan pengali, yang dapat merupakan isi sebuah
register 16-bit, atau data pada lokasi memori tertentu,
atau sebuah variabel). Hasil perkalian ini disimpan di
register DX-AX (perkalian 16-bit menghasilkan bilangan
32-bit).
Sintaks:
MUL reg
MUL [alamat]
Contoh
MUL BX,AX; isi register AX dikalikan dengan isi
register BX, hasilnya disimpan di
register DX-AX
MUL WORD PTR [DI] ; isi register AX dikalikan
dengan isi lokasi memori beralamat
[DSxlOh+DI], hasilnya disimpan di
register DX-AX
MUL VAR2; isi register- AX dikalikan dengan VAR2,
hasilnya disimpan di register DX-AX
Pembagian (Division)
Seperti halnya operasi perkalian, pembagian pada
mikroprosesor keluarga Intel juga baru dapat dilakukan
sejak 8088 diluncurkan. Untuk mikroprosesor
terdahulu (8-bit), pembagian dilakukan dengan
menggunakan sederetan operasi pergeseran (shifts)
atau pengurangan (subtraction). Instruksi yang
digunakan untuk pembagian ini adalah DIV (untuk
bilangan tidak bertanda/ws/gm/ number) dan IDIV
(untuk bilangan integer). Pembagian dapat dilakukan
untuk bilangan 8-bit (bilangan yang dibagi 16-bit dan
pembaginya 8-bit), 16 bit (bilangan yang dibagi 32-bit
dan pem-baginya 16-bit) dan 32-bit (bilangan yang
dibagi 64-bit dan pembaginya 32-bit).
Pembagian 8-bit
Pembagian 8-bit adalah pembagian sebuah
dividen (bilangan yang akan dibagi, yang
disimpan di register AX), dengan sebuah divisor
(bilangan pembagi, yang dapat merupakan isi
sebuah register 8-bit, atau data pada lokasi
memori tertentu, I atau sebuah variabel). Hasil
pembagian ini disimpan di register AL dan sisanya
di AH.
Sintaks:
DIV reg
DIV [alamat]
Contoh:
DIV DL ;isi register AX dibagi dengan isi
register DL, hasilnya disimpan
di register AL sisanya di register AH
DIV BYE PTR [SI] ; si register AL dibagi dengan isi
lokasi memori beralamat [DSxlOh+SI],
hasilnya di register AL dan sisanya di
register AH
DIV VAR1 ; isi register AL dibagi dengan VAR1,
hasilnya di register AL dan sisanya di
register AH
Pembagian 16-bit
Pembagian 16-bit adalah pembagian sebuah
dividend (bilangan yang akan dibagi, yang
disimpan di register DX-AX), dengan sebuah
divisor (bilangan pembagi, yang dapat merupakan
isi sebuah register 16-bit, atau data pada lokasi
memori ter-tentu, atau sebuah variabel). Hasil
pembagian ini disimpan di register AX dan sisanya
di DX.
Sintaks:
DIV reg
DIV [alamat]
Contoh:

DIV BX ; isi register DX-AX dibagi dengan isi


register BX, hasilnya disimpan di
register AX sisanya di register DX
DIV WORD PTR [DI] isi register DX-AX dibagi dengan
isi lokasi memori beralamat
[DSxlOh+Dl], hasilnya d-i register AX
dan sisanya di regis ter DX
DIV VAR2 isi register DX-AX dibagi dengan
VAR2, hasilnya di register AX dan
sisanya di register DX
INSTRUKSI SHIFT
SLA m
Pergeseran aritmatik ke kiri dilaksanakan pada isi operand
m, bit 0 direset, isi bit 0 terdahulu dipindahkan ke bit 1, isi
bit 1 terdahulu dipindahkan ke bit 2, dan seterusnya. Isi bit
7 dicopy ke flag carry.
SRL m
Pergeseran aritmatik ke kanan dilaksanakan pada isi
operand m, isi bit 7 terdahulu dipindahkan ke bit 6, isi bit 6
terdahulu dipindahkan ke bit 5 dan seterusnya, isi bit 0
dipindahkan ke flag carry. Isi bit 7 direset ke 0.
SRA m
Pergeseran aritmatik ke kanan dilaksanakan pada isi
operand m, isi bit 7 terdahulu dipindahkan ke bit 6, isi bit 6
terdahulu dipindahkan ke bit 5 dan seterusnya, isi bit 0
dipindahkan ke flag carry. Isi bit 7 yang terdahulu tidak
berubah.
INSTRUKSI ROTASI
RLA
Isi AKUMULATOR dirotasi ke kiri, isi bit 0 dipindahkan ke bit
1 isi bit 1 yang terdahulu dipindahkan ke bit 2 dan
seterusnya. Isi bit 7 dicopy pada flag carry dan juga ke bit 0
(bit 0 adalah bit berorde paling rendah).
RLCA
Isi AKUMULATOR dirotasi ke kiri, isi bit 0 dipindahkan ke bit
1 isi bit 1 yang terdahulu dipindahkan ke bit 2 dan
seterusnya. Isi bit 7 dicopy pada flag carry dan isi flag carry
terdahulu dicopy ke 0.
RRA
Isi AKUMULATOR dirotasi ke kanan, isi bit 7 dipindahkan ke
bit 6, isi bit 6 terdahulu dipindah ke bit 5, dan seterusnya.
Isi bit 0 dicopy ke bit 7 dan juga ke flag carry.
INSTRUKSI ROTASI
RRCA
Isi AKUMULATOR dirotasi ke kanan, isi bit 7 dipindahkan ke
bit 6, isi bit 6 terdahulu dipindah ke bit 5, dan seterusnya.
Isi bit 0 dicopy ke flag carry dan isi flag carry yang terdahulu
dicopy ke bit 7.
RLA r
Isi register r (8 bit) dirotasi ke kiri, isi bit 0 dipindahkan ke 1,
isi bit 1 terdahulu dipindahkan ke bit 2, dan seterusnya. Isi
bit 7 dicopy ke flag carry dan juga ke bit 0.
RLA(HL)
Isi memori yang ditunjuk oleh pasangan register HL dirotasi
ke kiri, isi bit 0 dipindahkan ke bit 1, isi bit 1 terdahulu
dipindahkan ke bit 2, dan seterusnya. Isi bit 7 dicopy ke flag
carry dan juga ke bit 0.
INSTRUKSI ROTASI
RLA (IX+d)
Isi memori pada lokasi yang ditunjuk oleh jumlah isi
register indeks IX dan bilangan bulat penggeser 2
komplemen d dirotasi ke kiri, isi bit 0 dipindah ke bit 1,
isi bit 1 terdahulu dipindah ke bit 2, dan seterusnya. Isi
bit 7 dicopy ke flag carry dan juga ke bit 0.
RLA (IY+d)
Isi memori pada lokasi yang ditunjuk oleh jumlah isi
register indeks IY dan bilangan bulat penggeser 2
komplemen d dirotasi ke kiri, isi bit 0 dipindah ke bit 1,
isi bit 1 terdahulu dipindah ke bit 2, dan seterusnya. Isi
bit 7 dicopy ke flag carry dan juga ke bit 0.
INSTRUKSI ROTASI
RLC m
Operand m adalah salah satu dari r, (HL), (IX+d), (IY+d),
seperti yang telah dijelaskan pada instruksi RLC. Isi operand
m dirotasi ke kiri, isi bit 0 dipindah ke bit 1, isi bit 1
terdahulu dipindah ke bit 2, dan seterusnya. Isi bit 7 dicopy
ke flag dan isi flag carry yang terdahulu dicopy ke 0.
RRA m
Isi dari operand m dirotasi ke kanan, isi bit 7 dipindahkan ke
bit 6, isi bit 6 yang terdahulu dicopy ke bit 5 dan seterusnya.
Isi bit 0 dicopy ke flag carry dan juga ke bit 7.
RRC m
Isi dari operand m dirotasi ke kanan, isi bit 7 dipindahkan ke
bit 6, isi bit 6 yang terdahulu dicopy ke bit 5 dan seterusnya.
Isi bit 0 dicopy ke flag carry dan isi flag carry yang terdahulu
di copy ke bit 7.
INSTRUKSI ROTASI
RLD
Isi 4 bit berorde rendah (bit 3, 2, 1, 0) dari memori yang
lokasinya ditunjukan oleh isi pasangan register HL dicopy ke 4
bit berorde tinggi (bit 7, 6, 5, 4) dari lokasi memory yang sama,
isi ke 4 bit berorde tinggi terdahulu dicopy ke 4 bit akumulator
berorde rendah dari memori pada lokasi yang ditunjukan oleh
HL. Isi bit-bit akumulator berorde tinggi tidak terpengaruh.
RRD
Isi 4 bit berorde rendah (bit 3, 2, 1, 0) dari memori yang
lokasinya ditunjukan oleh isi pasangan register HL dicopy ke 4
bit berorde tinggi (bit 7, 6, 5, 4) pada memori yang lokasinya
ditunjukan oleh pasangan register HL, dan isi 4 bit berorde
tinggi dari (HL) dicopy ke 4 bit (HL) yang rendah. Isi 4 bit
akumulator berorde tinggi tidak terpengaruh. Catatan : (HL)
berarti memori yang lokasinya ditunjuk oleh isi pasangan
register HL.
SHR 0 CF
MSB LSB

SHL/SAL CF 0
MSB LSB

SAR MSB CF
MSB LSB

39
Sekian ..

Anda mungkin juga menyukai