DAFTAR
INSTRUKSI ASSEMBLY
Mnemonic : AAA (ASCII Adjust For
Addition)
Tersedia
pada : 8088 keatas
Syntax
: AAA Pengaruh flag : AF, CF
Fungsi
: Mengatur format bilangan biner/hexa ke bentuk BCD setelah dilakukan operasi
penjumlahan dua bilangan BCD. AAA hanya dapat dilakukan untuk bilangan sebesar
4 bit, maksimal hexa F dan diletakkan di register AL. Bila AL bernilai lebih
dari 9, maka AL akan dikurangi 10 dan 4 bit tinggi dari AL akan dijadikan 0.
Setelah itu AH akan ditambah dengan 1. CF dan AF akan diset 1.
Contoh:
Bilangan BCD 8 + 6 = ...
MOV
AL,8h
MOV
AH,6h
ADD
AL,AH ; AX = 060Eh
AAA
; AX = 0704h
Jadi bilangan 0E
dijadikan BCD menjadi 14, dimana bilangan di AX dibaca BCD 14 --> AH =
1(7-6), AL = 4
Mnemonic
: AAD (ASCII Adjust For Division)
Tersedia
pada : 8088 keatas
Syntax
: AAD Pengaruh flag : SF, ZF, PF
Fungsi
: Mengkonversi bilangan BCD ke biner atau hexa. Adapun cara yang dilakukan
adalah mengalikan AH dengan 10 dan menambahkan isi AL dengan hasilkali AH.
Hasil pertambahan tersebut akan diletakkan di register AL kemudian AH akan
dinolkan.
Contoh:
Hexa
dari BCD 53 adalah ...
MOV
AH,05
MOV
AL,03
AAD
; AL=0035h yaitu hexa dari BCD 53
Mnemonic
: AAM (ASCII Adjust For Multiplication)
Tersedia
pada : 8088 keatas
Syntax
: AAM Pengaruh flag : OF, SF, ZF, AF, PF, CF
Fungsi
: Mengkonversi bilangan biner atau hexa ke BCD. Adapun cara yang dilakukan
adalah membagi AL dengan 10, kemudian hasilnya dimasukkan ke register AH sedang
sisanya ke register AL.
Contoh:
Bilangan
BCD ; 12 * 9 = ...
MOV
AL,12h
MOV
BL,09h
MUL
BL ; AX = 00A2h
AAM
; AX = 1002h
Bilangan
1002h pada AX dibaca sebagai desimal 162 :
-
AH = 10h = 16
-
AL = 02h = 2
Mnemonic
: AAS (ASCII Adjust For Subtraction)
Tersedia
pada : 8088 keatas
Syntax
: AAS Pengaruh flag : AF, CF
Fungsi
: Mengatur format bilangan biner/hexa hasil pengurangan ke bentuk BCD. AAS ini
berlaku untuk hasil pengurangan yang tidak lebih dari 4 bit. Jika 4 Bit rendah
dari AL lebih besar dari 9, maka AL akan dikurangi dengan 6 dan register AH
akan dikurangi 1. 4 bit atas register AL akan dijadikan nol sedangkan 4 bit
rendahnya akan bernilai 0-9.
Contoh:
Bilangan
BCD 11 - 5 = ...
MOV
AL,11h
MOV
BL,5h
SUB
AL,BL ; AX = 000C
AAS
; AX = FF06
Mnemonic
: ADC (Add With Carry)
Tersedia
pada : 8088 keatas
Syntax
: ADC Tujuan,Sumber Pengaruh flag : OF, SF, ZF, AF, PF Fungsi : Menambahkan
"Sumber", "Tujuan" dan Carry Flag (1=on, 0=off), hasilnya
diletakkan pada "Tujuan". Intruksi ini biasanya digunakan setelah
operasi pada pertambahan atau perkalian yang menyebabkan Carry. Misalkan
pertambahan yang melibatkan bilangan yang besar, seperti pada contoh dibawah
ini:
Contoh:
12345678h
+ 9ABCDEF0 = ......
Kedua
operand di atas berukuran 4 byte. Jelas sudah melebihi kapasitas register. Di
sinilah digunakan mnemonic ADC.
Contoh:
MOV
AX,1234h ; AX = 1234
MOV
BX,9ABCh ; BX = 9ABC
MOV
CX,5678h ; BX = 5678
MOV
DX,0DEF0h ; DX = DEF0
ADD
CX,DX ; CX = 3568 CF = 1
ADC
AX,BX ; AX = AX+BX+CF = ACF1
Hasil
penjumlahan tertampung di AX:CX yaitu ACF13568h.
Mnemonic
: ADD
Tersedia
pada : 8088 keatas
Syntax
: ADD Tujuan,Sumber
Pengaruh
flag : OF, SF, ZF, AF, PF, CF
Fungsi
: Menambahkan "Sumber" dan "Tujuan" kemudian hasilnya
disimpan pada "Tujuan". Bila hasil penjumlahan tidak tertampung
seluruhnya pada 204 "Tujuan", maka CF akan diset 1.
Contoh:
ADD
AX,BX ; Jumlahkan 2 register
ADD
AL,[350] ; Jumlahkan register dengan isi memori
ADD
[350],AL ; Jumlahkan isi memory dengan register
ADD
AH,10h ; Jumlahkan register dengan immediate
ADD
[350],10h ; Jumlahkan isi memori dengan immediate
Mnemonic
: AND
Tersedia
pada : 8088 keatas
Syntax
: AND Tujuan,Sumber
Pengaruh
flag : OF, SF, ZF, PF, CF
Fungsi
: Melakukan logika AND antara "Tujuan" dan "Sumber". Hasil
dari operasi AND diletakkan pada "Tujuan". Instruksi AND umumnya
digunakan untuk melihat kondisi suatu bit dengan menolkan bit-bit lainnya.
Contoh:
AND
AL,00001000b ; AL=0000?000
JZ
Nol ; Jika bit ketiga AL=0, maka lompat
Mnemonic
: BOUND (Check Bounds Of Array Index)
Tersedia
pada : 8088 keatas
Syntax
: BOUND Tujuan,Sumber
Pengaruh
flag : Tidak ada
Fungsi
: Untuk memastikan bahwa index array bertanda negatif atau positif masih masuk
dalam batas limit yang didefinisikan oleh Double Word blok memory.
Mnemonic
: CALL
Tersedia
pada : 8088 keatas
Syntax
: CALL nama-procedure
Pengaruh
flag : Tidak ada
Fungsi
: Melompat dan mengerjakan intruksi pada procedure program. Pada saat instruksi
Call diberikan, maka processor akan melakukan :
-
PUSH CS ke stack bila procedure yang dipanggil bertipe Far.
-
PUSH IP ke stack.
-
Mengganti nilai CS dengan segmen dari procedure bila procedure tersebut bertipe
Far.
-
Mengganti nilai IP dengan offset dari procedure. Lakukan intruksi yang terdapat
pada alamat baru(CS:IP) sampai bertemu dengan intruksi RET, setelah itu:
-
POP IP - POP CS bila procedure bertipe Far.
-
Kembali ke program induk/pemanggil.
Contoh:
1CFE:0125
CALL N_PROC ; Push IP(=0128) ke stack, IP=1066 1CFE:0128 .......
1CFE:0155 CALL
F_PROC ; Push CS(=1CFE)&IP(=0160) ke stack ; CS=1FFF,IP=0179
1CFE:0160
.......
1CFE:1066 N_PROC
PROC NEAR
.......
.......
RET ; Pop
IP(=0128)
N_PROC ENDP
1FFF:0179 F_PROC
PROC FAR
.......
....... RET ;
Pop IP(=0160) & CS(=1CFE)
F_PROC ENDP
Mnemonic
: CBW (Convert Byte To Word)
Tersedia
pada : 8088 keatas
Syntax
: CBW
Fungsi
: Mengubah isi register AL menjadi AX dengan mengubah isi register AH menjadi 0
bila AL benilai positif atau AH akan bernilai FF bila AL negatif.
Contoh:
MOV
AL,FFh
MOV
BX,123Fh
CBW
; AX = FFFF
ADD
AX,BX ; AX = 123F + (-1) = 123E
Pada
bilangan bertanda, angka FFh pada AL adalah -1 bagi Assembler bukannya 255
desimal.
Mnemonic
: CLC (Clear Carry Flag)
Tersedia
pada : 8088 keatas
Syntax
: CLC
Pengaruh
flag : CF
Fungsi
: Membuat carry flag menjadi 0.
Contoh:
Untuk
menjaga agar dalam operasi RCR, rotasi pertamanya yang masuk adalah 0 maka
digunakan CLC dahulu.
CLC
RCR
AX,1
Mnemonic
: CLD (Clear Direction Flag)
Tersedia
pada : 8088 keatas
Syntax
: CLD
Pengaruh
flag : DF
Fungsi
: Membuat direction flag berisi 0. Bila direction flag berisi 0 maka pembacaan
string akan berlangsung dari memory rendah ke tinggi. Sebaliknya bila direction
flag bernilai 1 maka string akan diproses dari memory tinggi ke rendah.
Contoh:
CLD
; Arah Operasi string ke kanan
MOV
CX,0Fh ; Bandingkan 16 byte dari string
REPE
CMPSB ; sampai ada satu yang tidak sama.
Mnemonic
: CLI (Clear Interrupt Flag)
Tersedia
pada : 8088 keatas
Syntax
: CLI
Pengaruh
flag : IF
Fungsi
: Membuat interrupt flag menjadi 0. Bila IF berisi 0 maka semua interupsi akan
diabaikan oleh komputer, kecuali Nonmaskable Interrupt(NMI). Umumnya CLI
diberikan pada saat akan dilakukan proses yang fatal, dimana terjadinya
interupsi akan menghancurkan proses tersebut.
Contoh:
Kita
akan mengubah alamat sebuah stack, dengan mengubah SS dan SP. Selama SS dan SP
diubah, interupsi tidak boleh terjadi. Hal ini dikarenakan pada saat terjadi
interupsi, register CS, IP dan Flags disimpan pada stack sebagai alamat kembali
nantinya.
MOV
AX,AlmStack
MOV
DX,AlmOffset
CLI
MOV
SP,DX
MOV
SS,AX
STI
Mnemonic
: CMC (Complement Carry Flag)
Tersedia
pada : 8088 keatas
Syntax
: CMC
Pengaruh
flag : CF
Fungsi
: Mengubah Carry flag menjadi kebalikan dari isi semulanya, seperti dari 0
menjadi 1 dan sebaliknya.
Contoh:
Pada kebanyakan operasi, Carry flag dijadikan sebagai tanda berhasil atau
tidaknya operasi tersebut. Biasanya Carry flag akan bernilai 0 bila operasi
berhasil dan bernilai 1 bila operasi mengalami kegagalan. Dengan menggunakan
perintah CMC disertai dengan ADC(pertambahan dengan carry flag), anda dapat
memanfaatkannya untuk menghitung banyaknya keberhasilan operasi yang dilakukan,
seperti:
MOV
CX,Counter
XOR
AX,AX
Ulang:
PUSH AX
Operasi
POP
AX
CMC
ADC
AX,0
LOOP
Ulang
Pada
hasil akhir dari proses ini register AX akan berisi banyaknya operasi yang
berhasil dilakukan.
Mnemonic
: CMP (Compare)
Tersedia
pada : 8088 keatas
Syntax
: CMP operand1,operand2
Pengaruh
flag : OF, SF, ZF, AF, PF, CF
Fungsi
: Membandingkan "operand1" dengan "operand2". Adapun cara
yang dilakukan adalah dengan mengurangkan "operand1" dengan
"operand2" (operand1- operand2). "Operand1" dan
"operand2" yang dibandingkan harus mempunyai tipe data yang sama,
seperti byte dengan byte (AL,AH,BL,BH,..) atau word dengan word (AX,BX,CX,..).
Perintah CMP hanya mempengaruhi flags register tanpa merubah isi
"operand1" dan "operand2". Contoh:
Ulang:
CMP
CX,AX
JE
Exit LOOP Ulang
Mnemonic
: CMPSB (Compare Strings Byte)
Tersedia
pada : 8088 keatas
Syntax
: CMPSB
Pengaruh
flag : OF, SF, ZF, AF, PF, CF
Fungsi
: Untuk membandingkan satu byte pada alamat DS:SI dengan ES:DI. 209 Jika
direction flag bernilai 1 maka setiap selesai perbandingan register SI dan DI
akan ditambah dengan 1, sebaliknya jika direction flag bernilai 0 maka setiap
selesai perbandingan register SI dan DI akan dikurang dengan 1.
Mnemonic
: CMPSW (Compare Strings Word)
Tersedia
pada : 8088 keatas
Syntax
: CMPSW
Pengaruh
flag : OF, SF, ZF, AF, PF, CF
Fungsi
: Untuk membandingkan satu word pada alamat DS:SI dengan ES:DI. Jika direction
flag bernilai 1 maka setiap selesai perbandingan register SI dan DI akan
ditambah dengan 2, sebaliknya jika direction flag bernilai 0 maka setiap
selesai perbandingan register SI dan DI akan dikurang dengan 2.
Mnemonic
: CWD (Convert Word To Doubleword)
Tersedia
pada : 8088 keatas
Syntax
: CWD
Pengaruh
flag : Tidak ada
Fungsi
: Mengubah tipe word(AX) menjadi double word(DX). Bila AX positif maka DX akan
berisi 0000, bila AX negatif maka DX berisi FFFF.
Contoh:
Anda
dapat memanfaatkan fungsi CWD ini untuk mendapatkan bilangan absolute.
Absolut
MACRO Bil
MOV
TEST
AX,10000000b ; Apakah AX negatif?
JZ Selesai ; Ya,
selesai
CWD ;
XOR AX,DX ;
Jadikan positif
SUB AX,DX ;
Selesai: ENDM 210
Mnemonic
: DAA (Decimal Adjust After Addition)
Tersedian
pada : 8088 keatas
Syntax
: DAA
Pengaruh
flag : OF, SF, ZF, AF, PF, CF
Fungsi
: Mengubah hasil penjumlahan 2 bilangan bukan BCD pada register AL menjadi
bentuk BCD. Jika 4 bit rendah dari AL lebih besar dari 9 maka AL akan dikurangi
dengan 10 dan AF diset menjadi 1, sebaliknya jika 4 bit rendah AL lebih kecil
atau sama dengan 9 maka AF akan dijadikan 0. DAA sebenarnya adalah sama dengan
AAA kecuali dalam hal bahwa DAA dapat mengatur baik bilangan 8 bit maupun 4 bit
pada AL, sementara AAA hanya 4 bit.
Contoh:
Bilangan
BCD : 27h + 45h = ...
MOV
AH,45h
MOV
AL,27h
ADD
AL,AH ; AL = 6C
DAA
; AL = 72
Mnemonic
: DAS (Decimal Adjust After Substraction)
Tersedia
pada : 8088 keatas
Syntax
: DAS
Pengaruh
flag : OF, SF, ZF, AF, PF, CF
Fungsi
: Mengubah hasil pengurangan 2 bilangan pada AL menjadi bentuk BCD. Jika 4 bit
rendah dari AL lebih besar dari 9 maka AL akan dikurangi dengan 6 dan AF diset
menjadi 1, sebaliknya jika 4 bit rendah dari AL lebih kecil atau sama dengan 9
maka AF akan dijadikan 0.
Contoh:
Bilangan
BCD: 50h - 23h = ...
MOV
AX,50h
SUB
AX,23h ; AX = 002D
DAS
; AX = 0027 211
Mnemonic
: DEC (Decrement)
Tersedia
pada : 8088 keatas
Syntax
: DEC Tujuan
Pengaruh
flag : OF, SF, ZF, AF, PF
Fungsi
: Untuk mengurangi "Tujuan" dengan 1. "Tujuan" dapat berupa
register 8 bit, 16 bit, 32 bit maupun memory. Bila anda ingin mengurangi suatu
register ataupun memory dengan 1, gunakanlah perintah DEC ini karena selain
lebih cepat, perintah DEC juga menggunakan memory lebih sedikit dibandingkan
dengan perintah SUB.
Contoh:
Kita
dapat mengimplementasikan perintah Loop dengan menggunakan DEC. Di bawah ini
kita akan menjumlahkan bilangan BX sampai 1. Misalnya bila BX = 5 maka
dijumlahkan 5+4+3+2+1 = ....
XOR AX,AX
Loop1
: ADD AX,BX
DEC BX
CMP BX,0
JNZ Loop1
Mnemonic
: DIV (Divide)
Tersedia
pada : 8088 keatas
Syntax
: DIV Sumber
Pengaruh
flag : OF, SF, ZF, AF, PF, CF
Fungsi
: Bila "sumber" bertipe 8 bit maka dilakukan pembagian AX dengan
"Sumber" (AX / Sumber). Hasil pembagian akan disimpan pada register
AL sedangkan sisa pembagian akan disimpan pada regiser AH. Jika
"sumber" bertipe 16 bit maka dilakukan pembagian DX:AX dengan
"Sumber" (DX:AX / Sumber). Hasil pembagian akan disimpan pada
register AX sedangkan sisa pembagian akan disimpan pada regiser DX.
Contoh:
Untuk
memeriksa apakah suatu bilangan merupakan kelipatan 3 atau bukan, 212 anda bisa
membaginya dengan tiga. Bila merupakan kelipatan 3, maka sisa pembagian akan 0,
sebaliknya jika bukan kelipatan tiga, sisa pembagian tidak akan 0. Macro ini
akan menjadikan AL=1 bila bilangan yang ditest merupakan kelipatan tiga dan
sebaliknya akan bernilai 0.
Lipat3
MACRO Bil
MOV AX,Bil
MOV BX,3
DIV BX
CMP AX,0 ;
Apakah ada sisa pembagian ?
JE Tiga ; Tidak
ada sisa , kelipatan 3
MOV AL,0
Tiga
: MOV AL,1
ENDM
Mnemonic
: ENTER (Make Stack Frame)
Tersedia pada : 8088 keatas
Syntax
: Enter Operand1,operand2 pengaruh flag : Tidak ada Fungsi : Untuk memesan
tempat pada stack yang dibutuhkan oleh bahasa tingkat tinggi. Mnemonic :ESC
(Escape) Tersedia pada : 8088 keatas Syntax : ESC Operand1,Operand2
Pengaruh flag : Tidak ada Fungsi : Perintah ini digunakan terutama pada
komputer yang mempunyai procesor lebih dari satu dan dirangkai secara paralel.
Perintah ESC akan menyebabkan procesor yang sedang aktif dinonaktifkan sehingga
procesor yang lain dapat digunakan.
Mnemonic
: HLT (Halt)
Tersedia
pada : 8088 keatas
Syntax
: HLT
Pengaruh
flag : Tidak ada 213
Fungsi
: Untuk menghentikan program atau membuat procesor dalam keadaan tidak aktif.
Setelah mendapat perintah ESC ini, procesor harus mendapat interrupt dari luar
atau direset untuk berjalan secara normal kembali.
Mnemonic
: IDIV (Signed Divide)
Tersedia
pada : 8088 keatas
Syntax
: IDIV Sumber
Pengaruh
flag : OF, SF, ZF, AF, PF, CF
Fungsi
: IDIV digunakan untuk pembagian pada bilangan bertanda. Bila
"sumber" bertipe 8 bit maka dilakukan pembagian AX dengan
"Sumber" (AX / Sumber). Hasil pembagian akan disimpan pada register
AL sedangkan sisa pembagian akan disimpan pada regiser AH. Jika sumber bertipe
16 bit maka dilakukan pembagian DX:AX dengan Sumber(DX:AX / Sumber). Hasil
pembagian akan disimpan pada register AX sedangkan sisa pembagian akan disimpan
pada regiser DX.
Contoh:
MOV
BL,10h
MOV
AX,-10h
IDIV
BL ; AX = 00FFh(-1)
Mnemonic
: IMUL (Signed Multiply)
Tersedia
pada : 8088 keatas
Syntax
: IMUL Sumber Khusus 80386: IMUL Tujuan,Sumber IMUL Tujuan,Pengali,Sumber
Pengaruh flag : OF, SF, ZF, AF, PF, CF Fungsi : IMUL digunakan untuk perkalian
pada bilangan bertanda. Bila "sumber" bertipe 8 bit maka akan
dilakukan perkalian pada register AL dengan "sumber" kemudian
hasilnya disimpan pada AX. Bila "sumber" bertipe 16 bit maka akan
dilakukan perkalian pada register AX dengan "sumber" kemudian
hasilnya disimpan pada DX:AX.
Contoh:
MOV
AX,100h ; AX=100h
MOV
BX,-2 ; BX=FFFEh
IMUL
BX ; DX=FFFFh, AX=FE00h
Mnemonic
: IN (Input From Port)
Tersedia
pada : 8088 keatas
Syntax
: IN Operand,NoPort
Pengaruh
flag : Tidak ada
Fungsi
: Untuk mengambil data pada port. Jika "Operand" merupakan register
AL maka akan diambil data pada port sebanyak 1 byte, bila "operand"
merupakan register AX maka akan diambil data pada port sebanyak 1 word.
"NoPort" mencatat nomor port yang akan dibaca datanya.
"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 tersebut.
Contoh:
Interrupt
dari keyboard diatur oleh PIC(Programmable Interrupt Controller) yang berada
pada port 21h. Jika bit ke 1 dari port 21h bernilai 1, maka interupsi dari
keyboard akan diabaikan.
NoKey
MACRO
IN AL,21h
OR AL,00000010b
OUT 21h,AL
ENDM
Mnemonic
: INC (Increment)
Tersedia
pada : 8088 keatas
Syntax
: INC Tujuan
Pengaruh
flag : OF, SF, ZF, AF, PF
Fungsi
: Untuk menambah "Tujuan" dengan 1. Bila anda ingin menambah suatu
register ataupun memory dengan 1, gunakanlah perintah INC ini karena selain
lebih cepat, perintah INC juga menggunakan memory lebih sedikit dibandingkan
dengan perintah ADD.
Contoh:
Untuk
membuat suatu pengulangan, seperti pada perintah 'FOR I:=1 TO 10 DO' pada
bahasa tingkat tinggi:
XOR AX,AX
Ulang:
CMP AX,10
JE Selesai
INC AX
JMP Ulang
Mnemonic
: INS (Input From Port To String)
Tersedia
pada : 8088 keatas
Syntax
: INS Operand,NoPort
Pengaruh
flag : Tidak ada
Fungsi
: Untuk mengambil data dari "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
dibaca dari port. Data yang diambil dari port akan disimpan pada lokasi ES:DI.
Jika Direction flag bernilai 0(dengan CLD) maka setelah intruksi INS dijalankan
register DI akan ditambah secara otomatis, sebaliknya jika Direction flag
bernilai 1(dengan STD) maka register DI akan dikurang secara otomatis. Anda
bisa menggunakan intruksi pengulangan pada string disertai dengan perintah INS
ini.
Contoh:
MOV DX,123h
MOV CX,30
Ulang:
INS AX,DX
LOOP Ulang
Mnemonic
: INSB ( Input String Byte From Port)
Tersedia
pada : 8088 keatas
Syntax
: INSB 216
Pengaruh
flag : Tidak ada
Fungsi
: Untuk mengambil data dari nomor port yang dicatat oleh register DX sebanyak 1
byte. Data yang diambil dari port akan disimpan pada lokasi ES:DI. Jika
Direction flag bernilai 0(dengan CLD) maka setelah intruksi INS dijalankan
register DI akan ditambah dengan 1 secara otomatis, sebaliknya jika Direction
flag bernilai 1(dengan STD) maka register DI akan dikurang dengan 1 secara
otomatis. Anda bisa menggunakan intruksi pengulangan pada string disertai
dengan perintah INSB ini.
Contoh:
REP INSB
Mnemonic
: INSW
Tersedia
pada : 8088 keatas
Syntax
: INSW
Pengaruh
Flag : Tidak ada
Fungsi
: Untuk mengambil data dari nomor port yang dicatat oleh register DX sebanyak 1
Word. Data yang diambil dari port akan disimpan pada lokasi ES:DI. Jika
Direction flag bernilai 0(dengan CLD) maka setelah intruksi INS dijalankan
register DI akan ditambah dengan 2 secara otomatis, sebaliknya jika Direction
flag bernilai 1(dengan STD) maka register DI akan dikurang dengan 2 secara
otomatis. Anda bisa menggunakan intruksi pengulangan pada string disertai
dengan perintah INSW ini.
Contoh:
REP
INSW
Mnemonic
: INT (Interrupt)
Tersedia
pada : 8088 keatas
Syntax
: INT NoInt
Pengaruh
flag : IF, TF
Fungsi
: Untuk membangkitkan software interrupt yang bernomor 0 sampai 255. Setiap
terjadi suatu interupsi data flags, CS dan IP akan disimpan pada 217 stack.
Data ini selanjutmya digunakan sebagai alamat kembali setelah komputer
melakukan suatu rutin atau interrupt handler.
Mnemonic
: INTO (Interrupt If Overflow)
Tersedia
pada : 8088 keatas
Syntax
: INTO
Pengaruh
Flag : Tidak ada
Fungsi
: Jika Overflow flag bernilai 1, maka INTO akan melaksanakan interrupt 04h,
sebaliknya jika Overflow flag bernilai 0 maka interrupt 04h tidak akan
dilaksanakan. INTO hampir sama dengan INT hanya INTO khusus untuk membangkitkan
interrupt 04h jika OF=1.
Mnemonic
: IRET (Interrupt Return)
Tersedia
pada : 8088 keatas
Syntax
: IRET
Pengaruh
Flag : OF, DF, IF, TF, SF, ZF, AF, PF, CF
Fungsi
: Digunakan untuk mengakhiri suatu interrupt handler. IRET akan mengambil IP,
CS dan Flags yang disimpan pada stack pada saat terjadi suatu interupsi(INT).
Mnemonic
: JA (Jump If Above)
Tersedia
pada : 8088 keatas
Syntax
: JA Tujuan
Pengaruh
flag : Tidak Ada
Fungsi
: Melakukan suatu loncatan menuju "tujuan" bila CF=0 dan ZF=0.
"Tujuan" dapat berupa nama label ataupun alamat memory. Pada lompatan
bersyarat ini, besarnya lompatan tidak bisa melebihi -128 dan +127 byte kecuali
pada 80386 yang mampu mencapai -32768 dan +32767. JA identik dengan perintah
JNBE yang biasanya digunakan setelah dilakukan suatu perbandingan dengan CMP.
Catatan
: JA dan JNBE melakukan operasi pada bilangan tidak bertanda.
Contoh:
CMP
AX,BX
JA
Besar
Pada
perintah diatas, loncatan menuju label "besar" akan dilakukan bila
pada perintah CMP diatasnya register AX lebih besar dari register BX. Perintah
JA beroperasi pada bilangan tidak bertanda atau bilangan yang tidak mengenal
tanda minus.
Mnemonic
: JAE (Jump If Above or Equal)
Tersedia
pada : 8088 keatas
Syntax
: JAE Tujuan
Pengaruh
flag : Tidak Ada
Fungsi
: Melakukan suatu loncatan menuju "tujuan" bila CF=0.
"Tujuan" dapat berupa nama label ataupun alamat memory. Pada lompatan
bersyarat ini, besarnya lompatan tidak bisa melebihi -128 dan +127 byte. JAE
identik dengan perintah JNB yang biasanya digunakan setelah dilakukan suatu
perbandingan dengan CMP.
Catatan
: JAE dan JNB melakukan operasi pada bilangan tidak bertanda.
Contoh:
CMP
AX,BX
JAE
BesarSama
Pada
perintah diatas, loncatan menuju label "BesarSama" akan dilakukan
bila pada perintah CMP diatasnya register AX lebih besar atau sama dengan
register BX. Perintah JAE beroperasi pada bilangan tidak bertanda atau bilangan
yang tidak mengenal tanda minus.
Mnemonic
: JB (Jump If Bellow)
Tersedia
pada : 8088 keatas
Syntax
: JB Tujuan
Pengaruh
flag : Tidak Ada
Fungsi
: Melakukan suatu loncatan menuju "tujuan" bila CF=1.
"Tujuan" dapat berupa nama label ataupun alamat memory. Pada lompatan
bersyarat ini, besarnya lompatan tidak bisa melebihi -128 dan +127 byte. JB
identik dengan 219 perintah JNAE dan JC.
Catatan
: JB dan JNAE melakukan operasi pada bilangan tidak bertanda.
Contoh:
CMP
AX,BX
JB
Kecil Pada perintah diatas, loncatan menuju label "Kecil" akan
dilakukan bila pada perintah CMP diatasnya register AX lebih kecil dibandingkan
dengan register BX.
Mnemonic
: JBE (Jump If Below or Equal)
Tersedia
pada : 8088 keatas
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 ; Jika 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
menyebabkan 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
Syntax
: JMP Tujuan
Pengaruh
flag : Tidak Ada
Fungsi
: Melakukan lompatan menuju "Tujuan" yang dapat berupa suatu label
maupun 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 mengcopykan 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, anda 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" sedangkan 16 bit tingginya akan disimpan pada register DS.
"Mem32" mencatat lokasi dari suatu memory yang didefinisikan dengan
tipe Double Word(DD). Contoh:
TData:
JMP Proses
Tabel
DD ?,?,? Proses:
LDS
BX,Tabel Setelah 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 mendapatkan alamat efektif atau offset dari "Mem16" dimana
"Operand" merupakan suatu register 16 bit. Perintah LEA hampir sama
dengan perintah OFFSET yang juga digunakan untuk mendapatkan offset dari suatu
memory. Perintah LEA lebih fleksibel untuk digunakan dibandingkan dengan
perintah OFFSET karena dengan LEA kita bisa memberikan 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" sedangkan 16 bit tingginya akan disimpan pada register ES.
"Mem32" mencatat lokasi dari suatu memory yang didefinisikan dengan
tipe Double Word(DD). Contoh:
TData:
JMP Proses
Tabel DD ?,?,?
Proses:
LES BX,Tabel
Setelah
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 digunakan terutama pada komputer yang mempunyai procesor lebih
dari satu. Perintah LOCK mengunci suatu area terhadap 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 mengcopy 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 kemudian dilihat apakah
CX telah mencapai nol. Proses looping akan selesai jika register CX telah
mencapai nol. Oleh karena inilah maka jika kita menjadikan CX=0 pada saat
pertama kali, kita akan mendapatkan suatu pengulangan yang terbanyak karena
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 ; 231
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 mengcopykan isi "Sumber" ke "Tujuan". Antara
"Sumber" dan "Tujuan" harus mempunyai tipe data yang sama,
seperti AL dan BL, AX dan BX. Pada perintah MOV ini harus anda perhatikan
bahwa:
-
Segment register tidak bisa langsung diisi nilainya, seperti:
MOV
ES,0B800h
Untuk
masalah seperti ini anda bisa menggunakan register general purpose sebagai
perantara, seperti:
MOV
AX,0B800h
MOV
ES,AX
-
Register CS sebaiknya tidak digunakan sebagai "Tujuan" karena hal ini
akan mengacaukan program anda.
-
Pengcopyan data antar segment register tidak bisa digunakan, seperti:
MOV
ES,DS
Untuk
masalah seperti ini anda bisa menggunakan register general purpose atau stack
sebagai perantara, seperti:
MOV
AX,DS
MOV
ES,AX atau:
PUSH
DS
POP
ES
-
Pengcopyan data antar lokasi memory, seperti:
MOV
A,B
Untuk
masalah seperti ini anda bisa menggunakan 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 mengcopy data 1 byte dari alamat DS:SI ke alamat ES:DI. Bila DF=0(CLD)
maka setelah intruksi MOVSB dijalankan, register SI dan DI akan ditambah dengan
1 sebaliknya jika 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 mengcopy data 1 Word dari alamat DS:SI ke alamat ES:DI. Bila DF=0(CLD)
maka setelah intruksi MOVSW dijalankan, register SI dan DI akan ditambah dengan
2 sebaliknya jika 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 234
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. Jika bit operand bernilai 0 akan dijadikan 1
sebaliknya jika 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 umumnya
digunakan 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". Jika
"Operand" merupakan register AL maka akan dikirimkan data pada port
sebanyak 1 byte, bila "operand" merupakan 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 tersebut.
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.
Jika
Direction flag bernilai 0(dengan CLD) maka setelah intruksi OUTS dijalankan
register SI akan ditambah secara otomatis, sebaliknya jika Direction flag
bernilai 1(dengan STD) maka register SI akan dikurang secara otomatis. Anda
bisa menggunakan intruksi pengulangan pada string disertai 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. Jika Direction flag bernilai 0(dengan CLD) maka
setelah intruksi OUTSB dijalankan register SI akan ditambah dengan 1 secara
otomatis, sebaliknya jika Direction flag bernilai 1(dengan STD) maka register
SI akan dikurang dengan 1 secara otomatis. Anda bisa menggunakan intruksi
pengulangan pada string disertai dengan perintah OUTSB
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. Jika Direction flag bernilai 0(dengan CLD) maka
setelah intruksi OUTSW dijalankan register SI akan ditambah dengan 2 secara
otomatis, sebaliknya jika Direction flag bernilai 1(dengan STD) maka register
SI akan dikurang dengan 2 secara otomatis. Anda bisa menggunakan intruksi
pengulangan pada string disertai 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". Setelah 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 berturut-turut DI, SI, BP,
SP, BX, DX, CX dan AX. Dengan PUSHA program anda akan berjalan lebih cepat dan
efesian dibandingkan bila anda 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. Setelah 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" merupakan operand yang bertipe 16 bit. Setelah 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 merupakan kebalikan
dari intruksi POPF. Setelah 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".
Pada
mikroprosesor 8088 "Reg" haruslah berupa register CL atau CX bila
perputaran yang dilakukan terhadap "Operand" lebih dari 1.
Contoh:
MOV
BL,00100110b ; Misalkan 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".
Pada
mikroprosesor 8088 "Reg" haruslah berupa register CL atau CX bila
perputaran yang dilakukan terhadap "Operand" lebih dari 1.
Contoh:
MOV
BL,00100110b ; Misalkan 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 berhubungan 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 berhubungan
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 berhubungan
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
tersebut. RET biasanya diletakkan pada akhir dari suatu procedure yang
dipanggil dengan CALL (Lihat CALL). Bila pada perintah RET diberi parameter,
maka paramter itu akan digunakan 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".
Pada
mikroprosesor 8088 "Reg" haruslah berupa register CL atau CX bila
perputaran yang dilakukan terhadap "Operand" lebih dari 1.
Contoh:
MOV
BL,00100110b ; Misalkan 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".
Pada
mikroprosesor 8088 "Reg" haruslah berupa register CL atau CX bila
perputaran yang dilakukan terhadap "Operand" lebih dari 1.
Contoh:
MOV
BL,00100110b ; Misalkan 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 mengcopykan nilai AH pada 8 bit rendah dari flag register, yaitu: CF,
PF, AF, ZF dan SF. Intruksi ini merupakan 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 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 n kali kekiri adalah sama bila bilangan tersebut 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 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 n kali kekanan adalah sama bila bilangan tersebut 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 merupakan 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 merupakan kebalikan dari intruksi CLI (lihat CLI).
Mnemonic
: STOSB (Store AL )
Tersedia
pada : 8088 keatas Syntax : STOSB
Pengaruh
flag : Tidak ada
Fungsi
: Untuk mengcopykan isi register AL pada alamat ES:DI. Jika Direction flag
bernilai 0(dengan CLD) maka setelah intruksi STOSB dijalankan register DI akan
ditambah dengan 1 secara otomatis, sebaliknya jika Direction flag bernilai
1(dengan STD) maka register DI akan dikurang dengan 1 secara otomatis. Anda
bisa menggunakan intruksi pengulangan pada string disertai dengan perintah
STOSB ini.
Mnemonic
: STOSW (Store Word in AX at String)
Tersedia
pada : 8088 keatas
Syntax
: STOSW
Pengaruh
flag : Tidak ada
Fungsi
: Untuk mengcopykan isi register AX pada alamat ES:DI. Jika Direction flag
bernilai 0(dengan CLD) maka setelah intruksi STOSW dijalankan register DI akan
ditambah dengan 2 secara otomatis, sebaliknya jika Direction flag bernilai
1(dengan STD) maka register DI akan dikurang dengan 2 secara otomatis. Anda
bisa menggunakan intruksi pengulangan pada string disertai 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: 246 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" maupun
"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 digunakan 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 mengcopykan 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 adalah untuk menolkan suatu register. Dengan logika XOR program akan
berjalan lebih cepat dan efisien. Contoh:
XOR
AX,AX ; AX akan bernilai nol setelah perintah ini 248
DAFTAR INTERRUPT
PILIHAN
INTERRUPT 05h
Print
Screen
Fungsi
: Mencetak
seluruh isi layar ke printer. Register Input : Tidak Ada. Register
Output : Tidak Ada.
NTERRUPT
09h
Keyboard
Fungsi
: Interupsi
09 merupakan HardWare interupsi dari keyboard. Setiap penekanan tombol keyboard
akan membangkitkan interupsi 09. Handler dari interupsi 09 kemudian akan
mengambil data dari tombol apa yang ditekan dari Port 60h yang berisi kode scan
tombol. Dari kode scan ini kemudian akan diterjemahkan dalam kode ASCII atau
Extended dan disimpan pada keyboard buffer untuk kemudian digunakan 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.
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
karakter dan atribut pada posisi kursor.
Register
Input : Register
Output : Tidak
Ada.
AH
= 09h
AL
= kode ASCII karakter
BH
= nomor halaman
BL
= atribut karakter
CX
= jumlah pengulangan pencetakan
Penjelasan
: Karakter
kontrol akan dicetak sebagai karakter biasa.
INTERRUPT
10h - Service 0Ah
Write
Character At Cursor Position
Fungsi
: Mencetak
karakter pada posisi kursor.
Register
Input : Register
Output : Tidak
Ada.
AH
= 0Ah
AL
= kode ASCII karakter
BH
= nomor halaman CX = jumlah pengulangan pencetakan
Penjelasan
: Karakter
kontrol akan dicetak sebagai karakter biasa, atribut yang digunakan akan sama
dengan atribut yang lama.
INTERRUPT
10h - Service 0Eh
Teletype
Output
Fungsi
: Output
karakter sederhana.
Register
Input : Register
Output : Tidak
Ada.
AH
= 0Eh
AL
= kode ASCII karakter
BH
= nomor halaman
Penjelasan
: Karakter
kontrol berpengaruh sesuai fungsinya. Pada ROM BIOS dengan tanggal antara
24/4/81 ke atas umumnya register BH tidak berfungsi karena setiap output akan
dicetak ke halaman aktif.
INTERRUPT
10h - Service 0Fh
Get
Current Video Mode
Fungsi
: Mendapatkan
mode video aktif.
Register
Input : Register
Output :
AH = 0Fh AL = mode video (gambar
5.1.)
AH = jumlah
karakter per kolom
BH = nomor
halaman tampilan
Penjelasan
: Jika
mode video diset dengan bit 7 on, maka AL yang didapat juga akan berisi bit 7
on.
Konflik
: Driver
tampilan VUIMAGE
INTERRUPT
10h - Service 11h,
Subservice
00h Load User Specific Character
Fungsi
: Membuat
karakter ASCII baru.
Terdapat
pada : Sistem
dilengkapi tampilan EGA, VGA, dan MCGA. Register Input : Register Output : Tidak
Ada
AH
= 11h
AL
= 00h
CX
= jumlah karakter akan diubah
DX
= nomor karakter mulai diubah BL = nomor blok untuk diubah BH = jumlah byte per
karakter ES:BP = buffer bentuk karakter
INTERRUPT
10h - Service 11h,
Subservice
03h Set Block Specifier
Fungsi
: Memberikan
identitas tabel karakter untuk ditampilkan. Terdapat pada : Sistem
dilengkapi tampilan EGA, VGA, dan MCGA. Register Input : Register
Output : Tidak Ada
AH
= 11h
AL
= 03h
BL
= penanda tabel karakter
INTERRUPT
10h - Service 12h,Subservice 10h
Get
EGA Information
Fungsi
: Memperoleh
karakteristik sistem video.
Terdapat
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
Terdapat
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 karakter pada string
DH,DL
= koordinat untuk memulai pencetakan
ES:BP
= alamat string yang akan dicetak
Penjelasan
: Memperlakukan
karakter kontrol sesuai fungsinya.
INTERRUPT
10h - Service 1Ah,Subservice 00h
Get
Display Combination
Fungsi
: Memperoleh
informasi tampilan
Terdapat
pada : Sistem
dengan tampilan VGA dan MCGA.
Register
Input : Register
Output :
AH
= 1Ah AL
= 1Ah jika berhasil
AL
= 00h BL
= kode tampilan aktif
BH = kode
tampilan kedua
INTERRUPT
10h - Service 1Bh
VGA
State Information
Fungsi
: Memperoleh
informasi tampilan.
Terdapat
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.
Terdapat
pada : Sistem
dengan card tampilan VESA SuperVga.
Register
Input : Register Output :
AX
= 4F00h AL = 4Fh jika berhasil
ES:DI
= alamat buffer 256 AH = 00h jika berhasil byte untuk
diis
diisi
ES:DI
= alamat buffer 256 byte informasi
INTERRUPT
16h - Service 00h
Get
Keystroke
Fungsi
: Menunggu
masukan keyboard.
Terdapat
pada : Semua
mesin.
Register
Input : Register
Output :
AH
= 00h Jika
AL=0 maka
AH = kode
Extended Jika AL<>0 maka
AL = Kode ASCII
AH = Kode Scan
INTERRUPT
16h - Service 01h
Check
Keystroke
Fungsi
: Mengecek
isi keyboard buffer.
Terdapat
pada : Semua
mesin.
Register Input : Register Output :
AH
= 01h ZF=0
bila buffer tidak kosong
Jika AL=0 maka
AH = kode Extended Jika 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.
Terdapat
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.
Terdapat
pada : Mesin
AT dengan keyboard Enhanced.
Register
Input : Register
Output :
AH
= 11h ZF=0
bila buffer tidak kosong
Jika AL=0 maka
AH = kode Extended Jika 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 digunakan oleh pemakai. Interupsi 1Ch akan terjadi kurang
lebih 18,2 kali setiap detik. Anda 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 karakter 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 karakter khusus yang mempunyai kode
Extended, anda harus membacanya dua kali dengan fungsi dari DOS ini.
INTERRUPT
21h - Service 02h
Write
Character To Standard Output
Fungsi
: Untuk
mencetak satu buah karakter 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 karakter dari keyboard. Fungsi ini tidak akan 257 menampilkan
karakter 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 karakter dari keyboard. Fungsi ini tidak akan menampilkan
karakter 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 Standard 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
mendapatkan masukan string dari keyboard. Register Input : Register Output :
AH
= 0Ah Buffer
terisi
DS:DX
= Buffer Spesifikasi buffer:
-
Offset 00 mencatat maksimum karakter yang dapat dimasukkan. - Offset 01
banyaknya masukan dari keyboard yang telah 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 jika tidak ada karakter
AL = FFh jika
ada karakter
INTERRUPT
21h - Service 0Ch
Clear
Buffer dan Read Input
Fungsi
: Untuk
mengosongkan keyboard buffer, kemudian melaksanakan fungsi DOS 01, 06, 07, 08
atau 0Ah.
Register
Input : Register
Output : Tidak
ada
AH
= 0Ch
AL
= Fungsi yang akan dieksekusi
setelah
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 Jika sukses
DS:DX
= FCB AL
= FFh Jika gagal
INTERRUPT
21h - Service 10h
Closes
File Using FCB
Fungsi
: Untuk
menutup file dengan cara FCB.
Register
Input :
Register Output :
AH
= 10h AL
= 00h Jika sukses
DS:DX
= FCB AL
= FFh Jika gagal
INTERRUPT
21h - Service 13h
Delete
File Using FCB
Fungsi:
Menghapus
file dengan cara FCB.
Register
Input : Register
Output :
AH
= 13h AL
= 00h Jika sukses
DS:DX
= FCB AL
= FFh Jika 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
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 digunakan.
Register
Input :
Register Output :
AH
= 2Fh ES:BX
= Lokasi DTA
INTERRUPT
21h - Service 30h
Get
DOS Version
Fungsi
: Untuk
mengetahui versi DOS yang sedang digunakan
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 Jika
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
mendapatkan 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 anda 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
mendapatkan 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 Jika
CF=0 maka
AL
= Mode, dengan bit: AX=Nomor file
handle
0
file Read only Jika
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 telah ada dengan metode file handle.
Register
Input : Register
Output :
AH
= 3Dh Jika
CF=0 maka
AL
= Mode, dengan bit: AX=Nomor file
handle
0
untuk Read only Jika 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 jika sukses
BX
= Nomor file handle CF=1 jika
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
jika sukses
BX
= Nomor file handle AX=byte yang
berhasil dibaca
CX
= Banyaknya byte yang CF=1 jika 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
jika sukses
BX
= Nomor file handle AX=byte yang
berhasil ditulisi
CX
= Banyaknya byte yang CF=1 jika 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
jika sukses
CL
= Nama file ASCIIZ CF=1 jika 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
jika sukses
AL
= Mode perpindahan: CF=1 jika 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 Jika input AL=0, maka:
AL
= 0 untuk mendapatkan atribut jika CF=0
file
CX
= atribut
1
untuk merubah atribut file jika 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 digunakan
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
jika sukses
DS:DX
= Nama file ASCIIZ lama CF=1 jika 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
Lampiran II Tabel Kode Scan Keyboard
0 Response to "DAFTAR INSTRUKSI ASSEMBLY"
Post a Comment