Professional Documents
Culture Documents
Instruksi arithmetika meliputi: penambahan (addition), pengurangan (subtraction), pembandingan (comparison), perkalian (multiplication), pembagian (division).
;hasil DX = DX + 1
atau
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.
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
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
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.
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)
atau AND
->
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
->
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
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.
MOV SHL
Rotasi (Rotate)
Instruksi ini digunakan untuk memutar isi bit pada suatu register ke kiri atau ke kanan sesuai perintah yang diberikan.
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
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 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 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
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)