OPERASI ARITMATIKA
-
Upload
titin-martini -
Category
Documents
-
view
77 -
download
3
Transcript of OPERASI ARITMATIKA
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 -> ADD reg1, reg2 atau ADD reg, [alamat]
Hasil penjumlahan disimpan di reg1.
Contoh:
ADD AX, BX ;hasilnya disimpan di AX
b. Instruksi INC -> INC reg atau INC [alamat]
Data pada reg atau [alamat] bertambah 1
Contoh:
INC DX ;hasil DX = DX + 1
c. Instruksi ADC -> ADC reg1, reg2 atau ADC reg, [alamat]
Penjumlahan biasa yang hasilnya ditambah dengan bit carry. Hasilnya disimpan di
reg1.
Contoh:
ADC AH, AL ;AH=AH + AL + carry
Pengurangan (Subtraction)
a. Instruksi SUB -> SUB reg1, reg2 atau SUB reg, [alamat]
Hasil pengurangan disimpan di reg1.
Contoh:
SUB CX, BX ;hasilnya disimpan di CX
b. Instruksi DEC -> DEC reg atau DEC [alamat]
Data pada reg atau [alamat] akan bertambah 1
Contoh:
DEC CX ;hasil CX = CX + 1
c. Instruksi SBB -> SBB reg1, reg2 atau SUB [alamat], reg
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 -> CMP reg1, reg2 atau CMP reg, data
Membandingan isi reg1 dengan reg2 atau data.
Contoh:
CMP DL, BL ;bandingkan isi DL dengan BL
Perkalian (Multiplication)
Instruksi MUL -> MUL reg atau MUL [alamat]
Perkalian antara AL (8 bit) atau AX (16 bit) dengan isi reg atau [alamat], hasilnya
disimpan di AX (8 bit) atau DX-AX (16 bit).
Contoh: MUL DL ;isi AL (8 bit) dikali dengan DL, hasil di AX. MUL BX ;isi AX (16 bit) dikali dengan BX, hasil di DX-AX
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 BITOperasi NOT dan NEG -> NOT/NEG reg atau NOT/NEG [alamat]Seluruh bit pada isi register atau [alamat] yang diberi NOT akan di-NOT-kan sedangkan jika diberi
NEG seluruh bit akan menjadi komplemen-2
Contoh:
NOT CL ;isi CL di-NOT-kan
NOT [BP] ;isi di [alamat] BP akan di-NOT-kan
NEG CL ;isi CL di-NEG-kan (komplemen-2)
Operasi AND -> AND reg1, reg2/data atau AND reg, [alamat]
Register 1 akan di-AND-kan dengan register 2 atau data atau [alamat]Contoh:
AND CL, 45h ;isi CL di-AND-kan dengan 45h
AND AX, BX ;isi AX di-AND-kan dengan BX
AND BL,[250] ;isi BL di-AND-kan dengan isi di lokasi 250h
Operasi OR -> OR reg1, reg2/data atau OR reg, [alamat]Register 1 akan di-OR-kan dengan register 2 atau data/[alamat].
Contoh:
OR DH, 25h ;isi DH di-OR-kan dengan 25h
OR CX, BX ;isi CX di-OR-kan dengan BX
Operasi XOR -> XOR reg1, reg2/data atau XOR reg, [alamat]Register 1 akan di-XOR-kan dengan register2 atau data/[alamat]
Contoh:
XOR BL, 25h ;isi BL di-XOR-kan dengan 25h
XOR DX, BX ;isi DX di-XOR-kan dengan BX
Operasi TEST -> TEST reg1, reg2/data atau TEST reg, [alamat]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, CLIsi register di geser ke kiri sebanyak nilai CL.
Contoh:
MOV CL, 2h
SHL 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 CL, 2h SHR 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) -> ROL reg, CL
Isi register di rotasi ke kiri sebanyak CL
Contoh:
ROL AH, 2h ;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 JumpInstruksi 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 bersyaratInstruksi 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 MOVBeberapa instruksi perpindahan data selain memakai MOV meliputi: PUSH, POP, XCHG, LEA,
perpindahan data string (LODS, STOS dan MOVS)
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 AX, BX ;menukar isi AX dengan BX
XCHG DX, [DI] ;menukar isi DX dengan isi lokasi memori DI
XCHG [SI], CH ;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: LEA reg, [alamat]
LEA reg, variable
Contoh:
LEA BX, [DI] ;isi alamat di reg DI diambil dan disimpan di BX LEA BX, VAR1 ;isi alamat offset data dengan label VAR1 diambil dan
disimpan di BX
LEA AX, [SI] ;isi data di lokasi memori SI diambil dan disimpan
di AX
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 ; data byte di lokasi memori SI dipindah ke reg AL
LODSW ; data word di lokasi memori SI dipindah ke reg AX
LODSD ; data doubleword di lokasi SI dipindah ke reg EAX
LODS DAT1 ;data label DAT1 dipindah ke AL (byte)
LODS DAT2 ;data label DAT2 dipindah ke AX (word)
LODS 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 ;isi AL dipindah ke lokasi memori DI
STOSW ;isi AX dipindah ke lokasi memori DI
STOS 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 ;isi lokasi memori berisi byte ke lokasi memori lain
MOVSW ;isi lokasi memori berisi word ke lokasi memori lain
MOVSD ;isi lokasi memori berisi double word ke lokasi lain