You are on page 1of 8

OPERASI ARITMATIKA

Instruksi arithmetika meliputi: penambahan (addition), pengurangan (subtraction), pembandingan (comparison), perkalian (multiplication), pembagian (division).

Aturan Penulisan Operasi Arithmetika (sintaks)


Penjumlahan (Addition)
a. Instruksi ADD Contoh: ADD AX, BX ;hasilnya disimpan di AX -> INC reg atau INC [alamat] -> ADD reg1, reg2 atau ADD reg, [alamat] Hasil penjumlahan disimpan di reg1.

b. Instruksi INC Contoh: INC DX

Data pada reg atau [alamat] bertambah 1

;hasil DX = DX + 1

c. Instruksi ADC reg1. Contoh: ADC AH, AL

-> ADC reg1, reg2

atau

ADC reg, [alamat]

Penjumlahan biasa yang hasilnya ditambah dengan bit carry. Hasilnya disimpan di

;AH=AH + AL + carry

Pengurangan (Subtraction)
a. Instruksi SUB Contoh: SUB CX, BX -> ;hasilnya disimpan di CX DEC reg atau DEC [alamat] -> SUB reg1, reg2 atau SUB reg, [alamat] Hasil pengurangan disimpan di reg1.

b. Instruksi DEC Contoh: DEC CX

Data pada reg atau [alamat] akan bertambah 1

;hasil CX = CX + 1 -> SBB reg1, reg2 atau SUB [alamat], reg

c. Instruksi SBB

Pengurangan biasa yang hasilnya dikurangi dengan bit carry. Hasilnya disimpan di reg1 atau [alamat]. Contoh: SBB AH, AL ;hasil AH= AH AL carry

Pembandingan (CMP / Comparison)


Instruksi CMP Contoh: CMP DL, BL ;bandingkan isi DL dengan BL -> CMP reg1, reg2 atau CMP reg, data Membandingan isi reg1 dengan reg2 atau data.

Perkalian (Multiplication)
Instruksi MUL -> MUL reg atau MUL [alamat] AX (16 bit) dengan isi reg atau [alamat], hasilnya Perkalian antara AL (8 bit) atau Contoh: MUL MUL DL BX ;isi AL (8 bit) dikali dengan DL, hasil di AX. ;isi AX (16 bit) dikali dengan BX, hasil di DX-AX

disimpan di AX (8 bit) atau DX-AX (16 bit).

Pembagian (Division)
a. Pembagian 8 bit -> DIV reg atau DIV [alamat] Pembagian dividen (disimpan di AX) dengan divisor (reg 8 bit) atau data pada lokasi memori, hasilnya disimpan di AL sisanya di AH. Contoh: DIV DL ;isi AX dibagi DL,hasil di AL sisanya di AH.

b. Pembagian 16 bit -> DIV reg (16 bit) atau DIV [alamat] Pembagian dividen (disimpan di DX-AX) dengan divisor (reg 16 bit) atau data pada lokasi memori, hasilnya disimpan di AX sisanya di DX.

OPERASI LOGIKA DAN PERGESERAN BIT


Operasi NOT dan NEG -> NOT/NEG [alamat]
NEG seluruh bit akan menjadi komplemen-2

NOT/NEG

reg

atau

Seluruh bit pada isi register atau [alamat] yang diberi NOT akan di-NOT-kan sedangkan jika diberi

Contoh: NOT NOT NEG CL [BP] CL ;isi CL di-NOT-kan ;isi di [alamat] ;isi CL BP akan di-NOT-kan di-NEG-kan (komplemen-2)

Operasi AND -> AND reg1, reg2/data reg, [alamat]


Register 1 akan di-AND-kan dengan register 2 atau data atau [alamat] Contoh: AND AND AND CL, 45h AX, BX BL,[250] ;isi CL di-AND-kan dengan 45h ;isi AX di-AND-kan dengan BX

atau AND

;isi BL di-AND-kan dengan isi di lokasi 250h

Operasi OR reg, [alamat]

->

OR

reg1, reg2/data

atau

OR

Register 1 akan di-OR-kan dengan register 2 atau data/[alamat]. Contoh: OR OR DH, 25h CX, BX ;isi ;isi DH di-OR-kan dengan 25h CX di-OR-kan dengan BX

Operasi XOR reg, [alamat]

->

XOR

reg1, reg2/data

atau XOR

Register 1 akan di-XOR-kan dengan register2 atau data/[alamat] Contoh: XOR XOR BL, 25h DX, BX ;isi ;isi BL di-XOR-kan dengan 25h DX di-XOR-kan dengan BX

Operasi TEST -> TEST reg, [alamat]

reg1, reg2/data

atau TEST

Mirip dengan AND, hanya kedua register tidak berubah, yang berubah hanya bit-bit flag register. Contoh: TEST CL, 25h ;isi CL di-AND-kan dengan 25h tanpa mengubah isi CL.

Instruksi SHL (Shift Left) -> SHL reg, CL


Isi register di geser ke kiri sebanyak nilai CL. Contoh:

MOV SHL

CL, 2h AH, CL ;isi AH digeser ke kiri 2 langkah.

Instruksi SHR (Shift Right) -> SHR reg, CL


Isi register di geser ke kanan sebanyak nilai CL. Contoh: MOV SHR CL, 2h AH, CL ;isi AH digeser ke kanan 2 langkah

Rotasi (Rotate)
Instruksi ini digunakan untuk memutar isi bit pada suatu register ke kiri atau ke kanan sesuai perintah yang diberikan.

Instruksi ROL (Rotate Left)


Isi register di rotasi ke kiri sebanyak CL Contoh: ROL AH, 2h

-> ROL reg, CL

;isi AH dirotasi ke kiri 2 langkah

Instruksi ROR (Rotate Right) -> ROR reg, CL


Isi register di rotasi ke kanan sebanyak CL Contoh: ROR AH, 2h ;isi AH dirotasi ke kiri 2 langkah

OPERASI STRING
String adalah jenis data yang terdiri atas kumpulan karakter, angka maupun simbol. Pada operasi ini register SI dan DI punya peranan khusus. SI dipakai untuk mencatat alamat dari sumber string, sedangkan DI digunakan untuk mencatat alamat atau tempat hasil manipulasi string. Perintah yang dipakai: CLD, STD, CMPS, CMPSB, LODS, LODSB, LODSW, MOVS, MOVSB, MOVSW, REP, REPE, STOS, STOSB

OPERASI JUMP (Lompatan)


Pengertian Operasi Jump

Instruksi lompatan pada suatu program akan menyebabkan program melompati bagian tertentu dan mengeksekusi instruksi yang dikehendaki. Ada 2 jenis instruksi dalam operasi jump yaitu: lompat tak bersyarat dan lompat bersyarat.

Lompatan tak bersyarat


Instruksi lompatan ini langsung menuju ke alamat memori yang dituju tanpa syarat apapun, sehingga program langsung dapat kita arahkan menuju lokasi memori atau label dengan perintah atau instruksi JMP Aturan penulisannya : JMP lokasi memori/label Ada 3 jenis instruksi lompatan tak bersyarat yaitu:

Lompatan pendek (short jump) -> JMP SHORT disp yaitu melakukan lompatan maksimal sejauh 127 byte. Contoh: JMP SHORT 04h ;melakukan lompatan sejauh 4 byte Lompatan dekat (near jump) -> JMP disp_low disp_high yaitu melakukan lompatan lebih panjang maksimal 32 Kb. Contoh: JMP 0200h ;melakukan lompatan ke lokasi memori 200h Lompatan jauh (far jump) -> JMP FAR iplow Cslow Cshigh yaitu melakukan lompatan ke seluruh daerah memori. Contoh: JMP FAR nH ;melakukan lompatan jauh ke lokasi tertentu

Lompatan bersyarat
Yaitu lompatan pendek yang dilakukan ke seluruh daerah memori dalam segmen memori yang sama dan terjangkau oleh operasi ini. Instruksi ini menggunakan CMP untuk membandingkan kondisi yang dicek, sehingga akan melompat ke alamat yang dituju sesuai instruksi lompatan bersyarat, dimana instruksi lompatan bersyarat antara lain : JA (Jump if Above) ; lompat bila operand 1 > operand2 (bilangan tak bertanda) JAE (Jump if Above or Equal); lompat bila operand 1 >= operand2 (bilangan tak bertanda) JB (Jump if Below) ; lompat bila operand 1 < operand2 (bilangan tak bertanda) JBE (Jump if Below or Equal); lompat bila operand 1 <= operand2 (bilangan tak bertanda) JG (Jump if Greater); lompat bila operand 1 > operand2 (bilangan bertanda) JGE (Jump if Greater or Equal) ; lompat bila operand 1 >= operand2 (bilangan bertanda) JL (Jump if Less) ; lompat bila operand 1 < operand2 (bilangan bertanda) JLE (Jump if Less or Equal) ; lompat bila operand 1 <= operand2 (bilangan bertanda) JC (Jump if Carry) ; lompat bila ada bawaan JNC (Jump if No Carry) ; lompat bila tidak ada bawaan

JE atau JZ (Jump if Equal)/(Jump if Zerro) ; lompat bila operand 1 = operand 2 JNE atau JNZ (Jump if Not Equal)/(Jump if Not Zero); lompat bila operand 1 <> operand 2 JO (Jump on Overflow) ; lompat bila terjadi overflow JNO (Jump if No Overflow); lompat bila tidak terjadi overflow JS (Jump On Sign) ; lompat bila negatif JNS (Jump if No Sign) ; lompat bila positif JP atau JPE (Jump on Parity)/(Jump if ParityEven) ; lompat bila berparitas genap JNP atau JPO (Jump if No Parity)/(Jump if Parity Odd); lompat bila berparitas ganjil JCXZ (Jump if CX is Zero) ; lompat bila CX=0 JECXZ (Jump if Equal CX is Zero); lompat bila ECX=0 (khusus 80486 ke atas) Penulisan instruksi lompat bersyarat yang diawali dengan instruksi CMP yang berguna untuk membandingkan isi register untuk dilompati sesuai kondisi.

OPERASI STACK
Pengertian Operasi Stack
Stack (tumpukan) adalah bagian memori yang digunakan untuk menyimpan nilai dari register hanya sementara saja. Pada stack digunakan pasangan SS:SP untuk menunjukkan lokasi dari stack. Perintah yang digunakan adalah PUSH (menaruh ke dalam stack), dan POP (mengambil data dari stack).

Instruksi PUSH untuk operasi stack


Merupakan instruksi untuk memasukkan data ke dalam stack (tumpukan). Data berasal dari data mentah, register atau isi lokasi memori Sintaks: PUSH reg PUSH [lokasi memori] PUSH data

Instruksi POP
Merupakan instruksi untuk mengambil kembali data dari stack (kebalikan PUSH) ke dalam register atau lokasi memori Sintaks: POP reg

POP [alamat] POPF ;mengambil isi stack dan ditempatkan di reg flag

Instruksi PUSHF
Merupakan instruksi untuk memasukkan isi register flag ke dalam stack Sintaks: PUSHF

Perpindahan data selain MOV


Beberapa instruksi perpindahan data selain memakai perpindahan data string (LODS, STOS dan MOVS) MOV meliputi: PUSH, POP, XCHG, LEA,

Aturan penulisan operasi perpindahan data (sintaks)


Instruksi XCHG (exchange)
Berfungsi untuk menukarkan isi register dengan register lain atau isi register dengan isi lokasi memori. Tidak berlaku untuk antar lokasi memori. Sintaks: XCHG reg, reg XCHG reg, [alamat] Contoh: XCHG XCHG XCHG AX, BX DX, [DI] [SI], CH ;menukar isi AX dengan BX ;menukar isi DX dengan isi lokasi memori DI ;menukar isi lokasi memori dengan CH

Instruksi LEA (Load Effective Address)


Berfungsi untuk mengambil alamat suatu data pada lokasi memori dan meletakkannya di register 16 bit. Sintaks: Contoh: LEA LEA LEA BX, [DI] BX, VAR1 ;isi alamat di reg DI diambil dan disimpan di BX ;isi alamat offset data dengan label VAR1 diambil dan disimpan di BX AX, [SI] ;isi data di lokasi memori SI diambil dan disimpan di AX LEA reg, [alamat] LEA reg, variable

Instruksi LODS (Load String)

Berfungsi untuk memindahkan data string pada segment data yang alamat offsetnya ditunjukkan oleh isi register SI ke accumulator (AL, AX) akan di-increment (+1) atau decrement (-1). Instruksi ini ditambah dengan B bila memindahkan byte, W (word) atau D (double word). Contoh: LODSB LODSW LODSD LODS LODS LODS ; data byte di lokasi memori SI dipindah ke reg AL ; data word di lokasi memori SI dipindah ke reg AX ; data doubleword di lokasi SI dipindah ke reg EAX DAT1 ;data label DAT1 dipindah ke AL (byte) DAT2 ;data label DAT2 dipindah ke AX (word) DAT3 ;data label DAT3 dipindah ke EAX (doubleword)

Instruksi STOS (Store string)


Berfungsi memindahkan string pada AL, AX, EAX ke ekstra segment yang alamat offsetnya ditunjukkan oleh isi DI (ES:DI) Contoh: STOSB STOSW STOS ;isi AL dipindah ke lokasi memori DI ;isi AX dipindah ke lokasi memori DI DAT1 ;isi AL dipindah ke label DAT1 di alamat DI

Instruksi MOVS (Move string)


Memindahkan isi string dari suatu lokasi memori ke lokasi memori yang lain berupa byte, word atau double word dari data segment beralamat offset SI ke ekstra segment beralamat offset DI.
Contoh: MOVSB MOVSW MOVSD ;isi lokasi memori berisi byte ke lokasi memori lain ;isi lokasi memori berisi word ke lokasi memori lain ;isi lokasi memori berisi double word ke lokasi lain

You might also like