P. 1
OPERASI ARITMATIKA

OPERASI ARITMATIKA

|Views: 56|Likes:
Dipublikasikan oleh Titin Martini

More info:

Published by: Titin Martini on Mar 04, 2013
Hak Cipta:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as DOC, PDF, TXT or read online from Scribd
See more
See less

09/25/2013

pdf

text

original

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

isi AX dibagi DL. . reg2 atau CMP reg. Hasilnya disimpan di reg1 atau [alamat]. 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 . hasilnya disimpan di AL sisanya di AH. hasil di DX-AX disimpan di AX (8 bit) atau DX-AX (16 bit). BL . hasilnya disimpan di AX sisanya di DX. Perkalian (Multiplication) Instruksi MUL -> MUL reg atau MUL [alamat] AX (16 bit) dengan isi reg atau [alamat]. Pembagian 8 bit -> DIV reg atau DIV [alamat] Pembagian dividen (disimpan di AX) dengan divisor (reg 8 bit) atau data pada lokasi memori. Pembagian (Division) a.isi AL (8 bit) dikali dengan DL. data Membandingan isi reg1 dengan reg2 atau data. b.hasil di AL sisanya di AH. Contoh: SBB AH.bandingkan isi DL dengan BL -> CMP reg1.Pengurangan biasa yang hasilnya dikurangi dengan bit carry. 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. Contoh: DIV DL . AL . hasilnya Perkalian antara AL (8 bit) atau Contoh: MUL MUL DL BX .hasil AH= AH – AL – carry Pembandingan (CMP / Comparison) Instruksi CMP Contoh: CMP DL. hasil di AX.isi AX (16 bit) dikali dengan BX.

reg2/data atau XOR Register 1 akan di-XOR-kan dengan register2 atau data/[alamat] Contoh: XOR XOR BL. reg2/data atau OR Register 1 akan di-OR-kan dengan register 2 atau data/[alamat]. reg2/data reg. Contoh: TEST CL.isi . [alamat] Register 1 akan di-AND-kan dengan register 2 atau data atau [alamat] Contoh: AND AND AND CL.isi . [alamat] -> OR reg1. [alamat] -> XOR reg1.isi DH di-OR-kan dengan 25h CX di-OR-kan dengan BX Operasi XOR reg.isi di [alamat] . 25h DX. BX . BX . 45h AX. hanya kedua register tidak berubah. reg2/data atau TEST Mirip dengan AND.isi BL di-XOR-kan dengan 25h DX di-XOR-kan dengan BX Operasi TEST -> TEST reg.isi CL di-AND-kan dengan 25h tanpa mengubah isi CL.isi CL di-NOT-kan .Contoh: NOT NOT NEG CL [BP] CL . 25h .isi CL di-AND-kan dengan 45h .isi CL BP akan di-NOT-kan di-NEG-kan (komplemen-2) Operasi AND -> AND reg1. .[250] .isi AX di-AND-kan dengan BX atau AND . yang berubah hanya bit-bit flag register. [alamat] reg1. 25h CX. BX BL.isi BL di-AND-kan dengan isi di lokasi 250h Operasi OR reg. Contoh: OR OR DH.

CL Isi register di geser ke kanan sebanyak nilai CL. REP. STOSB OPERASI JUMP (Lompatan) Pengertian Operasi Jump . 2h .isi AH dirotasi ke kiri 2 langkah OPERASI STRING String adalah jenis data yang terdiri atas kumpulan karakter. LODSB. SI dipakai untuk mencatat alamat dari sumber string. Pada operasi ini register SI dan DI punya peranan khusus. sedangkan DI digunakan untuk mencatat alamat atau tempat hasil manipulasi string. REPE.isi AH dirotasi ke kiri 2 langkah Instruksi ROR (Rotate Right) -> ROR reg. Perintah yang dipakai: CLD. LODS. MOVSW. STD. CMPS. STOS. Instruksi ROL (Rotate Left) Isi register di rotasi ke kiri sebanyak CL Contoh: ROL AH.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. CL .Instruksi SHL (Shift Left) -> SHL reg. CL . Contoh: MOV SHR CL. MOVSB. LODSW. Contoh: MOV SHL CL. MOVS. CL Isi register di geser ke kiri sebanyak nilai CL. Instruksi SHR (Shift Right) -> SHR reg. CL .isi AH digeser ke kiri 2 langkah. angka maupun simbol. 2h AH. 2h AH. CL Isi register di rotasi ke kanan sebanyak CL Contoh: ROR AH. CMPSB. 2h -> ROL reg.

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. lompat bila tidak ada bawaan . lompat bila operand 1 <= operand2 (bilangan bertanda)  JC (Jump if Carry) .Instruksi lompatan pada suatu program akan menyebabkan program melompati bagian tertentu dan mengeksekusi instruksi yang dikehendaki. sehingga akan melompat ke alamat yang dituju sesuai instruksi lompatan bersyarat. Contoh: JMP SHORT 04h . lompat bila operand 1 >= operand2 (bilangan bertanda)  JL (Jump if Less) . lompat bila ada bawaan  JNC (Jump if No Carry) . Contoh: JMP 0200h . lompat bila operand 1 >= operand2 (bilangan tak bertanda)  JB (Jump if Below) . Contoh: JMP FAR nH . Lompatan tak bersyarat Instruksi lompatan ini langsung menuju ke alamat memori yang dituju tanpa syarat apapun. Instruksi ini menggunakan CMP untuk membandingkan kondisi yang dicek. lompat bila operand 1 > operand2 (bilangan tak bertanda)  JAE (Jump if Above or Equal).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. lompat bila operand 1 < operand2 (bilangan tak bertanda)  JBE (Jump if Below or Equal). lompat bila operand 1 < operand2 (bilangan bertanda)  JLE (Jump if Less or Equal) . lompat bila operand 1 > operand2 (bilangan bertanda)  JGE (Jump if Greater or Equal) . lompat bila operand 1 <= operand2 (bilangan tak bertanda)  JG (Jump if Greater).melakukan lompatan sejauh 4 byte Lompatan dekat (near jump) -> JMP disp_low disp_high yaitu melakukan lompatan lebih panjang maksimal 32 Kb. dimana instruksi lompatan bersyarat antara lain :  JA (Jump if Above) .melakukan lompatan ke lokasi memori 200h Lompatan jauh (far jump) -> JMP FAR iplow Cslow Cshigh yaitu melakukan lompatan ke seluruh daerah memori. Ada 2 jenis instruksi dalam operasi jump yaitu: lompat tak bersyarat dan lompat bersyarat.

lompat bila negatif  JNS (Jump if No Sign) . Instruksi PUSH untuk operasi stack Merupakan instruksi untuk memasukkan data ke dalam stack (tumpukan). OPERASI STACK Pengertian Operasi Stack Stack (tumpukan) adalah bagian memori yang digunakan untuk menyimpan nilai dari register hanya sementara saja. lompat bila operand 1 <> operand 2  JO (Jump on Overflow) . lompat bila tidak terjadi overflow  JS (Jump On Sign) . dan POP (mengambil data dari stack). Pada stack digunakan pasangan SS:SP untuk menunjukkan lokasi dari stack. 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. JE atau JZ (Jump if Equal)/(Jump if Zerro) . lompat bila CX=0  JECXZ (Jump if Equal CX is Zero). lompat bila berparitas ganjil  JCXZ (Jump if CX is Zero) . lompat bila operand 1 = operand 2  JNE atau JNZ (Jump if Not Equal)/(Jump if Not Zero). lompat bila berparitas genap  JNP atau JPO (Jump if No Parity)/(Jump if Parity Odd). 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 . lompat bila terjadi overflow  JNO (Jump if No Overflow). lompat bila positif  JP atau JPE (Jump on Parity)/(Jump if ParityEven) . Perintah yang digunakan adalah PUSH (menaruh ke dalam stack). Data berasal dari data mentah.

Aturan penulisan operasi perpindahan data (sintaks) Instruksi XCHG (exchange) Berfungsi untuk menukarkan isi register dengan register lain atau isi register dengan isi lokasi memori.POP [alamat] POPF .isi alamat offset data dengan label VAR1 diambil dan disimpan di BX AX. XCHG. POP. Tidak berlaku untuk antar lokasi memori. CH . reg XCHG reg. BX DX.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. LEA.isi alamat di reg DI diambil dan disimpan di BX . [alamat] Contoh: XCHG XCHG XCHG AX. [DI] [SI].menukar isi DX dengan isi lokasi memori DI . VAR1 .menukar isi AX dengan BX .isi data di lokasi memori SI diambil dan disimpan di AX LEA reg. variable Instruksi LODS (Load String) . Sintaks: Contoh: LEA LEA LEA BX.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. Sintaks: XCHG reg. [alamat] LEA reg. STOS dan MOVS) MOV meliputi: PUSH. [SI] . [DI] BX.

isi AX dipindah ke lokasi memori DI DAT1 . AX. data doubleword di lokasi SI dipindah ke reg EAX DAT1 . Instruksi ini ditambah dengan B bila memindahkan byte.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. W (word) atau D (double word). data word di lokasi memori SI dipindah ke reg AX . word atau double word dari data segment beralamat offset SI ke ekstra segment beralamat offset DI.data label DAT2 dipindah ke AX (word) DAT3 . Contoh: MOVSB MOVSW MOVSD .isi lokasi memori berisi double word ke lokasi lain .data label DAT1 dipindah ke AL (byte) DAT2 . EAX ke ekstra segment yang alamat offsetnya ditunjukkan oleh isi DI (ES:DI) Contoh: STOSB STOSW STOS .data label DAT3 dipindah ke EAX (doubleword) Instruksi STOS (Store string) Berfungsi memindahkan string pada AL. Contoh: LODSB LODSW LODSD LODS LODS LODS .isi lokasi memori berisi word ke lokasi memori lain .Berfungsi untuk memindahkan data string pada segment data yang alamat offsetnya ditunjukkan oleh isi register SI ke accumulator (AL.isi lokasi memori berisi byte ke lokasi memori lain . data byte di lokasi memori SI dipindah ke reg AL .isi AL dipindah ke lokasi memori DI . AX) akan di-increment (+1) atau decrement (-1).

You're Reading a Free Preview

Mengunduh
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->