3B
Syntax : JBE Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Melakukan suatu loncatan menuju "tujuan" bila CF=1 atau ZF=1.
"Tujuan" dapat berupa nama label ataupun alamat memory. Pada lompatan
bersyarat ini, besarnya lompatan tidak bisa melebihi -128 dan +127 byte. JBE
identik dengan perintah JNA.
Catatan : JBE dan JNA melakukan operasi pada bilangan tidak bertanda .
Contoh:
CMP AX,BX
JBE KecilSama
Pada perintah diatas, loncatan menuju label "KecilSama" akan dilakukan
bila pada perintah CMP diatasnya register AX lebih kecil atau sama dengan
register BX.
Mnemonic : JC (Jump On Carry)
Tersedia pada : 8088 keatas
Syntax : JC Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Sama dengan JB dan JNAE.
Mnemonic : JCXZ (Jump If CX = 0)
Tersedia pada : 8088 keatas
Syntax : JCXZ Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Melakukan suatu loncatan menuju "tujuan" bila register CX=0.
"Tujuan" dapat berupa nama label ataupun alamat memory. Pada lompatan
bersyarat ini, besarnya lompatan tidak bisa melebihi -128 dan +127 byte.
Contoh:
MOV AH,00 ;
LEA DX,Buffer ; Masukan string dari keyboard
INT 21h ;
MOV CX,Buffer[1] ; CX = banyaknya masukan string
JCXZ Tdk ; bila tidak ada, lompat ke "Tdk"
Mnemonic : JE (Jump Equal)
Tersedia pada : 8088 keatas
Syntax : JE Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Melakukan suatu loncatan menuju "Tujuan" bila ZF=1. "Tujuan"
dapat berupa nama label ataupun alamat memory. Pada lompatan bersyarat ini,
besarnya lompatan tidak bisa melebihi -128 dan +127 byte. JE identik dengan
JZ.
Contoh:
CMP AX,BX
JE Sama
Pada perintah diatas, loncatan menuju label "Sama" akan dilakukan bila
pada perintah CMP diatasnya register AX sama dengan register BX yang
memicu zero flag bernilai 1.
Mnemonic : JG (Jump If Greater)
Tersedia pada : 8088 keatas Syntax : JG Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Melakukan suatu loncatan menuju "tujuan" bila ZF=0 dan SF=OF.
"Tujuan" dapat berupa nama label ataupun alamat memory. Pada lompatan
bersyarat ini, besarnya lompatan tidak bisa melebihi -128 dan +127 byte. JG
identik dengan perintah JNLE.
Catatan : JG dan JNLE melakukan operasi pada bilangan bertanda .
Contoh:
CMP AX,BX
JG Besar
Pada perintah diatas, loncatan menuju label "Besar" akan dilakukan bila
pada perintah CMP diatasnya register AX lebih besar dibandingkan dengan
register BX.
Mnemonic : JGE (Jump If Greater or Equal)
Tersedia pada : 8088 keatas
Syntax : JGE Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Melakukan suatu loncatan menuju "tujuan" bila SF=OF. "Tujuan"
dapat berupa nama label ataupun alamat memory. Pada lompatan bersyarat ini,
besarnya lompatan tidak bisa melebihi -128 dan +127 byte. JGE identik dengan
perintah JNL.
Catatan : JGE dan JNL melakukan operasi pada bilangan bertanda .
Contoh:
CMP AX,BX
JGE BesarSama
Pada perintah diatas, loncatan menuju label "BesarSama" akan dilakukan
bila pada perintah CMP diatasnya register AX lebih besar atau sama dengan
register BX.
Mnemonic : JL (Jump If Less Than)
Tersedia pada : 8088 keatas
Syntax : JL Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Melakukan suatu loncatan menuju "tujuan" bila SF tidak sama
dengan OF. "Tujuan" dapat berupa nama label ataupun alamat memory. Pada
lompatan bersyarat ini, besarnya lompatan tidak bisa melebihi -128 dan +127
byte. JL identik dengan perintah JNGE.
Catatan : JL dan JNGE melakukan operasi pada bilangan bertanda .
Contoh:
CMP AX,BX
JL Kecil
Pada perintah diatas, loncatan menuju label "Kecil" akan dilakukan bila
pada perintah CMP diatasnya register AX lebih kecil dibandingkan dengan
register BX.
Mnemonic : JLE (Jump If Less Than or Equal)
Tersedia pada : 8088 keatas
Syntax : JLE Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Melakukan suatu loncatan menuju "tujuan" bila ZF=1 atau SF
tidak sama dengan OF. "Tujuan" dapat berupa nama label ataupun alamat memory.
Pada lompatan bersyarat ini, besarnya lompatan tidak bisa melebihi -128 dan
+127 byte. JLE identik dengan perintah JNG.
Catatan : JLE dan JNG melakukan operasi pada bilangan bertanda .
Contoh:
CMP AX,BX
JLE KecilSama
Pada perintah diatas, loncatan menuju label "KecilSama" akan dilakukan
bila pada perintah CMP diatasnya register AX lebih kecil atau sama dengan
register BX.
Mnemonic : JMP (Jump)
Tersedia pada : 8088 keatas
(224)
Syntax : JMP Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Melakukan lompatan menuju "Tujuan" yang dapat berupa suatu
label atau alamat memory. Tidak seperti lompatan bersyarat, perintah JMP
dapat melakukan lompatan ke segment lain.
Contoh:
JMP Proses
Mnemonic : JNA (Jump If Not Above)
Tersedia pada : 8088 keatas
Syntax : JNA Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Identik dengan JBE.
Mnemonic : JNAE (Jump If Not Above or Equal)
Tersedia pada : 8088 keatas
Syntax : JNAE Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Identik dengan JB.
Mnemonic : JNB (Jump If Not Bellow)
Tersedia pada : 8088 keatas
Syntax : JNB Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Identik dengan JAE.
Mnemonic : JNBE (Jump If Not Bellow or Equal)
Tersedia pada : 8088 keatas
Syntax : JNBE Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Identik dengan JA.
Mnemonic : JNC (Jump Not Carry)
Tersedia pada : 8088 keatas
Syntax : JNC Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Identik dengan JNB.
Mnemonic : JNE (Jump Not Equal)
Tersedia pada : 8088 keatas
Syntax : JNE Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Melakukan suatu loncatan menuju "tujuan" bila ZF=0. "Tujuan"
dapat berupa nama label ataupun alamat memory. Pada lompatan bersyarat ini,
besarnya lompatan tidak bisa melebihi -128 dan +127 byte. JNE identik dengan
perintah JNZ.
Contoh:
CMP AX,BX
JNE TidakSama
Pada perintah diatas, loncatan menuju label "TidakSama" akan dilakukan
bila pada perintah CMP diatasnya register AX tidak sama dengan register BX.
Mnemonic : JNG (Jump If Not Greater)
Tersedia pada : 8088 keatas
Syntax : JNG Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Identik dengan JLE.
Mnemonic : JNGE (Jump If Not Greater or Equal)
Tersedia pada : 8088 keatas
Syntax : JNGE Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Identik dengan JL.
Mnemonic : JNL (Jump If Not Less Than)
Tersedia pada : 8088 keatas
Syntax : JNL Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Identik dengan JGE.
Mnemonic : JNLE (Jump If Not Less or Equal)
Tersedia pada : 8088 keatas
Syntax : JNLE Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Identik dengan JG.
Mnemonic : JNO (Jump On Not Overflow)
Tersedia pada : 8088 keatas
Syntax : JNO Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Melakukan suatu loncatan menuju "tujuan" bila OF=0. "Tujuan"
dapat berupa nama label ataupun alamat memory. Pada lompatan bersyarat ini,
besarnya lompatan tidak bisa melebihi -128 dan +127 byte.
Catatan : JNO melakukan operasi pada bilangan bertanda .
Mnemonic : JNP (Jump On No Parity)
Tersedia pada : 8088 keatas
Syntax : JNP Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Melakukan suatu loncatan menuju "tujuan" bila PF=0. "Tujuan"
dapat berupa nama label ataupun alamat memory. Pada lompatan bersyarat ini,
besarnya lompatan tidak bisa melebihi -128 dan +127 byte. JNP identik dengan
perintah JPO.
Catatan : JNP dan JPO melakukan operasi pada bilangan tidak bertanda .
Mnemonic : JNS (Jump On No Sign)
Tersedia pada : 8088 keatas
Syntax : JNS Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Melakukan suatu loncatan menuju "tujuan" bila SF=0. "Tujuan"
dapat berupa nama label ataupun alamat memory. Pada lompatan bersyarat ini,
besarnya lompatan tidak bisa melebihi -128 dan +127 byte.
Catatan : JNS melakukan operasi pada bilangan bertanda .
Mnemonic : JNZ (Jump On Not Zero)
Tersedia pada : 8088 keatas
Syntax : JNZ Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Identik dengan JNE.
Mnemonic : JO (Jump On Overflow)
Tersedia pada : 8088 keatas
Syntax : JO Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Melakukan suatu loncatan menuju "tujuan" bila OF=1. "Tujuan"
dapat berupa nama label ataupun alamat memory. Pada lompatan bersyarat ini,
besarnya lompatan tidak bisa melebihi -128 dan +127 byte.
Catatan : JO melakukan operasi pada bilangan bertanda .
Mnemonic : JP (Jump On Parity)
Tersedia pada : 8088 keatas
Syntax : JP Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Melakukan suatu loncatan menuju "tujuan" bila PF=1. "Tujuan"
dapat berupa nama label ataupun alamat memory. Pada lompatan bersyarat ini,
besarnya lompatan tidak bisa melebihi -128 dan +127 byte. JP identik dengan
perintah JPE.
Mnemonic : JPE (Jump On Parity Even)
Tersedia pada : 8088 keatas
Syntax : JPE Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Identik dengan JP.
Mnemonic : JPO (Jump On Parity Odd)
Tersedia pada : 8088 keatas
Syntax : JPO Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Identik dengan JNP.
Mnemonic : JS (Jump On Sign)
Tersedia pada : 8088 keatas
Syntax : JS Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Melakukan suatu loncatan menuju "tujuan" bila SF=1. "Tujuan"
dapat berupa nama label ataupun alamat memory. Pada lompatan bersyarat ini,
besarnya lompatan tidak bisa melebihi -128 dan +127 byte.
Catatan : JS melakukan operasi pada bilangan bertanda .
Mnemonic : JZ (Jump On Zero)
Tersedia pada : 8088 keatas
Syntax : JZ Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Identik dengan JE.
Mnemonic : LAHF (Load Flags Into AH Register)
Tersedia pada : 8088 keatas
Pengaruh flag : Tidak Ada
Syntax : LAHF
Fungsi : Untuk menyalinkan CF, PF, AF, ZF dan SF yang terletak pada
bit ke 0, 2, 4, 6 dan 7 dari flags register menuju register AH pada bit yang
sesuai(0, 2, 4, 6 dan 7).
Contoh:
Dengan fungsi ini, kita bisa menyimpan 8 bit rendah dari flags register
untuk menghindari perubahan akibat dari suatu proses, seperti:
LAHF ; Simpan flags pada AH
PUSH AX ; Nilai AH disimpan ke stack
+--------+
| Proses |
+--------+
POP AX ; Keluarkan AH dari stack
SAHF ; Masukkan ke flag register
Mnemonic : LDS (Load Pointer Using DS Register)
Tersedia pada : 8088 keatas
Syntax : LDS Operand,Mem32
Pengaruh flag : Tidak Ada
Fungsi : Untuk menyimpan Double Word dari memory. 16 bit rendah akan
disimpan pada "Operand" sedang 16 bit tingginya akan disimpan pada register
DS. "Mem32" mencatat lokasi dari suatu memory yang didiartikan dengan tipe
Double Word(DD).
Contoh:
TData: JMP Proses
Tabel DD ?,?,?
Proses:
LDS BX,Tabel
Sesudah intruksi diatas dijalankan, maka pasangan register DS:BX akan
mencatat alamat dari variabel "Tabel".
Mnemonic : LEA (Load Effective Address)
Tersedia pada : 8088 keatas
Syntax : LEA Operand,Mem16
Pengaruh flag : Tidak Ada
Fungsi : Untuk memperoleh alamat efektif atau offset dari "Mem16"
yang mana "Operand" yaitu suatu register 16 bit. Perintah LEA hampir sama
dengan perintah OFFSET yang juga dipakai untuk memperoleh offset dari suatu
memory. Perintah LEA lebih fleksibel untuk dipakai dibandingkan dengan
perintah OFFSET sebab dengan LEA pelajar bisa memberi tambahan nilai pada
"Mem16".
Contoh:
TData :JMP Proses
Kal '0123456789abcd'
Proses:
MOV SI,10
LEA BX,Kal[SI]
Dengan perintah diatas, register BX akan mencatat offset ke 10 dari Kal.
Mnemonic : LES (Load Pointer Using ES Register)
Tersedia pada : 8088 keatas
Syntax : LES Operand,Mem32
Pengaruh flag : Tidak Ada
Fungsi : Untuk menyimpan Double Word dari memory. 16 bit rendah akan
disimpan pada "Operand" sedang 16 bit tingginya akan disimpan pada register
ES. "Mem32" mencatat lokasi dari suatu memory yang didiartikan dengan tipe
Double Word(DD).
Contoh:
TData: JMP Proses
Tabel DD ?,?,?
Proses:
LES BX,Tabel
Sesudah intruksi diatas dijalankan, maka pasangan register ES:BX akan
mencatat alamat dari variabel "Tabel".
Mnemonic : LOCK (Lock The BUS)
Tersedia pada : 8088 keatas
Syntax : LOCK Operand
Pengaruh flag : Tidak Ada
Fungsi : Perintah ini dipakai terutama pada komputer yang memiliki
procesor lebih dari satu. Perintah LOCK mengunci suatu area pada pemakaian
oleh mikroprocesor lainnya.
Catatan: Perintah XCHG selalu mengaktifkan LOCK.
Mnemonic : LODSB (Load A Byte From String Into AL)
Tersedia pada : 8088 keatas
Syntax : LODSB
Pengaruh flag : Tidak Ada
Fungsi : Untuk menyalin data 1 byte dari alamat DS:SI ke register AL.
Mnemonic : LOOP
Tersedia pada : 8088 keatas
Syntax : LOOP Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Untuk melakukan suatu proses yang berulang (Looping) dengan
CX sebagai counternya. Perintah LOOP akan mengurangkan CX dengan 1 lalu
dilihat apakah CX sudah mencapai nol. Proses looping akan selesai bila
register CX sudah mencapai nol. Oleh sebab inilah maka bila pelajar menjadikan
CX=0 pada saat pertama kali, pelajar akan memperoleh suatu pengulangan yang
terbanyak sebab pengurangan 0-1=-1(FFFF).
Catatan: LOOP hanya dapat melakukan lompatan menuju "Tujuan" bila jaraknya
tidak lebih dari -128 dan +127 byte.
Contoh:
XOR CX,CX ; Melakukan pengulangan
Ulang: ; sebanyak FFFF kali
LOOP Ulang ;
Mnemonic : LOOPE ( Loop While Equal)
Tersedia pada : 8088 keatas
Syntax : LOOPE Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Untuk melakukan pengulangan selama register CX tidak sama
dengan 0 dan ZF=1. LOOPE hanya dapat melakukan lompatan menuju "Tujuan" bila
jaraknya tidak lebih dari -128 dan +127 byte. LOOPE identik dengan LOOPZ.
Mnemonic : LOOPNE (Loop While Not Equal)
Tersedia pada : 8088 keatas
Syntax : LOOPNE Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Untuk melakukan pengulangan selama register CX tidak sama
dengan 0 dan ZF=0. LOOPNE hanya dapat melakukan lompatan menuju "Tujuan" bila
jaraknya tidak lebih dari -128 dan +127 byte. LOOPE identik dengan LOOPNZ.
Mnemonic : LOOPNZ (Loop While Not Zero)
Tersedia pada : 8088 keatas
Syntax : LOOPNZ Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Identik dengan LOOPNE.
Mnemonic : LOOPZ
Tersedia pada : 8088 keatas
Syntax : LOOPZ Tujuan
Pengaruh flag : Tidak Ada
Fungsi : Identik dengan LOOPE.
Mnemonic : MOV (Move)
Tersedia pada : 8088 keatas
Syntax : MOV Tujuan,Sumber
Pengaruh flag : Tidak Ada
Fungsi : Untuk menyalinkan isi "Sumber" ke "Tujuan". Antara "Sumber"
dan "Tujuan" harus memiliki tipe data yang sama, seperti AL dan BL, AX dan
BX. Pada perintah MOV ini harus kita perhatikan bahwa:
- Segment register tidak bisa langsung diisi nilainya, seperti:
MOV ES,0B800h
Untuk masalah seperti ini kita bisa memakai register general purpose
sebagai perantara, seperti:
MOV AX,0B800h
MOV ES,AX
- Register CS sebaiknya tidak dipakai sebagai "Tujuan" sebab ini akan
mengacaukan program kita .
- menyalinkan data antar segment register tidak bisa dipakai , seperti:
MOV ES,DS
Untuk masalah seperti ini kita bisa memakai register general purpose atau
stack sebagai perantara, seperti:
MOV AX,DS
MOV ES,AX
atau:
PUSH DS
POP ES
- menyalinkan data antar lokasi memory, seperti:
MOV A,B
Untuk masalah seperti ini kita bisa memakai suatu register sebagai
perantara, seperti:
MOV AX,B
MOV A,AX
Mnemonic : MOVSW (Move String Byte By Byte)
Tersedia pada : 8088 keatas
Syntax : MOVSB
Pengaruh flag : Tidak Ada
Fungsi : Untuk menyalin data 1 byte dari alamat DS:SI ke alamat ES:DI.
Bila DF=0(CLD) maka sesudah intruksi MOVSB dijalankan, register SI dan DI akan
ditambah dengan 1 sebaliknya bila DF=1(STD) maka register SI dan DI akan
dikurang dengan 1.
Mnemonic : MOVSW (Move String Word By Word)
Tersedia pada : 8088 keatas
Syntax : MOVSW
Pengaruh flag : Tidak Ada
Fungsi : Untuk menyalin data 1 Word dari alamat DS:SI ke alamat ES:DI.
Bila DF=0(CLD) maka sesudah intruksi MOVSW dijalankan, register SI dan DI akan
ditambah dengan 2 sebaliknya bila DF=1(STD) maka register SI dan DI akan
dikurang dengan 2.
Mnemonic : MUL (Multiply)
Tersedia pada : 8088 keatas
Syntax : MUL Sumber
Pengaruh flag : OF, CF
Fungsi : Bila "Sumber" bertipe 8 bit maka akan dilakukan perkalian
antara "Sumber" dengan AL. Hasilnya disimpan pada register AX. Bila "Sumber"
bertipe 16 bit maka akan dilakukan perkalian antara "Sumber" dengan AX.
Hasilnya disimpan pada pasangan register DX:AX.
Contoh:
MUL BH ; AX = BH * AL
MUL BX ; DX:AX = BX * AX
(236)
Mnemonic : NEG (Negate)
Tersedia pada : 8088 keatas
Syntax : NEG Operand
Pengaruh flag : OF, SF, ZF, AF, PF, CF
Fungsi : Untuk mengubah "Operand" menjadi negatif.
Contoh:
MOV BH,1 ; BH = 01h
NEG BH ; BH = FFh
Mnemonic : NOT
Tersedia pada : 8088 keatas
Syntax : NOT Operand
Pengaruh flag : Tidak Ada
Fungsi : Membalikkan bit pada operand. bila bit operand bernilai 0
akan dijadikan 1 sebaliknya bila 1 akan dijadikan 0.
Contoh:
MOV AL,10010011b
NOT AL ; AL = 01101100b
Mnemonic : OR
Tersedia pada : 8088 keatas
Syntax : OR Tujuan,Sumber
Pengaruh flag : OF, SF, ZF, PF, CF
Fungsi : Melakukan logika OR antara "Tujuan" dan "Sumber". Hasil dari
operasi OR diletakkan pada "Tujuan". Instruksi OR biasanya dipakai untuk
menjadikan suatu bit menjadi 1.
Contoh:
OR AL,00000001b ; Jadikan bit ke 0 dari AL menjadi 1
Mnemonic : OUT (Output to Port)
Tersedia pada : 8088 keatas
Syntax : OUT NoPort,Operand
Pengaruh flag : Tidak ada
Fungsi : Untuk memasukkan 1 byte atau 1 word dari "operand" ke
"NoPort" sesuai dengan tipe data "operand". bila "Operand" yaitu register
AL maka akan dikirimkan data pada port sebanyak 1 byte, bila "operand"
yaitu register AX maka akan dikirimkan data pada port sebanyak 1 word.
"NoPort" bisa langsung diberi nilai bila nomor port dibawah 255. Bila nomor
port melebihi 255 maka "NoPort" harus berupa register DX yang mencatat nomor
port itu .
Mnemonic : OUTS (Output String To Port)
Tersedia pada : 8088 keatas
Syntax : OUTS NoPort,Operand
Pengaruh flag : Tidak ada
Fungsi : Untuk mengirimkan data dari "operand" ke "NoPort" yang
dicatat oleh register DX sebanyak 1 byte atau 1 word, sesuai dengan tipe
"operand". Jadi "operand" hanya berfungsi sebagai penunjuk besarnya data yang
akan dikirimkan menuju port. Data yang akan dikirimkan menuju port disimpan
pada lokasi ES:SI.
bila Direction flag bernilai 0(dengan CLD) maka sesudah intruksi OUTS
dijalankan register SI akan ditambah secara otomatis, sebaliknya bila
Direction flag bernilai 1(dengan STD) maka register SI akan dikurang secara
otomatis. kita bisa memakai intruksi pengulangan pada string ditambah
dengan perintah OUTS ini.
Mnemonic : OUTSB (Output String Byte To Port)
Tersedia pada : 8088 keatas
Syntax : OUTSB
Pengaruh flag : Tidak ada
Fungsi : Untuk memasukkan data dari lokasi DS:SI ke nomor port yang
dicatat oleh register DX sebanyak 1 byte.
bila Direction flag bernilai 0(dengan CLD) maka sesudah intruksi OUTSB
dijalankan register SI akan ditambah dengan 1 secara otomatis, sebaliknya bila
Direction flag bernilai 1(dengan STD) maka register SI akan dikurang dengan 1
secara otomatis. kita bisa memakai intruksi pengulangan pada string
ditambah dengan perintah OUTSB ini.
Mnemonic : OUTSW (Output String Wyte To Port)
Tersedia pada : 8088 keatas
Syntax : OUTSW
Pengaruh flag : Tidak ada
Fungsi : Untuk memasukkan data dari lokasi DS:SI ke nomor port yang
dicatat oleh register DX sebanyak 1 word.
bila Direction flag bernilai 0(dengan CLD) maka sesudah intruksi OUTSW
dijalankan register SI akan ditambah dengan 2 secara otomatis, sebaliknya bila
Direction flag bernilai 1(dengan STD) maka register SI akan dikurang dengan 2
secara otomatis. kita bisa memakai intruksi pengulangan pada string
ditambah dengan perintah OUTSW ini.
Mnemonic : POP (Pop A Word From Stack)
Tersedia pada : 8088 keatas
Syntax : POP Tujuan
Pengaruh flag : Tidak ada
Fungsi : Untuk mengambil data 1 word dari stack(SS:SP) dan disimpan
pada "Tujuan". Sesudah intruksi POP dijalankan register SP akan ditambah
dengan 2.
Contoh:
PUSH DS
POP ES
Mnemonic : POPA (Pop All General Purpose Registers)
Tersedia pada : 8088 keatas
Syntax : POPA
Pengaruh flag : Tidak ada
Fungsi : Untuk mengambil 8 word dari stack menuju register berturutturut DI, SI, BP, SP, BX, DX, CX dan AX. Dengan PUSHA program kita akan
berjalan lebih cepat dan efesian dibandingkan bila kita menyimpannya dengan
cara:
POP DI
POP SI
POP BP
POP SP
POP BX
POP DX
POP CX
POP AX
Mnemonic : POPF (Pop Flags Off Stack)
Tersedia pada : 8088 keatas
Syntax : POPF
Pengaruh flag : OF, DF, IF, TF, SF, ZF, AF, PF, CF
Fungsi : Untuk mengambil 1 word dari stack ke flags registers. Sesudah
intruksi POPF dijalankan register SP akan ditambah dengan 2.
Mnemonic : PUSH (Push Operand Onto Stack)
Tersedia pada : 8088 keatas
Syntax : PUSH Sumber
Pengaruh flag : Tidak ada
Fungsi : Untuk menyimpan data 1 word dari "Sumber" ke stack(SS:SP).
"Sumber" yaitu operand yang bertipe 16 bit. Sesudah intruksi PUSH
dijalankan register SP akan dikurang dengan 2.
Mnemonic : PUSHF (Push Flags Onto Stack)
Tersedia pada : 8088 keatas
Syntax : PUSHF
Pengaruh flag : Tidak ada
Fungsi : Untuk menyimpan flags registers ke stack. Intruksi ini
yaitu kebalikan dari intruksi POPF. Sesudah intruksi PUSHF dijalankan
register SP akan dikurang dengan 2.
Mnemonic : RCL (Rotate Through Carry Left)
Tersedia pada : 8088 keatas
Syntax : RCL Operand,Reg
Pengaruh flag : OF, CF
Fungsi : Untuk memutar "Operand" sebanyak "Reg" kali ke kiri melalui
CF. Bit yang tergeser keluar dari kiri akan dimasukkan pada CF dan nilai CF
akan dimasukkan pada bit terkanan dari "Operand".
+----+ +----------------+
| CF |<--+ Operand |<-+
+-+--+ +----------------+ |
+--------------------------+
Pada mikroprosesor 8088 "Reg" haruslah berupa register CL atau CX bila
perputaran yang dilakukan pada "Operand" lebih dari 1.
Contoh:
MOV BL,00100110b ; contoh CF=1
RCL BL,1 ; BL = 01001101b CF=0
Mnemonic : RCR (Rotate through Carry Right)
Tersedia pada : 8088 keatas
Syntax : RCR Operand,Reg
Pengaruh flag : OF, CF
Fungsi : Untuk memutar "Operand" sebanyak "Reg" kali ke kanan melalui
CF. Bit yang tergeser keluar dari kanan akan dimasukkan pada CF dan nilai CF
akan dimasukkan pada bit terkiri dari "Operand".
+----------------+ +----+
+>| Operand +--->| CF |
| +----------------+ +--+-+
+--------------------------+
Pada mikroprosesor 8088 "Reg" haruslah berupa register CL atau CX bila
perputaran yang dilakukan pada "Operand" lebih dari 1.
Contoh:
MOV BL,00100110b ; contoh CF=1
RCR BL,1 ; BL = 10010011b CF=0
Mnemonic : REP (Repeat)
Tersedia pada : 8088 keatas
Syntax : REP Instruksi
Pengaruh flag : Tidak ada
Fungsi : Melakukan "intruksi" sebanyak CX kali. Intruksi REP biasanya
diikuti oleh Intruksi yang berkaitan dengan operasi pada string.
Mnemonic : REPE (Repeat While Equal)
Tersedia pada : 8088 keatas
Syntax : REPE Intruksi
Pengaruh flag : Tidak ada
Fungsi : Melakukan "intruksi" sebanyak CX kali atau sampai zero flag
bernilai 1. Intruksi REPE biasanya diikuti oleh Intruksi yang berkaitan
dengan operasi pada string.
Contoh:
MOV CX,200
REPE CMPS String1,String2
Intruksi diatas akan membandingkan string1 dengan string2 sebanyak 200
kali atau sampai ditemukan adanya ketidaksamaan antara String1 dan String2
yang membuat zero flag bernilai 1.
Mnemonic : REPNE (Repeat While Not Equal)
Tersedia pada : 8088 keatas
Syntax : REPNE Instruksi
Pengaruh flag : Tidak ada
Fungsi : Melakukan "intruksi" sebanyak CX kali atau sampai zero flag
bernilai 0. Intruksi REPNE biasanya diikuti oleh Intruksi yang berkaitan
dengan operasi pada string.
Contoh:
MOV CX,200
REPNE CMPS String1,String2
Intruksi diatas akan membandingkan string1 dengan string2 sebanyak 200
kali atau sampai ditemukan adanya kesamaan antara String1 dan String2 yang
membuat zero flag bernilai 0.
Mnemonic : REPNZ (Repeat While Not Zero)
Tersedia pada : 8088 keatas
Syntax : REPNZ Instruksi
Pengaruh flag : Tidak ada
Fungsi : Identik dengan REPNE.
Mnemonic : REPZ (Repeat While Zero)
Tersedia pada : 8088 keatas
Syntax : REPZ Instruksi
Pengaruh flag : Tidak ada
Fungsi : Identik dengan REPE.
Mnemonic : RET (Return From Procedure)
Tersedia pada : 8088 keatas
Syntax : RET [Size]
Pengaruh flag : Tidak ada
Fungsi : RET akan mengambil alamat pada stack untuk melakukan lompatan
pada alamat itu . RET biasanya diletakkan pada akhir dari suatu procedure
yang dipanggil dengan CALL (Lihat CALL). Bila pada perintah RET diberi
parameter, maka paramter itu akan dipakai sebagai angka tambahan dalam
mengambil data pada stack.
Contoh:
RET 2
Mnemonic : ROL (Rotate Left)
Tersedia pada : 8088 keatas
Syntax : ROL Operand,Reg
Pengaruh flag : OF, CF
Fungsi : Untuk memutar "Operand" sebanyak "Reg" kali ke kiri. Bit yang
tergeser keluar dari kiri akan dimasukkan pada CF dan pada bit terkanan dari
"Operand".
+----+ +----------------+
| CF |<--+-+ Operand |<-+
+----+ | +----------------+ |
+---------------------+
Pada mikroprosesor 8088 "Reg" haruslah berupa register CL atau CX bila
perputaran yang dilakukan pada "Operand" lebih dari 1.
Contoh:
MOV BL,00100110b ; contoh CF=1
ROL BL,1 ; BL = 01001100b CF=0
Mnemonic : ROR (Rotate Right)
Tersedia pada : 8088 keatas
Syntax : ROR Operand,Reg
Pengaruh flag : OF, CF
Fungsi : Untuk memutar "Operand" sebanyak "Reg" kali ke kanan. Bit
yang tergeser keluar dari kanan akan dimasukkan pada CF dan pada bit terkiri
dari "Operand".
+----------------+ +----+
+>| Operand +-+-->| CF |
| +----------------+ | +----+
+--------------------+
Pada mikroprosesor 8088 "Reg" haruslah berupa register CL atau CX bila
perputaran yang dilakukan pada "Operand" lebih dari 1.
Contoh:
MOV BL,00100110b ; contoh CF=1
ROR BL,1 ; BL = 00010011b CF=0
Mnemonic : SAHF (Store AH into Flag Register)
Tersedia pada : 8088 keatas
Syntax : SAHF
Pengaruh flag : SF, ZF, AF, PF, CF
Fungsi : Untuk menyalinkan nilai AH pada 8 bit rendah dari flag
register, yaitu: CF, PF, AF, ZF dan SF. Intruksi ini yaitu kebalikan dari
Intruksi LAHF.
Mnemonic : SAL (Arithmatic Shift Left)
Tersedia pada : 8088 keatas
Syntax : SAL Operand,Reg
Pengaruh flag : OF, SF, ZF, PF, CF
Fungsi : Untuk menggerser "Operand" sebanyak "Reg" kali ke kiri(Lihat
SHL).
Mnemonic : SBB (Substract With Carry)
Tersedia pada : 8088 keatas
Syntax : SBB Tujuan,Sumber
Pengaruh flag : OF, SF, ZF, AF, PF, CF
Fungsi : Untuk mengurangkan "Sumber" dengan "Tujuan" dan Carry Flag
(1=on, 0=off), hasilnya diletakkan pada "Tujuan" (Tujuan=Tujuan-Sumber-CF).
Mnemonic : SCASB (Scan String For Byte)
Tersedia pada : 8088 keatas
Syntax : SCASB
Pengaruh flag : OF, SF, ZF, AF, PF, CF
Fungsi : Untuk membandingkan isi register AL dengan data pada alamat
ES:DI.
Mnemonic : SCASW (Scan String for Word)
Tersedia pada : 8088 keatas
Syntax : SCASW
Pengaruh flag : OF, SF, ZF, AF, PF, CF
Fungsi : Untuk membandingkan isi register AX dengan data pada alamat
ES:DI.
Mnemonic : SHL (Shift Left)
Tersedia pada : 8088 keatas
Pengaruh flag : OF, SF, ZF, PF, CF
Syntax : SHL Operand,Reg
Fungsi : Untuk menggeser geser bit dari "operand" sebanyak "Reg" kali ke
kiri. Bila pergeseran yang dilakukan lebih dari 1 kali maka "Reg" harus berupa
regisrer CL atau CX.
Contoh:
MOV BL,00000001b
SHL BL,1 ; BL=00000010b
Dengan menggeser geser n kali kekiri yaitu sama bila bilangan itu dikali
dengan 2 pangkat n.
Mnemonic : SHR (Shift Right)
Tersedia pada : 8088 keatas
Syntax : SHR Operand,Reg
Pengaruh flag : OF, SF, ZF, PF, CF
Fungsi : Untuk menggeser geser bit dari "operand" sebanyak "Reg" kali ke
kanan. Bila pergeseran yang dilakukan lebih dari 1 kali maka "Reg" harus
berupa regisrer CL atau CX.
Contoh:
MOV BL,00000100b
SHR BL,1 ; BL=00000010b
Dengan menggeser geser n kali kekanan yaitu sama bila bilangan itu
dibagi dengan 2 pangkat n.
Mnemonic : STC (Set Carry Flag)
Tersedia pada : 8088 keatas
Syntax : STC
Pengaruh flag : CF
Fungsi : Untuk menjadikan Carry flag menjadi 1.
Mnemonic : STD (Set Direction Flag)
Tersedia pada : 8088 keatas
Syntax : STD
Pengaruh flag : DF
Fungsi : Untuk menjadikan Direction flag menjadi 1. Intruksi ini
yaitu kebalikan dari intruksi CLD (lihat CLD).
Mnemonic : STI (Set Interrupt Flag)
Tersedia pada : 8088 keatas
Syntax : STI
Pengaruh flag : IF
Fungsi : Untuk membuat Interrupt flag menjadi 1 agar interupsi dapat
terjadi lagi. Intruksi ini yaitu kebalikan dari intruksi CLI (lihat CLI).
Mnemonic : STOSB (Store AL )
Tersedia pada : 8088 keatas
Syntax : STOSB
Pengaruh flag : Tidak ada
Fungsi : Untuk menyalinkan isi register AL pada alamat ES:DI. bila
Direction flag bernilai 0(dengan CLD) maka sesudah intruksi STOSB dijalankan
register DI akan ditambah dengan 1 secara otomatis, sebaliknya bila Direction
flag bernilai 1(dengan STD) maka register DI akan dikurang dengan 1 secara
otomatis. kita bisa memakai intruksi pengulangan pada string ditambah
dengan perintah STOSB ini.
Mnemonic : STOSW (Store Word in AX at String)
Tersedia pada : 8088 keatas
Syntax : STOSW
Pengaruh flag : Tidak ada
Fungsi : Untuk menyalinkan isi register AX pada alamat ES:DI. bila
Direction flag bernilai 0(dengan CLD) maka sesudah intruksi STOSW dijalankan
register DI akan ditambah dengan 2 secara otomatis, sebaliknya bila Direction
flag bernilai 1(dengan STD) maka register DI akan dikurang dengan 2 secara
otomatis. kita bisa memakai intruksi pengulangan pada string ditambah
dengan perintah STOSW ini.
Mnemonic : SUB (Substract)
Tersedia pada : 8088 keatas
Syntax : SUB Tujuan,Sumber
Pengaruh flag : OF, SF, ZF, AF, PF, CF
Fungsi : Untuk mengurangkan "Tujuan" dengan "Sumber". Hasil
pengurangan akan disimpan pada "Tujuan".
Contoh:
SUB BX,BX ; BX=0
Mnemonic : TEST
Tersedia pada : 8088 keatas
Syntax : TEST Operand1,Operand2
Pengaruh flag : OF, SF, ZF, PF, CF
Fungsi : Untuk melakukan operasi AND antara "Operand1" dan "Operand2".
Hasil dari operasi AND hanya mempengaruhi flag register saja dan tidak
mempengaruhi nilai "operand1" atau "operand2".
Mnemonic : WAIT
Tersedia pada : 8088 keatas
Syntax : WAIT
Pengaruh flag : Tidak ada
Fungsi : Untuk menghentikan CPU sampai adanya interupsi dari luar.
Intruksi ini bisanya dipakai untuk bekerja sama dengan Coprosesor.
Mnemonic : XCHG (Exchange)
Tersedia pada : 8088 keatas
Syntax : XCHG Operand1,Operand2
Pengaruh flag : Tidak ada
Fungsi : Untuk menukar "Operand1" dengan "Operand2".
Contoh:
Potongan program di bawah akan mengatur agar AX > BX
CMP AX,BX
JAE Selesai
XCHG AX,BX
Selesai :
..........
Mnemonic : XLAT (Translate)
Tersedia pada : 8088 keatas
Syntax : XLAT
Pengaruh flag : Tidak ada
Fungsi : Untuk menyalinkan isi dari alamat DS:[BX] ditambah dengan AL
ke AL (AL=DS:[BX]+AL).
Mnemonic : XOR
Tersedia pada : 8088 keatas
Syntax : XOR Tujuan,Sumber
Pengaruh flag : Tidak ada
Fungsi : Melakukan logika XOR antara "Tujuan" dan "Sumber". Hasil dari
operasi XOR diletakkan pada "Tujuan". Fungsi XOR yg paling populer yaitu
untuk menolkan suatu register. Dengan logika XOR program akan berjalan lebih
cepat dan efisien.
Contoh:
XOR AX,AX ; AX akan bernilai nol sesudah perintah ini
DAFTAR INTERRUPT PILIHAN
INTERRUPT 05h
Print Screen
Fungsi : Mencetak seluruh isi layar ke printer.
Register Input : Tidak Ada. Register Output : Tidak Ada.
INTERRUPT 09h
Keyboard
Fungsi : Interupsi 09 yaitu HardWare interupsi dari keyboard. Setiap
penekanan tombol keyboard akan membangkitkan interupsi 09. Handler dari
interupsi 09 lalu akan mengambil data dari tombol apa yang ditekan dari
Port 60h yang berisi kode scan tombol. Dari kode scan ini lalu akan
diterjemahkan dalam kode ASCII atau Extended dan disimpan pada keyboard buffer
untuk lalu dipakai oleh interupsi lain.
INTERRUPT 10h - Service 00h
Set Video Mode
Fungsi : Mengubah Mode Video.
Register Input : Register Output : Tidak Ada.
AH = 00h
AL = nomor mode
Penjelasan : Setiap dilakukan pergantian mode akan menimbulkan efek CLS,
kecuali nomor mode dijumlahkan dengan 128 atau bit ke-7 pada AL diset 1.
INTERRUPT 10h - Service 01h
Set Cursor Size
Fungsi : Merubah ukuran kursor pada mode teks.
Register Input : Register Output : Tidak Ada.
AH = 01h
CH = awal garis bentuk kursor
CL = akhir garis bentuk kursor
INTERRUPT 10h - Service 02h
Set Cursor Position
Fungsi : Meletakkan kursor pada posisi tertentu.
Register Input : Register Output : Tidak Ada.
AH = 02h
BH = nomor halaman tampilan
DH = nomor baris (dimulai 00)
DL = nomor kolom (dimulai 00)
INTERRUPT 10h - Service 03h
Cursor Information
Fungsi : Memperoleh Informasi posisi kursor dan ukurannya.
Register Input : Register Output :
AH = 03h CH = awal garis bentuk kursor
BH = nomor halaman tampilan CL = akhir garis bentuk kursor
DH = nomor baris
DL = nomor kolom
Penjelasan : Setiap halaman tampilan memiliki kursornya sendiri- sendiri.
(251)
INTERRUPT 10h - Service 05h
Select Active Page
Fungsi : Merubah halaman tampilan aktif.
Register Input : Register Output : Tidak Ada.
AH = 05h
AL = nomor halaman tampilan
INTERRUPT 10h - Service 06h
Scroll Up Window
Fungsi : Menggulung jendela ke atas.
Register Input : Register Output : Tidak Ada.
AH = 06h
AL = jumlah baris untuk digulung
BH = atribut untuk baris kosong
CH,CL = koordinat kiri atas jendela
DH,DL = koordinat kanan bawah jendela
Penjelasan : AL diisi 00 akan mengosongkan keseluruhan jendela.
INTERRUPT 10h - Service 07h
Scroll Down Window
Fungsi : Menggulung jendela ke bawah.
Register Input : Register Output : Tidak Ada.
AH = 07h
AL = jumlah baris untuk digulung
BH = atribut untuk baris kosong
CH,CL = koordinat kiri atas jendela
DH,DL = koordinat kanan bawah jendela
Penjelasan : AL diisi 00 akan mengosongkan keseluruhan jendela.
INTERRUPT 10h - Service 09h
Write Character And Attribute At Cursor Position
Fungsi : Mencetak huruf dan atribut pada posisi kursor.
Register Input : Register Output : Tidak Ada.
AH = 09h
AL = kode ASCII huruf
BH = nomor halaman
BL = atribut huruf
CX = jumlah pengulangan pencetakan
Penjelasan : huruf kontrol akan dicetak sebagai huruf biasa.
INTERRUPT 10h - Service 0Ah
Write Character At Cursor Position
Fungsi : Mencetak huruf pada posisi kursor.
Register Input : Register Output : Tidak Ada.
AH = 0Ah
AL = kode ASCII huruf
BH = nomor halaman
CX = jumlah pengulangan pencetakan
Penjelasan : huruf kontrol akan dicetak sebagai huruf biasa, atribut
yang dipakai akan sama dengan atribut yang lama.
INTERRUPT 10h - Service 0Eh
Teletype Output
Fungsi : Output huruf sederhana.
Register Input : Register Output : Tidak Ada.
AH = 0Eh
AL = kode ASCII huruf
BH = nomor halaman
Penjelasan : huruf kontrol berpengaruh sesuai fungsinya. Pada ROM BIOS
dengan tanggal antara 24/4/81 ke atas biasanya register BH tidak berfungsi
sebab setiap output akan dicetak ke halaman aktif.
INTERRUPT 10h - Service 0Fh
Get Current Video Mode
Fungsi : memperoleh mode video aktif.
Register Input : Register Output :
AH = 0Fh AL = mode video (gambar kode 5.1.)
AH = jumlah huruf per kolom
BH = nomor halaman tampilan
Penjelasan : bila mode video diset dengan bit 7 on, maka AL yang diperoleh juga
akan berisi bit 7 on.
Konflik : Driver tampilan VUIMAGE
INTERRUPT 10h - Service 11h,Subservice 00h
Load User Specific Character
Fungsi : Membuat huruf ASCII baru.
ada pada : Sistem dilengkapi tampilan EGA, VGA, dan MCGA.
Register Input : Register Output : Tidak Ada
AH = 11h
AL = 00h
CX = jumlah huruf akan diubah
DX = nomor huruf mulai diubah
BL = nomor blok untuk diubah
BH = jumlah byte per huruf
ES:BP = buffer bentuk huruf
INTERRUPT 10h - Service 11h,Subservice 03h
Set Block Specifier
Fungsi : memberi identitas tabel huruf untuk ditampilkan.
ada pada : Sistem dilengkapi tampilan EGA, VGA, dan MCGA.
Register Input : Register Output : Tidak Ada
AH = 11h
AL = 03h
BL = penkita tabel huruf
INTERRUPT 10h - Service 12h,Subservice 10h
Get EGA Information
Fungsi : Memperoleh huruf istik sistem video.
ada pada : Sistem dilengkapi tampilan EGA ke atas.
Register Input : Register Output :
AH = 12h BH = 00h monitor warna
BL = 10h 01h monitor mono
BL = 00h Card 64 KB
01h Card 128 KB
02h Card 192 KB
03h Card 256 KB
INTERRUPT 10h - Service 13h
Write String
Fungsi : Mencetak string ke Layar
ada pada : Mesin 80286 ke atas dengan tampilan EGA ke atas.
Register Input : Register Output : Tidak Ada.
AH = 13h
AL = 00h
BH = nomor halaman
BL = atribut untuk string
CX = jumlah huruf pada string
DH,DL = koordinat untuk memulai pencetakan
ES:BP = alamat string yang akan dicetak
Penjelasan : Memperlakukan huruf kontrol sesuai fungsinya.
INTERRUPT 10h - Service 1Ah,Subservice 00h
Get Display Combination
Fungsi : Memperoleh informasi tampilan
ada pada : Sistem dengan tampilan VGA dan MCGA.
Register Input : Register Output :
AH = 1Ah AL = 1Ah bila berhasil
AL = 00h BL = kode tampilan aktif
BH = kode tampilan kedua
INTERRUPT 10h - Service 1Bh
VGA State Information
Fungsi : Memperoleh informasi tampilan.
ada pada : Sistem dengan tampilan VGA dan MCGA.
Register Input : Register Output :
AH = 1Bh AL = 1Bh bila berhasil
BX = 0000h ES:DI = alamat buffer 64
ES:DI = alamat buffer 64 byte informasi
byte untuk diisi
INTERRUPT 10h - Service 4Fh,Subservice 00h
VESA SuperVga Information
Fungsi : Memperoleh informasi VESA.
ada pada : Sistem dengan card tampilan VESA SuperVga.
Register Input : Register Output :
AX = 4F00h AL = 4Fh bila berhasil
ES:DI = alamat buffer 256 AH = 00h bila berhasil
byte untuk diisi ES:DI = alamat buffer 256
byte informasi
INTERRUPT 16h - Service 00h
Get Keystroke
Fungsi : Menunggu masukan keyboard.
ada pada : Semua mesin.
Register Input : Register Output :
AH = 00h bila AL=0 maka
AH = kode Extended
bila AL<>0 maka
AL = Kode ASCII
AH = Kode Scan
INTERRUPT 16h - Service 01h
Check Keystroke
Fungsi : Mengecek isi keyboard buffer.
ada pada : Semua mesin.
Register Input : Register Output :
AH = 01h ZF=0 bila buffer tidak kosong
bila AL=0 maka
AH = kode Extended
bila AL<>0 maka
AL = Kode ASCII
AH = Kode Scan
ZF=1 bila buffer kosong
INTERRUPT 16h - Service 10h
Get Enhanced Keystroke
Fungsi : Menunggu masukan keyboard.
ada pada : Mesin AT dengan keyboard Enhanced.
Register Input : Register Output :
AH = 10h AH = kode scan
AL = kode ASCII
INTERRUPT 16h - Service 11h
Check Enhanced Keystroke
Fungsi : Mengecek isi keyboard buffer.
ada pada : Mesin AT dengan keyboard Enhanced.
Register Input : Register Output :
AH = 11h ZF=0 bila buffer tidak kosong
bila AL=0 maka
AH = kode Extended
bila AL<>0 maka
AL = Kode ASCII
AH = Kode Scan
ZF=1 bila buffer kosong
INTERRUPT 19h
Bootstrap Loader
Fungsi : Melakukan Warm Boot.
Register Input : Tidak Ada. Register Output : Tidak Ada.
INTERRUPT 1Bh
Control Break Handler
Fungsi : Interupsi ini terjadi setiap kali terjadi penekanan tombol
Ctrl+Break.
Register Input : Tidak Ada. Register Output : Tidak Ada.
INTERRUPT 1Ch
Timer Tick
Fungsi : Interupsi ini disediakan untuk dipakai oleh pemakai. Interupsi 1Ch
akan terjadi kurang lebih 18,2 kali setiap detik. kita bisa membuat program
residen dengan memanfaatkan timer tick ini.
Register Input : Tidak Ada. Register Output : Tidak Ada.
INTERRUPT 21h - Service 01h
Read Character With Echo
Fungsi : Untuk membaca masukan 1 huruf dari keyboard dan menampilkannya ke
layar. Fungsi ini dapat dihentikan oleh penekanan tombol Ctrl+Break.
Register Input : Register Output :
AH = 10h AL = Kode ASCII
Catatan : Berbeda dengan fungsi dari BIOS, untuk membaca huruf khusus yang
memiliki kode Extended, kita harus membacanya dua kali dengan fungsi dari DOS
ini.
INTERRUPT 21h - Service 02h
Write Character To Standa rd Output
Fungsi : Untuk mencetak satu buah huruf pada layar.
Register Input : Register Output : Tidak ada
AH = 02h
DL = Kode ASCII
INTERRUPT 21h - Service 07h
Direct Character Input Without Echo
Fungsi : Untuk membaca masukan 1 huruf dari keyboard. Fungsi ini tidak akan
menampilkan huruf yang ditekan pada layar, selain itu penekanan tombol
Ctrl+Break juga akan diabaikan.
Register Input : Register Output :
AH = 07h AL = Kode ASCII
INTERRUPT 21h - Service 08h
Character Input Without Echo
Fungsi : Untuk membaca masukan 1 huruf dari keyboard. Fungsi ini tidak akan
menampilkan huruf yang ditekan pada layar. Penekanan tombol Ctrl+Break akan
menghentikan fungsi ini.
Register Input : Register Output :
AH = 08h AL = Kode ASCII
INTERRUPT 21h - Service 09h
Write String To Standa rd Output
Fungsi : Untuk mencetak string ke layar.
Register Input : Register Output : Tidak ada
AH = 09h
DS:DX = String yang diakhiri
dengan tanda "$".
INTERRUPT 21h - Service 0Ah
Input String
Fungsi : Untuk memperoleh masukan string dari keyboard.
Register Input : Register Output :
AH = 0Ah Buffer terisi
DS:DX = Buffer
Spesifikasi buffer:
- Offset 00 mencatat maksimum huruf yang dapat dimasukkan.
- Offset 01 banyaknya masukan dari keyboard yang sudah diketikkan. Tombol CR
tidak akan dihitung.
- Offset 02 keatas, tempat dari string yang diketikkan disimpan.
INTERRUPT 21h - Service 0Bh
Get Status
Fungsi : Mengecek isi keyboard buffer.
Register Input : Register Output :
AH = 0Bh AL = 00 bila tidak ada
huruf
AL = FFh bila ada huruf
INTERRUPT 21h - Service 0Ch
Clear Buffer dan Read Input
Fungsi : Untuk mengosongkan keyboard buffer, lalu melakukan fungsi DOS
01, 06, 07, 08 atau 0Ah.
Register Input : Register Output : Tidak ada
AH = 0Ch
AL = Fungsi yang akan dieksekusi
sesudah buffer dikosongkan
(01,06,0,08 atau 0Ah).
INTERRUPT 21h - Service 0Fh
Open File Using FCB
Fungsi : Membuka file dengan cara FCB.
Register Input : Register Output :
AH = 0Fh AL = 00h bila sukses
DS:DX = FCB AL = FFh bila gagal
INTERRUPT 21h - Service 10h
Closes File Using FCB
Fungsi : Untuk menutup file dengan cara FCB.
Register Input : Register Output :
AH = 10h AL = 00h bila sukses
DS:DX = FCB AL = FFh bila gagal
INTERRUPT 21h - Service 13h
Delete File Using FCB
Fungsi: Menghapus file dengan cara FCB.
Register Input : Register Output :
AH = 13h AL = 00h bila sukses
DS:DX = FCB AL = FFh bila gagal
INTERRUPT 21h - Service 14h
Sequential Read From FCB File
Fungsi : Untuk membaca file secara sekuensial.
Register Input : Register Output :
AH = 14h AL = status
DS:DX = FCB
INTERRUPT 21h - Service 15h
Sequential Write To FCB File
Fungsi : Untuk menulis file secara sekuential.
Register Input : Register Output :
AH = 14h AL = Status
DS:DX = FCB
INTERRUPT 21h - Service 16h
Create File Using FCB
Fungsi : Untuk menciptakan sebuah file baru dengan cara FCB.
Register Input : Register Output :
AH = 16h AL = Status
DS:DX = FCB
INTERRUPT 21h - Service 17h
Rename File Using FCB
Fungsi : Untuk mengganti nama file dengan cara FCB.
Register Input : Register Output :
AH = 17h AL = Status
DS:DX = FCB
INTERRUPT 21h - Service 1Ah
Set DTA
Fungsi : Untuk merubah alamat DTA. Secara default DTA terletak pada PSP offset
ke 80h sebanyak 128 byte.
Register Input : Register Output : Tidak ada
AH = 1Ah
DS:DX = Lokasi DTA yang baru
INTERRUPT 21h - Service 21h
Read Random Record From FCB File
Fungsi : Untuk membaca record dari file FCB.
Register Input : Register Output :
AH = 21h AL = Status
DS:DX = FCB DTA = Hasil pembacaan
INTERRUPT 21h - Service 22h
Write random Record To FCB File
Fungsi : untuk menulis record ke file FCB.
Register Input : Register Output :
AH = 22h AL = Status
DS:DX = FCB
DTA = Data record
INTERRUPT 21h - Service 23h
Get File Size
Fungsi : Untuk mengetahui besarnya suatu file.
Register Input : Register Output :
AH = 23h AL = Status
DS:DX = FCB
INTERRUPT 21h - Service 24h
Set Random Record Number For FCB
Fungsi : Untuk memindahkan record untuk diakses oleh fungsi 21h dan 22h.
Register Input : Register Output :
AH = 24h
DS:DX = FCB
INTERRUPT 21h - Service 25h
Set Interrupt Vektor
Fungsi : Untuk merubah vektor interupsi ke suatu lokasi dengan merubah alamat
awal vektor interupsi.
Register Input : Register Output :
AH = 25h
AL = Nomor Interupsi
DS:DX = Lokasi baru
Konflik : Phar Lap 386
INTERRUPT 21h - Service 27h
Random Block Read From FCB File
Fungsi : Untuk membaca sejumlah record dari suatu file.
Register Input : Register Output :
AH = 27h AL = Status
CX = Banyaknya record yang DTA = hasil pembacaan
akan dibaca CX = Banyaknya record yang
DS:DX = FCB berhasil dibaca
INTERRUPT 21h - Service 28h
Random Block Write To FCB File
Fungsi : Untuk menulis sejumlah record ke suatu file
Register Input : Register Output :
AH = 28h AL = Status
CX = Banyaknya record yang CX = Banyaknya record yang
akan ditulisi berhasil ditulis
DS:DX = FCB
DTA = Data dari record
INTERRUPT 21h - Service 2Fh
Get DTA Address
Fungsi : Untuk mengetahui alamat dari DTA yang dipakai .
Register Input : Register Output :
AH = 2Fh ES:BX = Lokasi DTA
INTERRUPT 21h - Service 30h
Get DOS Version
Fungsi : Untuk mengetahui versi DOS yang sedang dipakai
Register Input : Register Output :
AH = 30h AL = Angka mayor
AH = Angka minor
INTERRUPT 21h - Service 31h
Terminate And Stay Residen
Fungsi : Untuk meresidenkan suatu program .
Register Input : Register Output :
AH = 31h
AL = Kode return
DX = Besar memory dalam paragraf
INTERRUPT 21h - Service 33h
Extended Break Checking
Fungsi : Untuk menghidup dan matikan pengecekan tombol Ctrl+Break oleh fungsi
DOS.
Register Input : Register Output :
AH = 33h bila input AL=0
AL = 0 untuk mengambil keterangan DL=0 Off
Ctrl+Break DL=1 On
= 1 untuk merubah status Ctrl+Break
DL = 0 Ctrl+Break dijadikan Off
DL = 1 Ctrl+Break dijadikan On
INTERRUPT 21h - Service 34h
GET ADDRESS OF INDOS FLAG
Fungsi : Untuk memperoleh alamat dari BAD (Bendera Aktif DOS). Nilai BAD akan
bertambah pada saat interupsi dari DOS dijalankan dan akan berkurang saat
interupsi dari DOS selesai. Dengan melihat pada BAD kita dapat mengetahui
apakah interupsi dari DOS sedang aktif atau tidak(Lihat bagian residen).
Register Input : Register Output :
AH = 34h ES:BX = Alamat BAD
INTERRUPT 21h - Service 35h
Get Interrupt Vektor
Fungsi : Untuk memperoleh alamat vektor interupsi dari suatu nomor interupsi.
Register Input : Register Output :
AH = 35h ES:BX = Alamat vektor interupsi
AL = Nomor Interupsi
INTERRUPT 21h - Service 3Ch
Create File Handle
Fungsi : Untuk menciptakan sebuah file baru dengan metode File Handle.
Register Input : Register Output :
AH = 3Ch bila CF=0 maka
AL = Mode, dengan bit: AX=Nomor file handle
0 file Read only bila CF=1 maka
1 file Hidden AX=Kode kesalahan
2 file System
3 Volume label
4 Cadangan
5 file Archive
DS:DX = Nama file ASCIIZ
INTERRUPT 21h - Service 3Dh
Open Existing File
Fungsi : Untuk membuka file yang sudah ada dengan metode file handle.
Register Input : Register Output :
AH = 3Dh bila CF=0 maka
AL = Mode, dengan bit: AX=Nomor file handle
0 untuk Read only bila CF=1 maka
1 untuk Write only AX=Kode kesalahan
2 untuk Read/Write
DS:DX = Nama file ASCIIZ
INTERRUPT 21h - Service 3Eh
Close File Handle
Fungsi : Untuk menutup file handle
Register Input : Register Output :
AH = 3Eh CF=0 bila sukses
BX = Nomor file handle CF=1 bila gagal, maka
AX=Kode kesalahan
INTERRUPT 21h - Service 3Fh
Read From File Or Device Using File Handle
Fungsi : Untuk membaca data dari suatu file atau device.
Register Input : Register Output :
AH = 3Fh CF=0 bila sukses
BX = Nomor file handle AX=byte yang berhasil dibaca
CX = Banyaknya byte yang CF=1 bila gagal
akan dibaca AX=Kode kesalahan
DS:DX = Alamat buffer
INTERRUPT 21h - Service 40h
Write To File Or Device Using File Handle
Fungsi : Untuk menulisi file atau device.
Register Input : Register Output :
AH = 40h CF=0 bila sukses
BX = Nomor file handle AX=byte yang berhasil ditulisi
CX = Banyaknya byte yang CF=1 bila gagal
akan ditulisi AX=Kode kesalahan
DS:DX = Alamat data
INTERRUPT 21h - Service 41h
Delete File Using File Handle
Fungsi : Untuk menghapus file
Register Input : Register Output :
AH = 41h CF=0 bila sukses
CL = Nama file ASCIIZ CF=1 bila gagal, maka
AX=kode kesalahan
INTERRUPT 21h - Service 42h
Set Current File Position
Fungsi : Untuk memindahkan pointer dari suatu file.
Register Input : Register Output :
AH = 42h CF=0 bila sukses
AL = Mode perpindahan: CF=1 bila gagal
00 dari awal file AX= kode kesalahan
01 dari posisi aktif
02 dari akhir file
BX = Nomor file handle
CX:DX = Banyaknya perpindahan
INTERRUPT 21h - Service 43h
Set And Get File Atribut
Fungsi : Untuk mengetahui dan merubah atribut dari suatu file.
Register Input : Register Output :
AH = 43h bila input AL=0, maka:
AL = 0 untuk memperoleh atribut bila CF=0
file CX = atribut
1 untuk merubah atribut file bila CF=1
CX = atribut baru dengan bit: AX = Kode kesalahan
0 = Read Only
1 = Hidden
2 = System
5 = Archive
DS:DX = Nama file ASCIIZ
INTERRUPT 21h - Service 4Ch
Terminate With Return Code
Fungsi : Untuk menghentikan program dan mengembalikan kendali kepada DOS.
Fungsi ini lebih efektif untuk dipakai dibandingkan dengan interupsi 20h.
Register Input : Register Output : Tidak ada
AH = 4Ch
AL = Kode return
INTERRUPT 21h - Service 56h
Rename File
Fungsi : Untuk mengganti nama file. Fungsi ini juga bisa memindahkan file ke
directory lain.
Register Input : Register Output :
AH = 56h CF=0 bila sukses
DS:DX = Nama file ASCIIZ lama CF=1 bila gagal
ES:BX = Nama file ASCIIZ baru AX=Kode kesalahan
INTERRUPT 27h
Terminate And Stay Residen
Fungsi : Untuk meresidenkan program .
Register Input : Register Output :
DS:DX = Batas alamat residen
Tabel Kode Scan Keyboard
+---------------------------------------------------------------+
| KODE SCAN |
+--------+-----------+--------+-----------+---------+-----------+
|TOMBOL | SCAN KODE |TOMBOL | SCAN KODE | TOMBOL | SCAN KODE |
| |TEKAN|LEPAS| |TEKAN|LEPAS| |TEKAN|LEPAS|
+--------+-----+-----+--------+-----+-----+---------+-----+-----+
| Esc | 01 | 81 | S | 1F | 9F | F3 | 3D | BD |
| 1 | 02 | 82 | D | 20 | A0 | F4 | 3E | BE |
| 2 | 03 | 83 | F | 21 | A1 | F5 | 3F | BF |
| 3 | 04 | 84 | G | 22 | A2 | F6 | 40 | C0 |
| 4 | 05 | 85 | H | 23 | A3 | F7 | 41 | C1 |
| 5 | 06 | 86 | J | 24 | A4 | F8 | 42 | C2 |
| 6 | 07 | 87 | K | 25 | A5 | F9 | 43 | C3 |
| 7 | 08 | 88 | L | 26 | A6 | F10 | 44 | C4 |
| 8 | 09 | 89 | ; | 27 | A7 | Num Lock| 45 | C5 |
| 9 | 0A | 8A | ' | 28 | A8 | Scrol | | |
| 0 | 0B | 8B | ~ | 29 | A9 | Lock | 46 | C6 |
| - | 0C | 8C |ShifKiri| 2A | AA | Home | 47 | C7 |
| = | 0D | 8D | \ | 2B | AB | _ <8> | 48 | C8 |
| Back | | | Z | 2C | AC | PgUp | 49 | C9 |
| Space | 0E | 8E | X | 2D | AD |<->KeyPad| 4A | CA |
| Tab | 0F | 8F | C | 2E | AE |<_>KeyPad| 4B | CB |
| Q | 10 | 90 | V | 2F | AF |<5>KeyPad| 4C | CC |
| W | 11 | 91 | B | 30 | B0 |<_>KeyPad| 4D | CD |
| E | 12 | 92 | N | 31 | B1 |<+>KeyPad| 4E | CE |
| R | 13 | 93 | M | 32 | B2 |<1>KeyPad| 4F | CF |
| T | 14 | 94 | < | 33 | B3 |<_>KeyPad| 50 | D0 |
| Y | 15 | 95 | > | 34 | B4 | PgDn | 51 | D1 |
| U | 16 | 96 | ? | 35 | B5 | Ins | 52 | D2 |
| I | 17 | 97 | Shif | | | Del | 53 | D3 |
| O | 18 | 98 | Kanan | 36 | B6 | F11 | 57 | D7 |
| P | 19 | 99 | PrtSc | 37 | B7 | F12 | 58 | D8 |
| { | 1A | 9A | LftAlt | 38 | B8 | RgtAlt |E038 |E0B8 |
| } | 1B | 9B | Space | 39 | B9 | RgtCtrl |E01B |E09D |
| Enter | 1C | 9C |CapsLock| 3A | BA | Enter |E01C |E09C |
| LftCtrL| 1D | 9D | F1 | 3B | BB | <KeyPad>| | |
| A | 1E | 9E | F2 | 3C | BC | | | |
+--------+-----+-----+--------+-----+-----+---------+-----+-----+
Tabel Kode Extended Keyboard
+---------------------------------------------------------------+
| KODE EXTENDED |
+--------------+-----+--------------+-----+---------------+-----+
| |KODE | |KODE | |KODE |
| TOMBOL |<DES>| TOMBOL |<DES>| TOMBOL |<DES>|
+--------------+-----+--------------+-----+---------------+-----+
| Shift+ Tab | 15 | F5 | 63 | Ctrl + F7 | 100 |
| Alt + Q | 16 | F6 | 64 | Ctrl + F8 | 101 |
| Alt + W | 17 | F7 | 65 | Ctrl + F9 | 102 |
| Alt + E | 18 | F8 | 66 | Ctrl + F10 | 103 |
| Alt + R | 19 | F9 | 67 | Alt + F1 | 104 |
| Alt + T | 20 | F10 | 68 | Alt + F2 | 105 |
| Alt + Y | 21 | Home | 71 | Alt + F3 | 106 |
| Alt + U | 22 | Cursol Up | 72 | Alt + F4 | 107 |
| Alt + I | 23 | Page Up | 73 | Alt + F5 | 108 |
| Alt + O | 24 | Cursol Left | 75 | Alt + F6 | 109 |
| Alt + P | 25 | Cursol Right| 77 | Alt + F7 | 110 |
| Alt + A | 30 | Cursol Down | 80 | Alt + F8 | 111 |
| Alt + S | 31 | Page Down | 81 | Alt + F9 | 112 |
| Alt + D | 32 | Insert | 82 | Alt + F10 | 113 |
| Alt + F | 33 | Delete | 83 | Ctrl+Cursol.lf| 115 |
| Alt + G | 34 | Shif + F1 | 84 | Ctrl+Cursol.Rg| 116 |
| Alt + H | 35 | Shif + F2 | 85 | Ctrl+End | 117 |
| Alt + J | 36 | Shif + F3 | 86 | Ctrl+Page Down| 118 |
| Alt + K | 37 | Shif + F4 | 87 | Ctrl+Home | 119 |
| Alt + L | 38 | Shif + F5 | 88 | Alt + 1 | 120 |
| Alt + Z | 44 | Shif + F6 | 89 | Alt + 2 | 121 |
| Alt + X | 45 | Shif + F7 | 90 | Alt + 3 | 122 |
| Alt + C | 46 | Shif + F8 | 91 | Alt + 4 | 123 |
| Alt + V | 47 | Shif + F9 | 92 | Alt + 5 | 124 |
| Alt + B | 48 | Shif + F10 | 93 | Alt + 6 | 125 |
| Alt + N | 49 | Ctrl + F1 | 94 | Alt + 7 | 126 |
| Alt + M | 50 | Ctrl + F2 | 95 | Alt + 8 | 127 |
| F1 | 59 | Ctrl + F3 | 96 | Alt + 9 | 128 |
| F2 | 60 | Ctrl + F4 | 97 | Alt + 0 | 129 |
| F3 | 61 | Ctrl + F5 | 98 | Alt + - | 130 |
| F4 | 62 | Ctrl + F6 | 99 | Alt + ' | 131 |
+--------------+-----+--------------+-----+---------------+-----+
SPACE RACING
inilah screen shot game android yang bisa dimainkan dengan android 4 keatas pada android 7 layar 10 inch dengan memori 1 gb ,juga android 4 layar 3 inch memori 256 mb pun game ini tidak patah patah masih bisa berjalan lancar , game terbaik dalam hal graphic 3d nya, berjudul " SPACE RACING " dengan ukuran game hanya 10,9 mb saja ,pada game ini graphic nya bagus walaupun semua tidak terlalu halus pada dekorasi detilnya , ada mobil yang berjalan sendiri berlalulalang , anda diwajib menjalankan misi misi sederhana yaitu mengendalikan mobil angkasa dengan cepat,untuk dapat 1 skor anda harus mengumpulkan poin biru ,tanpa ada skor nilai yang jelas,hanya anda yang berusaha sendiri menyelesaikan tiap tahap , tanpa ada petunjuk lengkap di sepanjang jalan ,trek jalur sangat panjang pada setiap tikungan anda tidak akan jatuh kalah atau tertabrak , game ini dibuat untuk anda yang sulit mengendalikan ditikungan ,anda dapat memilih mobil angkasa apa saja asal anda tidak bosan memainkan game ini berulangkali,sangat mudah , bangunan lumayan namun bila anda sudah mahir berjalan kencang saat mengendarai mobil maka akan terasa kurang kencang , lokasi banyak anda akan berpindah ke jalur trek yang berbeda satu sama lain,kota yang selalu pada waktu malam ,anda berputar putar di mode alam yang malam dengan bintang angkasa ,kontrol yang sangat nyaman sebab tidak ada gyroscope sehingga bisa diatur dikendalikan tangan kiri atau kanan , mobil angkasa ukuranya proposional dengan dekorasi sekitarnya lumayan mirip asli,rugi kalau anda tidak mencobanya tak ada salahnya anda mencobanya,anda bisa mengunduhnya di google play store